##// END OF EJS Templates
Added login and logout for moderators
neko259 -
r729:d56cc46f 2.0-dev
parent child Browse files
Show More
@@ -0,0 +1,33 b''
1 from django.shortcuts import render, redirect
2
3 from boards.abstracts.settingsmanager import SettingsManager, \
4 PERMISSION_MODERATE
5 from boards.forms import LoginForm, PlainErrorList
6 from boards.views.base import BaseBoardView, CONTEXT_FORM
7
8
9 __author__ = 'neko259'
10
11
12 class LoginView(BaseBoardView):
13
14 def get(self, request, form=None):
15 context = self.get_context_data(request=request)
16
17 if not form:
18 form = LoginForm()
19 context[CONTEXT_FORM] = form
20
21 return render(request, 'boards/login.html', context)
22
23 def post(self, request):
24 form = LoginForm(request.POST, request.FILES,
25 error_class=PlainErrorList)
26 form.session = request.session
27
28 if form.is_valid():
29 settings_manager = SettingsManager(request.session)
30 settings_manager.add_permission(PERMISSION_MODERATE)
31 return redirect('index')
32 else:
33 return self.get(request, form)
@@ -0,0 +1,24 b''
1 from django.shortcuts import render
2
3 from boards.abstracts.settingsmanager import SettingsManager, \
4 PERMISSION_MODERATE
5 from boards.forms import LoginForm
6 from boards.views.base import BaseBoardView, CONTEXT_FORM
7
8
9 __author__ = 'neko259'
10
11
12 class LogoutView(BaseBoardView):
13
14 def get(self, request, form=None):
15 settings_manager = SettingsManager(request.session)
16 settings_manager.del_permission(PERMISSION_MODERATE)
17
18 context = self.get_context_data(request=request)
19
20 if not form:
21 form = LoginForm()
22 context[CONTEXT_FORM] = form
23
24 return render(request, 'boards/login.html', context) No newline at end of file
@@ -52,7 +52,15 b' class SettingsManager:'
52 if not permissions:
52 if not permissions:
53 permissions = [permission]
53 permissions = [permission]
54 else:
54 else:
55 permissions += permission
55 permissions.append(permission)
56 self.set_setting(SETTING_PERMISSIONS, permissions)
57
58 def del_permission(self, permission):
59 permissions = self.get_setting(SETTING_PERMISSIONS)
60 if not permissions:
61 permissions = []
62 else:
63 permissions.remove(permission)
56 self.set_setting(SETTING_PERMISSIONS, permissions)
64 self.set_setting(SETTING_PERMISSIONS, permissions)
57
65
58 def get_fav_tags(self):
66 def get_fav_tags(self):
@@ -278,12 +278,6 b' class SettingsForm(NeboardForm):'
278 label=_('Theme'))
278 label=_('Theme'))
279
279
280
280
281 class ModeratorSettingsForm(SettingsForm):
282
283 moderate = forms.BooleanField(required=False, label=_('Enable moderation '
284 'panel'))
285
286
287 class AddTagForm(NeboardForm):
281 class AddTagForm(NeboardForm):
288
282
289 tag = forms.CharField(max_length=TAG_MAX_LENGTH, label=LABEL_TAG)
283 tag = forms.CharField(max_length=TAG_MAX_LENGTH, label=LABEL_TAG)
@@ -305,4 +299,44 b' class AddTagForm(NeboardForm):'
305
299
306
300
307 class SearchForm(NeboardForm):
301 class SearchForm(NeboardForm):
308 query = forms.CharField(max_length=500, label=LABEL_SEARCH, required=False) No newline at end of file
302 query = forms.CharField(max_length=500, label=LABEL_SEARCH, required=False)
303
304
305 class LoginForm(NeboardForm):
306
307 password = forms.CharField()
308
309 session = None
310
311 def clean_password(self):
312 password = self.cleaned_data['password']
313 if board_settings.MASTER_PASSWORD != password:
314 raise forms.ValidationError(_('Invalid master password'))
315
316 return password
317
318 def _validate_login_speed(self):
319 can_post = True
320
321 if LAST_LOGIN_TIME in self.session:
322 now = time.time()
323 last_login_time = self.session[LAST_LOGIN_TIME]
324
325 current_delay = int(now - last_login_time)
326
327 if current_delay < board_settings.LOGIN_TIMEOUT:
328 error_message = _('Wait %s minutes after last login') % str(
329 (board_settings.LOGIN_TIMEOUT - current_delay) / 60)
330 self._errors['password'] = self.error_class([error_message])
331
332 can_post = False
333
334 if can_post:
335 self.session[LAST_LOGIN_TIME] = time.time()
336
337 def clean(self):
338 self._validate_login_speed()
339
340 cleaned_data = super(LoginForm, self).clean()
341
342 return cleaned_data
1 NO CONTENT: modified file, binary diff hidden
NO CONTENT: modified file, binary diff hidden
@@ -7,7 +7,7 b' msgid ""'
7 msgstr ""
7 msgstr ""
8 "Project-Id-Version: PACKAGE VERSION\n"
8 "Project-Id-Version: PACKAGE VERSION\n"
9 "Report-Msgid-Bugs-To: \n"
9 "Report-Msgid-Bugs-To: \n"
10 "POT-Creation-Date: 2014-06-29 13:46+0300\n"
10 "POT-Creation-Date: 2014-07-05 18:10+0300\n"
11 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
11 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
12 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13 "Language-Team: LANGUAGE <LL@li.org>\n"
13 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -18,19 +18,19 b' msgstr ""'
18 "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
18 "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
19 "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
19 "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
20
20
21 #: authors.py:5
21 #: authors.py:9
22 msgid "author"
22 msgid "author"
23 msgstr "Π°Π²Ρ‚ΠΎΡ€"
23 msgstr "Π°Π²Ρ‚ΠΎΡ€"
24
24
25 #: authors.py:6
25 #: authors.py:10
26 msgid "developer"
26 msgid "developer"
27 msgstr "Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ"
27 msgstr "Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ"
28
28
29 #: authors.py:7
29 #: authors.py:11
30 msgid "javascript developer"
30 msgid "javascript developer"
31 msgstr "Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ javascript"
31 msgstr "Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ javascript"
32
32
33 #: authors.py:8
33 #: authors.py:12
34 msgid "designer"
34 msgid "designer"
35 msgstr "Π΄ΠΈΠ·Π°ΠΉΠ½Π΅Ρ€"
35 msgstr "Π΄ΠΈΠ·Π°ΠΉΠ½Π΅Ρ€"
36
36
@@ -62,7 +62,7 b' msgstr "\xd0\xa2\xd0\xb5\xd0\xba\xd1\x81\xd1\x82"'
62 msgid "Tag"
62 msgid "Tag"
63 msgstr "Π’Π΅Π³"
63 msgstr "Π’Π΅Π³"
64
64
65 #: forms.py:32 templates/boards/base.html:50 templates/search/search.html:9
65 #: forms.py:32 templates/boards/base.html:54 templates/search/search.html:9
66 #: templates/search/search.html.py:13
66 #: templates/search/search.html.py:13
67 msgid "Search"
67 msgid "Search"
68 msgstr "Поиск"
68 msgstr "Поиск"
@@ -71,59 +71,55 b' msgstr "\xd0\x9f\xd0\xbe\xd0\xb8\xd1\x81\xd0\xba"'
71 msgid "Image"
71 msgid "Image"
72 msgstr "Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅"
72 msgstr "Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅"
73
73
74 #: forms.py:113
74 #: forms.py:114
75 msgid "e-mail"
75 msgid "e-mail"
76 msgstr ""
76 msgstr ""
77
77
78 #: forms.py:124
78 #: forms.py:125
79 #, python-format
79 #, python-format
80 msgid "Title must have less than %s characters"
80 msgid "Title must have less than %s characters"
81 msgstr "Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ мСньшС %s символов"
81 msgstr "Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ мСньшС %s символов"
82
82
83 #: forms.py:133
83 #: forms.py:134
84 #, python-format
84 #, python-format
85 msgid "Text must have less than %s characters"
85 msgid "Text must have less than %s characters"
86 msgstr "ВСкст Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΊΠΎΡ€ΠΎΡ‡Π΅ %s символов"
86 msgstr "ВСкст Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΊΠΎΡ€ΠΎΡ‡Π΅ %s символов"
87
87
88 #: forms.py:144
88 #: forms.py:145
89 #, python-format
89 #, python-format
90 msgid "Image must be less than %s bytes"
90 msgid "Image must be less than %s bytes"
91 msgstr "Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΌΠ΅Π½Π΅Π΅ %s Π±Π°ΠΉΡ‚"
91 msgstr "Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΌΠ΅Π½Π΅Π΅ %s Π±Π°ΠΉΡ‚"
92
92
93 #: forms.py:179
93 #: forms.py:180
94 msgid "Either text or image must be entered."
94 msgid "Either text or image must be entered."
95 msgstr "ВСкст ΠΈΠ»ΠΈ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π²Π²Π΅Π΄Π΅Π½Ρ‹."
95 msgstr "ВСкст ΠΈΠ»ΠΈ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π²Π²Π΅Π΄Π΅Π½Ρ‹."
96
96
97 #: forms.py:202
97 #: forms.py:200
98 #, python-format
98 #, python-format
99 msgid "Wait %s seconds after last posting"
99 msgid "Wait %s seconds after last posting"
100 msgstr "ΠŸΠΎΠ΄ΠΎΠΆΠ΄ΠΈΡ‚Π΅ %s сСкунд послС послСднСго постинга"
100 msgstr "ΠŸΠΎΠ΄ΠΎΠΆΠ΄ΠΈΡ‚Π΅ %s сСкунд послС послСднСго постинга"
101
101
102 #: forms.py:218 templates/boards/tags.html:7 templates/boards/rss/post.html:10
102 #: forms.py:216 templates/boards/tags.html:7 templates/boards/rss/post.html:10
103 msgid "Tags"
103 msgid "Tags"
104 msgstr "Π’Π΅Π³ΠΈ"
104 msgstr "Π’Π΅Π³ΠΈ"
105
105
106 #: forms.py:225 forms.py:344
106 #: forms.py:223 forms.py:291
107 msgid "Inappropriate characters in tags."
107 msgid "Inappropriate characters in tags."
108 msgstr "НСдопустимыС символы Π² Ρ‚Π΅Π³Π°Ρ…."
108 msgstr "НСдопустимыС символы Π² Ρ‚Π΅Π³Π°Ρ…."
109
109
110 #: forms.py:253 forms.py:274
110 #: forms.py:251 forms.py:272
111 msgid "Captcha validation failed"
111 msgid "Captcha validation failed"
112 msgstr "ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΊΠ°ΠΏΡ‡ΠΈ ΠΏΡ€ΠΎΠ²Π°Π»Π΅Π½Π°"
112 msgstr "ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΊΠ°ΠΏΡ‡ΠΈ ΠΏΡ€ΠΎΠ²Π°Π»Π΅Π½Π°"
113
113
114 #: forms.py:280
114 #: forms.py:278
115 msgid "Theme"
115 msgid "Theme"
116 msgstr "Π’Π΅ΠΌΠ°"
116 msgstr "Π’Π΅ΠΌΠ°"
117
117
118 #: forms.py:285
118 #: forms.py:314
119 msgid "Enable moderation panel"
119 msgid "Invalid master password"
120 msgstr "Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ панСль ΠΌΠΎΠ΄Π΅Ρ€Π°Ρ†ΠΈΠΈ"
120 msgstr "НСвСрный мастСр-ΠΏΠ°Ρ€ΠΎΠ»ΡŒ"
121
121
122 #: forms.py:300
122 #: forms.py:328
123 msgid "No such user found"
124 msgstr "Π”Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½"
125
126 #: forms.py:314
127 #, python-format
123 #, python-format
128 msgid "Wait %s minutes after last login"
124 msgid "Wait %s minutes after last login"
129 msgstr "ΠŸΠΎΠ΄ΠΎΠΆΠ΄ΠΈΡ‚Π΅ %s ΠΌΠΈΠ½ΡƒΡ‚ послС послСднСго Π²Ρ…ΠΎΠ΄Π°"
125 msgstr "ΠŸΠΎΠ΄ΠΎΠΆΠ΄ΠΈΡ‚Π΅ %s ΠΌΠΈΠ½ΡƒΡ‚ послС послСднСго Π²Ρ…ΠΎΠ΄Π°"
@@ -168,17 +164,21 b' msgstr "\xd0\xa3\xd0\xbf\xd1\x80\xd0\xb0\xd0\xb2\xd0\xbb\xd0\xb5\xd0\xbd\xd0\xb8\xd0\xb5 \xd1\x82\xd0\xb5\xd0\xb3\xd0\xb0\xd0\xbc\xd0\xb8"'
168 msgid "Settings"
164 msgid "Settings"
169 msgstr "Настройки"
165 msgstr "Настройки"
170
166
171 #: templates/boards/base.html:49 templates/boards/login.html:6
167 #: templates/boards/base.html:50
168 msgid "Logout"
169 msgstr "Π’Ρ‹Ρ…ΠΎΠ΄"
170
171 #: templates/boards/base.html:52 templates/boards/login.html:6
172 #: templates/boards/login.html.py:16
172 #: templates/boards/login.html.py:16
173 msgid "Login"
173 msgid "Login"
174 msgstr "Π’Ρ…ΠΎΠ΄"
174 msgstr "Π’Ρ…ΠΎΠ΄"
175
175
176 #: templates/boards/base.html:52
176 #: templates/boards/base.html:56
177 #, python-format
177 #, python-format
178 msgid "Speed: %(ppd)s posts per day"
178 msgid "Speed: %(ppd)s posts per day"
179 msgstr "Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ: %(ppd)s сообщСний Π² дСнь"
179 msgstr "Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ: %(ppd)s сообщСний Π² дСнь"
180
180
181 #: templates/boards/base.html:54
181 #: templates/boards/base.html:58
182 msgid "Up"
182 msgid "Up"
183 msgstr "Π’Π²Π΅Ρ€Ρ…"
183 msgstr "Π’Π²Π΅Ρ€Ρ…"
184
184
@@ -249,7 +249,7 b' msgstr "\xd0\x9f\xd1\x80\xd0\xb5\xd0\xb4\xd1\x8b\xd0\xb4\xd1\x83\xd1\x89\xd0\xb0\xd1\x8f \xd1\x81\xd1\x82\xd1\x80\xd0\xb0\xd0\xbd\xd0\xb8\xd1\x86\xd0\xb0"'
249 msgid "Skipped %(count)s replies. Open thread to see all replies."
249 msgid "Skipped %(count)s replies. Open thread to see all replies."
250 msgstr "ΠŸΡ€ΠΎΠΏΡƒΡ‰Π΅Π½ΠΎ %(count)s ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ². ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Ρ‚Ρ€Π΅Π΄, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ всС ΠΎΡ‚Π²Π΅Ρ‚Ρ‹."
250 msgstr "ΠŸΡ€ΠΎΠΏΡƒΡ‰Π΅Π½ΠΎ %(count)s ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ². ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Ρ‚Ρ€Π΅Π΄, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ всС ΠΎΡ‚Π²Π΅Ρ‚Ρ‹."
251
251
252 #: templates/boards/posting_general.html:121 templates/search/search.html:35
252 #: templates/boards/posting_general.html:121 templates/search/search.html:33
253 msgid "Next page"
253 msgid "Next page"
254 msgstr "Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ страница"
254 msgstr "Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ страница"
255
255
@@ -278,35 +278,15 b' msgstr "\xd0\xa1\xd0\xb8\xd0\xbd\xd1\x82\xd0\xb0\xd0\xba\xd1\x81\xd0\xb8\xd1\x81 \xd1\x82\xd0\xb5\xd0\xba\xd1\x81\xd1\x82\xd0\xb0"'
278 msgid "Pages:"
278 msgid "Pages:"
279 msgstr "Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Ρ‹: "
279 msgstr "Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Ρ‹: "
280
280
281 #: templates/boards/settings.html:14
281 #: templates/boards/settings.html:15
282 msgid "User:"
283 msgstr "ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ:"
284
285 #: templates/boards/settings.html:16
286 msgid "You are moderator."
282 msgid "You are moderator."
287 msgstr "Π’Ρ‹ ΠΌΠΎΠ΄Π΅Ρ€Π°Ρ‚ΠΎΡ€."
283 msgstr "Π’Ρ‹ ΠΌΠΎΠ΄Π΅Ρ€Π°Ρ‚ΠΎΡ€."
288
284
289 #: templates/boards/settings.html:19
285 #: templates/boards/settings.html:20
290 msgid "You are veteran."
291 msgstr "Π’Ρ‹ Π²Π΅Ρ‚Π΅Ρ€Π°Π½."
292
293 #: templates/boards/settings.html:22
294 msgid "Posts:"
295 msgstr "Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠΉ:"
296
297 #: templates/boards/settings.html:23
298 msgid "First access:"
299 msgstr "ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ доступ:"
300
301 #: templates/boards/settings.html:25
302 msgid "Last access:"
303 msgstr "ПослСдний доступ: "
304
305 #: templates/boards/settings.html:29
306 msgid "Hidden tags:"
286 msgid "Hidden tags:"
307 msgstr "Π‘ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ Ρ‚Π΅Π³ΠΈ:"
287 msgstr "Π‘ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ Ρ‚Π΅Π³ΠΈ:"
308
288
309 #: templates/boards/settings.html:44
289 #: templates/boards/settings.html:35
310 msgid "Save"
290 msgid "Save"
311 msgstr "Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ"
291 msgstr "Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ"
312
292
@@ -385,8 +365,4 b' msgstr "\xd0\x9f\xd0\xb5\xd1\x80\xd0\xb5\xd0\xb4 \xd1\x8d\xd1\x82\xd0\xb8\xd0\xbc\xd0\xb8 \xd1\x82\xd0\xb5\xd0\xb3\xd0\xb0\xd0\xbc\xd0\xb8 \xd0\xbd\xd1\x83\xd0\xb6\xd0\xbd\xd0\xb0 \xd0\xbd\xd0\xbe\xd0\xb2\xd0\xb0\xd1\x8f \xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xba\xd0\xb0:"'
385
365
386 #: templates/boards/staticpages/help.html:18
366 #: templates/boards/staticpages/help.html:18
387 msgid "Comment"
367 msgid "Comment"
388 msgstr "ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ"
368 msgstr "ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ" No newline at end of file
389
390 #: templates/search/search.html:30
391 msgid "No results found."
392 msgstr "Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½Ρ‹."
@@ -17,4 +17,7 b' LAST_REPLIES_COUNT = 3'
17 # Enable archiving threads instead of deletion when the thread limit is reached
17 # Enable archiving threads instead of deletion when the thread limit is reached
18 ARCHIVE_THREADS = True
18 ARCHIVE_THREADS = True
19 # Limit posting speed
19 # Limit posting speed
20 LIMIT_POSTING_SPEED = False No newline at end of file
20 LIMIT_POSTING_SPEED = False
21
22 # This password is used to add admin permissions to the user
23 MASTER_PASSWORD = u'password' No newline at end of file
@@ -46,6 +46,11 b''
46
46
47 <div class="navigation_panel">
47 <div class="navigation_panel">
48 {% block metapanel %}{% endblock %}
48 {% block metapanel %}{% endblock %}
49 {% if moderator %}
50 [<a href="{% url "logout" %}">{% trans 'Logout' %}</a>]
51 {% else %}
52 [<a href="{% url "login" %}">{% trans 'Login' %}</a>]
53 {% endif %}
49 [<a href="{% url "search" %}">{% trans 'Search' %}</a>]
54 [<a href="{% url "search" %}">{% trans 'Search' %}</a>]
50 {% with ppd=posts_per_day|floatformat:2 %}
55 {% with ppd=posts_per_day|floatformat:2 %}
51 {% blocktrans %}Speed: {{ ppd }} posts per day{% endblocktrans %}
56 {% blocktrans %}Speed: {{ ppd }} posts per day{% endblocktrans %}
@@ -2,7 +2,7 b' from django.conf.urls import patterns, u'
2 from boards import views
2 from boards import views
3 from boards.rss import AllThreadsFeed, TagThreadsFeed, ThreadPostsFeed
3 from boards.rss import AllThreadsFeed, TagThreadsFeed, ThreadPostsFeed
4 from boards.views import api, tag_threads, all_threads, \
4 from boards.views import api, tag_threads, all_threads, \
5 settings, all_tags
5 login, settings, all_tags, logout
6 from boards.views.authors import AuthorsView
6 from boards.views.authors import AuthorsView
7 from boards.views.delete_post import DeletePostView
7 from boards.views.delete_post import DeletePostView
8 from boards.views.ban import BanUserView
8 from boards.views.ban import BanUserView
@@ -22,6 +22,10 b" urlpatterns = patterns('',"
22 url(r'^page/(?P<page>\w+)/$', all_threads.AllThreadsView.as_view(),
22 url(r'^page/(?P<page>\w+)/$', all_threads.AllThreadsView.as_view(),
23 name='index'),
23 name='index'),
24
24
25 # login page
26 url(r'^login/$', login.LoginView.as_view(), name='login'),
27 url(r'^logout/$', logout.LogoutView.as_view(), name='logout'),
28
25 # /boards/tag/tag_name/
29 # /boards/tag/tag_name/
26 url(r'^tag/(?P<tag_name>\w+)/$', tag_threads.TagView.as_view(),
30 url(r'^tag/(?P<tag_name>\w+)/$', tag_threads.TagView.as_view(),
27 name='tag'),
31 name='tag'),
@@ -1,12 +1,9 b''
1 from django.db import transaction
1 from django.db import transaction
2 from django.shortcuts import render, redirect
2 from django.shortcuts import render, redirect
3 from boards import utils
3 from boards.abstracts.settingsmanager import SettingsManager
4 from boards.abstracts.settingsmanager import SettingsManager, \
5 PERMISSION_MODERATE
6
4
7 from boards.views.base import BaseBoardView, CONTEXT_FORM
5 from boards.views.base import BaseBoardView, CONTEXT_FORM
8 from boards.forms import SettingsForm, ModeratorSettingsForm, PlainErrorList
6 from boards.forms import SettingsForm, PlainErrorList
9 from boards.models.post import SETTING_MODERATE
10
7
11
8
12 class SettingsView(BaseBoardView):
9 class SettingsView(BaseBoardView):
@@ -14,18 +11,11 b' class SettingsView(BaseBoardView):'
14 def get(self, request):
11 def get(self, request):
15 context = self.get_context_data(request=request)
12 context = self.get_context_data(request=request)
16 settings_manager = SettingsManager(request.session)
13 settings_manager = SettingsManager(request.session)
17 is_moderator = settings_manager.has_permission(PERMISSION_MODERATE)
18
14
19 selected_theme = settings_manager.get_theme()
15 selected_theme = settings_manager.get_theme()
20
16
21 if is_moderator:
17 form = SettingsForm(initial={'theme': selected_theme},
22 form = ModeratorSettingsForm(initial={
18 error_class=PlainErrorList)
23 'theme': selected_theme,
24 'moderate': settings_manager.has_permission(PERMISSION_MODERATE)
25 }, error_class=PlainErrorList)
26 else:
27 form = SettingsForm(initial={'theme': selected_theme},
28 error_class=PlainErrorList)
29
19
30 context[CONTEXT_FORM] = form
20 context[CONTEXT_FORM] = form
31
21
@@ -33,23 +23,13 b' class SettingsView(BaseBoardView):'
33
23
34 def post(self, request):
24 def post(self, request):
35 settings_manager = SettingsManager(request.session)
25 settings_manager = SettingsManager(request.session)
36 is_moderator = settings_manager.has_permission(PERMISSION_MODERATE)
37
26
38 with transaction.atomic():
27 with transaction.atomic():
39 if is_moderator:
28 form = SettingsForm(request.POST, error_class=PlainErrorList)
40 form = ModeratorSettingsForm(request.POST,
41 error_class=PlainErrorList)
42 else:
43 form = SettingsForm(request.POST, error_class=PlainErrorList)
44
29
45 if form.is_valid():
30 if form.is_valid():
46 selected_theme = form.cleaned_data['theme']
31 selected_theme = form.cleaned_data['theme']
47
32
48 settings_manager.set_theme(selected_theme)
33 settings_manager.set_theme(selected_theme)
49
34
50 if is_moderator:
51 moderate = form.cleaned_data['moderate']
52 if moderate == 'True':
53 settings_manager.add_permission(PERMISSION_MODERATE)
54
55 return redirect('settings')
35 return redirect('settings')
General Comments 0
You need to be logged in to leave comments. Login now