-
Notifications
You must be signed in to change notification settings - Fork 29
/
notification.py
38 lines (30 loc) · 1.26 KB
/
notification.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
'''
This module is the same as the sessions module, except that:
1. NotificationMixin sets a "notifications" property instead a "session" one,
and that the NotificationManager ("notifications") gets an object only once, and
deletes it from the database after retrieving;
2. The objects are stored in db 1 (for default) instead of 0 to avoid conflicts
with sessions. (You can change this setting with the "db_notifications" setting
in the "pycket_redis" setting.)
'''
from pycket.session import create_mixin, SessionManager, SessionMixin
class NotificationManager(SessionManager):
DB = 1
DB_SETTING = 'db_notifications'
def get(self, name, default=None):
'''
Retrieves the object with "name", like with SessionManager.get(), but
removes the object from the database after retrieval, so that it can be
retrieved only once
'''
session_object = super(NotificationManager, self).get(name, default)
if session_object is not None:
self.delete(name)
return session_object
class NotificationMixin(object):
@property
def notifications(self):
'''
Returns a NotificationManager instance
'''
return create_mixin(self, '__notification_manager', NotificationManager)