##// END OF EJS Templates
Sort favorite and hidden tags when updating the list
neko259 -
r789:22849630 default
parent child Browse files
Show More
@@ -1,143 +1,146 b''
1 1 from django.shortcuts import get_object_or_404
2 2 from boards.models import Tag
3 3
4 4 __author__ = 'neko259'
5 5
6 6 SESSION_SETTING = 'setting'
7 7
8 8 PERMISSION_MODERATE = 'moderator'
9 9
10 10 SETTING_THEME = 'theme'
11 11 SETTING_FAVORITE_TAGS = 'favorite_tags'
12 12 SETTING_HIDDEN_TAGS = 'hidden_tags'
13 13 SETTING_PERMISSIONS = 'permissions'
14 14
15 15 DEFAULT_THEME = 'md'
16 16
17 17
18 18 def get_settings_manager(request):
19 19 """
20 20 Get settings manager based on the request object. Currently only
21 21 session-based manager is supported. In the future, cookie-based or
22 22 database-based managers could be implemented.
23 23 """
24 24 return SessionSettingsManager(request.session)
25 25
26 26
27 27 class SettingsManager:
28 28 """
29 29 Base settings manager class. get_setting and set_setting methods should
30 30 be overriden.
31 31 """
32 32 def __init__(self):
33 33 pass
34 34
35 35 def get_theme(self):
36 36 theme = self.get_setting(SETTING_THEME)
37 37 if not theme:
38 38 theme = DEFAULT_THEME
39 39 self.set_setting(SETTING_THEME, theme)
40 40
41 41 return theme
42 42
43 43 def set_theme(self, theme):
44 44 self.set_setting(SETTING_THEME, theme)
45 45
46 46 def has_permission(self, permission):
47 47 permissions = self.get_setting(SETTING_PERMISSIONS)
48 48 if permissions:
49 49 return permission in permissions
50 50 else:
51 51 return False
52 52
53 53 def get_setting(self, setting):
54 54 pass
55 55
56 56 def set_setting(self, setting, value):
57 57 pass
58 58
59 59 def add_permission(self, permission):
60 60 permissions = self.get_setting(SETTING_PERMISSIONS)
61 61 if not permissions:
62 62 permissions = [permission]
63 63 else:
64 64 permissions.append(permission)
65 65 self.set_setting(SETTING_PERMISSIONS, permissions)
66 66
67 67 def del_permission(self, permission):
68 68 permissions = self.get_setting(SETTING_PERMISSIONS)
69 69 if not permissions:
70 70 permissions = []
71 71 else:
72 72 permissions.remove(permission)
73 73 self.set_setting(SETTING_PERMISSIONS, permissions)
74 74
75 75 def get_fav_tags(self):
76 76 tag_names = self.get_setting(SETTING_FAVORITE_TAGS)
77 77 tags = []
78 78 if tag_names:
79 79 for tag_name in tag_names:
80 80 tag = get_object_or_404(Tag, name=tag_name)
81 81 tags.append(tag)
82
83 82 return tags
84 83
85 84 def add_fav_tag(self, tag):
86 85 tags = self.get_setting(SETTING_FAVORITE_TAGS)
87 86 if not tags:
88 87 tags = [tag.name]
89 88 else:
90 89 if not tag.name in tags:
91 90 tags.append(tag.name)
91
92 tags.sort()
92 93 self.set_setting(SETTING_FAVORITE_TAGS, tags)
93 94
94 95 def del_fav_tag(self, tag):
95 96 tags = self.get_setting(SETTING_FAVORITE_TAGS)
96 97 if tag.name in tags:
97 98 tags.remove(tag.name)
98 99 self.set_setting(SETTING_FAVORITE_TAGS, tags)
99 100
100 101 def get_hidden_tags(self):
101 102 tag_names = self.get_setting(SETTING_HIDDEN_TAGS)
102 103 tags = []
103 104 if tag_names:
104 105 for tag_name in tag_names:
105 106 tag = get_object_or_404(Tag, name=tag_name)
106 107 tags.append(tag)
107 108
108 109 return tags
109 110
110 111 def add_hidden_tag(self, tag):
111 112 tags = self.get_setting(SETTING_HIDDEN_TAGS)
112 113 if not tags:
113 114 tags = [tag.name]
114 115 else:
115 116 if not tag.name in tags:
116 117 tags.append(tag.name)
118
119 tags.sort()
117 120 self.set_setting(SETTING_HIDDEN_TAGS, tags)
118 121
119 122 def del_hidden_tag(self, tag):
120 123 tags = self.get_setting(SETTING_HIDDEN_TAGS)
121 124 if tag.name in tags:
122 125 tags.remove(tag.name)
123 126 self.set_setting(SETTING_HIDDEN_TAGS, tags)
124 127
125 128
126 129 class SessionSettingsManager(SettingsManager):
127 130 """
128 131 Session-based settings manager. All settings are saved to the user's
129 132 session.
130 133 """
131 134 def __init__(self, session):
132 135 SettingsManager.__init__(self)
133 136 self.session = session
134 137
135 138 def get_setting(self, setting):
136 139 if setting in self.session:
137 140 return self.session[setting]
138 141 else:
139 142 return None
140 143
141 144 def set_setting(self, setting, value):
142 145 self.session[setting] = value
143 146
General Comments 0
You need to be logged in to leave comments. Login now