##// END OF EJS Templates
Added admin actions (showing IP, post removal). Added user ranks. This refs #61, #12
neko259 -
r112:1dfea0d0 1.1
parent child Browse files
Show More
@@ -1,6 +1,6 b''
1 from django.contrib import admin
1 from django.contrib import admin
2 from boards.models import Post, Tag, Admin
2 from boards.models import Post, Tag, User
3
3
4 admin.site.register(Post)
4 admin.site.register(Post)
5 admin.site.register(Tag)
5 admin.site.register(Tag)
6 admin.site.register(Admin)
6 admin.site.register(User)
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: 2013-08-04 14:04+0300\n"
10 "POT-Creation-Date: 2013-08-21 20:49+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"
@@ -38,15 +38,15 b' msgstr "\xd0\xa0\xd0\xb5\xd0\xbf\xd0\xbe\xd0\xb7\xd0\xb8\xd1\x82\xd0\xbe\xd1\x80\xd0\xb8\xd0\xb9"'
38 msgid "Feed"
38 msgid "Feed"
39 msgstr "Π›Π΅Π½Ρ‚Π°"
39 msgstr "Π›Π΅Π½Ρ‚Π°"
40
40
41 #: templates/boards/base.html:31
41 #: templates/boards/base.html:27
42 msgid "All threads"
42 msgid "All threads"
43 msgstr "ВсС Ρ‚Π΅ΠΌΡ‹"
43 msgstr "ВсС Ρ‚Π΅ΠΌΡ‹"
44
44
45 #: templates/boards/base.html:37
45 #: templates/boards/base.html:33
46 msgid "Settings"
46 msgid "Settings"
47 msgstr "Настройки"
47 msgstr "Настройки"
48
48
49 #: templates/boards/base.html:45
49 #: templates/boards/base.html:41
50 msgid "Up"
50 msgid "Up"
51 msgstr "Π’Π²Π΅Ρ€Ρ…"
51 msgstr "Π’Π²Π΅Ρ€Ρ…"
52
52
@@ -55,7 +55,7 b' msgid "Tag: "'
55 msgstr "Π’Π΅Π³: "
55 msgstr "Π’Π΅Π³: "
56
56
57 #: templates/boards/posting_general.html:35
57 #: templates/boards/posting_general.html:35
58 #: templates/boards/posting_general.html:79 templates/boards/thread.html:27
58 #: templates/boards/posting_general.html:87 templates/boards/thread.html:27
59 #: templates/boards/rss/post.html:5
59 #: templates/boards/rss/post.html:5
60 msgid "Post image"
60 msgid "Post image"
61 msgstr "Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ сообщСния"
61 msgstr "Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ сообщСния"
@@ -64,58 +64,70 b' msgstr "\xd0\x98\xd0\xb7\xd0\xbe\xd0\xb1\xd1\x80\xd0\xb0\xd0\xb6\xd0\xb5\xd0\xbd\xd0\xb8\xd0\xb5 \xd1\x81\xd0\xbe\xd0\xbe\xd0\xb1\xd1\x89\xd0\xb5\xd0\xbd\xd0\xb8\xd1\x8f"'
64 msgid "Reply"
64 msgid "Reply"
65 msgstr "ΠžΡ‚Π²Π΅Ρ‚"
65 msgstr "ΠžΡ‚Π²Π΅Ρ‚"
66
66
67 #: templates/boards/posting_general.html:53 templates/boards/thread.html:111
67 #: templates/boards/posting_general.html:52 templates/boards/thread.html:49
68 msgid "Delete"
69 msgstr "Π£Π΄Π°Π»ΠΈΡ‚ΡŒ"
70
71 #: templates/boards/posting_general.html:61 templates/boards/thread.html:119
68 msgid "replies"
72 msgid "replies"
69 msgstr "ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ²"
73 msgstr "ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ²"
70
74
71 #: templates/boards/posting_general.html:54 templates/boards/thread.html:112
75 #: templates/boards/posting_general.html:62 templates/boards/thread.html:120
72 msgid "images"
76 msgid "images"
73 msgstr "ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ"
77 msgstr "ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ"
74
78
75 #: templates/boards/posting_general.html:56
79 #: templates/boards/posting_general.html:64
76 #: templates/boards/posting_general.html:127 templates/boards/thread.html:51
80 #: templates/boards/posting_general.html:135 templates/boards/thread.html:59
77 #: templates/boards/rss/post.html:10
81 #: templates/boards/rss/post.html:10
78 msgid "Tags"
82 msgid "Tags"
79 msgstr "Π’Π΅Π³ΠΈ"
83 msgstr "Π’Π΅Π³ΠΈ"
80
84
81 #: templates/boards/posting_general.html:109
85 #: templates/boards/posting_general.html:117
82 msgid "Create new thread"
86 msgid "Create new thread"
83 msgstr "Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ Ρ‚Π΅ΠΌΡƒ"
87 msgstr "Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ Ρ‚Π΅ΠΌΡƒ"
84
88
85 #: templates/boards/posting_general.html:112 templates/boards/thread.html:73
89 #: templates/boards/posting_general.html:120 templates/boards/thread.html:81
86 msgid "Title"
90 msgid "Title"
87 msgstr "Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ"
91 msgstr "Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ"
88
92
89 #: templates/boards/posting_general.html:117 templates/boards/thread.html:78
93 #: templates/boards/posting_general.html:125 templates/boards/thread.html:86
90 msgid "Text"
94 msgid "Text"
91 msgstr "ВСкст"
95 msgstr "ВСкст"
92
96
93 #: templates/boards/posting_general.html:122 templates/boards/thread.html:83
97 #: templates/boards/posting_general.html:130 templates/boards/thread.html:91
94 msgid "Image"
98 msgid "Image"
95 msgstr "Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅"
99 msgstr "Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅"
96
100
97 #: templates/boards/posting_general.html:137 templates/boards/thread.html:94
101 #: templates/boards/posting_general.html:145 templates/boards/thread.html:102
98 msgid "Post"
102 msgid "Post"
99 msgstr "ΠžΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ"
103 msgstr "ΠžΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ"
100
104
101 #: templates/boards/posting_general.html:139
105 #: templates/boards/posting_general.html:147
102 msgid "Tags must be delimited by spaces. Text or image is required."
106 msgid "Tags must be delimited by spaces. Text or image is required."
103 msgstr ""
107 msgstr ""
104 "Π’Π΅Π³ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Ρ‹ ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌΠΈ. ВСкст ΠΈΠ»ΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹."
108 "Π’Π΅Π³ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Ρ‹ ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌΠΈ. ВСкст ΠΈΠ»ΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹."
105
109
106 #: templates/boards/posting_general.html:142 templates/boards/thread.html:96
110 #: templates/boards/posting_general.html:150 templates/boards/thread.html:104
107 msgid "Basic markdown syntax."
111 msgid "Basic markdown syntax."
108 msgstr "Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ синтаксис markdown."
112 msgstr "Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ синтаксис markdown."
109
113
110 #: templates/boards/posting_general.html:152
114 #: templates/boards/posting_general.html:160
111 msgid "Pages:"
115 msgid "Pages:"
112 msgstr "Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Ρ‹: "
116 msgstr "Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Ρ‹: "
113
117
114 #: templates/boards/settings.html:13
118 #: templates/boards/settings.html:12
119 msgid "User:"
120 msgstr "ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ:"
121
122 #: templates/boards/settings.html:14
123 msgid "You are moderator."
124 msgstr "Π’Ρ‹ ΠΌΠΎΠ΄Π΅Ρ€Π°Ρ‚ΠΎΡ€."
125
126 #: templates/boards/settings.html:20
115 msgid "Theme"
127 msgid "Theme"
116 msgstr "Π’Π΅ΠΌΠ°"
128 msgstr "Π’Π΅ΠΌΠ°"
117
129
118 #: templates/boards/settings.html:29
130 #: templates/boards/settings.html:36
119 msgid "Save"
131 msgid "Save"
120 msgstr "Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ"
132 msgstr "Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ"
121
133
@@ -127,31 +139,31 b' msgstr "\xd1\x82\xd0\xb5\xd0\xb3\xd0\xbe\xd0\xb2"'
127 msgid "Get!"
139 msgid "Get!"
128 msgstr "Π“Π΅Ρ‚!"
140 msgstr "Π“Π΅Ρ‚!"
129
141
130 #: templates/boards/thread.html:70
142 #: templates/boards/thread.html:78
131 msgid "Reply to thread"
143 msgid "Reply to thread"
132 msgstr "ΠžΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ Π² Ρ‚Π΅ΠΌΡƒ"
144 msgstr "ΠžΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ Π² Ρ‚Π΅ΠΌΡƒ"
133
145
134 #: templates/boards/thread.html:97
146 #: templates/boards/thread.html:105
135 msgid "Example: "
147 msgid "Example: "
136 msgstr "ΠŸΡ€ΠΈΠΌΠ΅Ρ€: "
148 msgstr "ΠŸΡ€ΠΈΠΌΠ΅Ρ€: "
137
149
138 #: templates/boards/thread.html:97
150 #: templates/boards/thread.html:105
139 msgid "italic"
151 msgid "italic"
140 msgstr "курсив"
152 msgstr "курсив"
141
153
142 #: templates/boards/thread.html:98
154 #: templates/boards/thread.html:106
143 msgid "bold"
155 msgid "bold"
144 msgstr "ΠΏΠΎΠ»ΡƒΠΆΠΈΡ€Π½Ρ‹ΠΉ"
156 msgstr "ΠΏΠΎΠ»ΡƒΠΆΠΈΡ€Π½Ρ‹ΠΉ"
145
157
146 #: templates/boards/thread.html:99
158 #: templates/boards/thread.html:107
147 msgid "Quotes can be inserted with"
159 msgid "Quotes can be inserted with"
148 msgstr "Π¦ΠΈΡ‚Π°Ρ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ вставлСны ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ"
160 msgstr "Π¦ΠΈΡ‚Π°Ρ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ вставлСны ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ"
149
161
150 #: templates/boards/thread.html:100
162 #: templates/boards/thread.html:108
151 msgid "Links to answers can be inserted with"
163 msgid "Links to answers can be inserted with"
152 msgstr "Бсылки Π½Π° ΠΎΡ‚Π²Π΅Ρ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ вставлСны с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ"
164 msgstr "Бсылки Π½Π° ΠΎΡ‚Π²Π΅Ρ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ вставлСны с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ"
153
165
154 #: templates/boards/thread.html:113
166 #: templates/boards/thread.html:121
155 msgid "Last update: "
167 msgid "Last update: "
156 msgstr "ПослСднСС обновлСниС: "
168 msgstr "ПослСднСС обновлСниС: "
157
169
@@ -161,8 +173,8 b' msgstr "\xd0\x9f\xd0\xbe\xd1\x81\xd0\xbb\xd0\xb5\xd0\xb4\xd0\xbd\xd0\xb5\xd0\xb5 \xd0\xbe\xd0\xb1\xd0\xbd\xd0\xbe\xd0\xb2\xd0\xbb\xd0\xb5\xd0\xbd\xd0\xb8\xd0\xb5: "'
161 #~ msgid "gets"
173 #~ msgid "gets"
162 #~ msgstr "Π³Π΅Ρ‚ΠΎΠ²"
174 #~ msgstr "Π³Π΅Ρ‚ΠΎΠ²"
163
175
164 msgid "author"
176 #~ msgid "author"
165 msgstr "Π°Π²Ρ‚ΠΎΡ€"
177 #~ msgstr "Π°Π²Ρ‚ΠΎΡ€"
166
178
167 msgid "developer"
179 #~ msgid "developer"
168 msgstr "Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ" No newline at end of file
180 #~ msgstr "Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ"
@@ -30,6 +30,10 b" FILE_EXTENSION_DELIMITER = '.'"
30 REGEX_PRETTY = re.compile(r'^\d(0)+$')
30 REGEX_PRETTY = re.compile(r'^\d(0)+$')
31 REGEX_SAME = re.compile(r'^(.)\1+$')
31 REGEX_SAME = re.compile(r'^(.)\1+$')
32
32
33 RANK_ADMIN = 0
34 RANK_MODERATOR = 10
35 RANK_USER = 100
36
33
37
34 class PostManager(models.Manager):
38 class PostManager(models.Manager):
35 def create_post(self, title, text, image=None, parent_id=NO_PARENT,
39 def create_post(self, title, text, image=None, parent_id=NO_PARENT,
@@ -289,26 +293,20 b' class Admin(models.Model):'
289 return self.name + '/' + '*' * len(self.password)
293 return self.name + '/' + '*' * len(self.password)
290
294
291
295
292 class Setting(models.Model):
293
294 name = models.CharField(max_length=50)
295 value = models.CharField(max_length=50)
296
297
298 class User(models.Model):
296 class User(models.Model):
299
297
300 user_id = models.CharField(max_length=20)
298 user_id = models.CharField(max_length=50)
301 settings = models.ManyToManyField(Setting)
299 rank = models.IntegerField()
302
300
303 def save_setting(self, name, value):
301 def save_setting(self, name, value):
304 setting, created = self.settings.get_or_create(name=name)
302 setting, created = Setting.objects.get_or_create(name=name, user=self)
305 setting.value = value
303 setting.value = value
306 setting.save()
304 setting.save()
307
305
308 return setting
306 return setting
309
307
310 def get_setting(self, name):
308 def get_setting(self, name):
311 settings = self.settings.filter(name=name)
309 settings = Setting.objects.filter(name=name, user=self)
312 if len(settings) > 0:
310 if len(settings) > 0:
313 setting = settings[0]
311 setting = settings[0]
314 else:
312 else:
@@ -320,3 +318,16 b' class User(models.Model):'
320 setting_value = None
318 setting_value = None
321
319
322 return setting_value
320 return setting_value
321
322 def is_moderator(self):
323 return RANK_MODERATOR >= self.rank
324
325 def __unicode__(self):
326 return self.user_id
327
328
329 class Setting(models.Model):
330
331 name = models.CharField(max_length=50)
332 value = models.CharField(max_length=50)
333 user = models.ForeignKey(User)
@@ -273,3 +273,8 b' li {'
273 .post-info {
273 .post-info {
274 color: #ddd;
274 color: #ddd;
275 }
275 }
276
277 .moderator_info {
278 color: #e99d41;
279 float: right;
280 } No newline at end of file
@@ -261,4 +261,9 b' li {'
261
261
262 .form-errors {
262 .form-errors {
263 margin-left: 1ex;
263 margin-left: 1ex;
264 }
265
266 .moderator_info {
267 font-weight: bold;
268 float: right;
264 } No newline at end of file
269 }
@@ -22,18 +22,11 b''
22 <script src="{{ STATIC_URL }}js/jquery-2.0.1.min.js"></script>
22 <script src="{{ STATIC_URL }}js/jquery-2.0.1.min.js"></script>
23 <script src="{{ STATIC_URL }}js/jquery.fancybox.pack.js"></script>
23 <script src="{{ STATIC_URL }}js/jquery.fancybox.pack.js"></script>
24 <script src="{{ STATIC_URL }}js/main.js"></script>
24 <script src="{{ STATIC_URL }}js/main.js"></script>
25 <div id="admin_panel">
26
27 {% if request.session.admin == True %}
28 Admin panel TODO: Need to implement <BR />
29 {% endif %}
30
31 </div>
32
25
33 <div class="navigation_panel">
26 <div class="navigation_panel">
34 <a class="link" href="{% url 'index' %}">{% trans "All threads" %}</a>
27 <a class="link" href="{% url 'index' %}">{% trans "All threads" %}</a>
35 {% for tag in tags %}
28 {% for tag in tags %}
36 <a class="tag" href=" {% url 'tag' tag_name=tag.name %}">
29 <a class="tag" href="{% url 'tag' tag_name=tag.name %}">
37 {{ tag.name }}</a>({{ tag.get_post_count }})
30 {{ tag.name }}</a>({{ tag.get_post_count }})
38 {% endfor %}
31 {% endfor %}
39 <a class="tag" href="{% url 'tags' %}">[...]</a>
32 <a class="tag" href="{% url 'tags' %}">[...]</a>
@@ -44,6 +44,14 b''
44 [{{ thread.pub_time }}]
44 [{{ thread.pub_time }}]
45 [<a class="link" href="{% url 'thread' thread.id %}#form"
45 [<a class="link" href="{% url 'thread' thread.id %}#form"
46 >{% trans "Reply" %}</a>]
46 >{% trans "Reply" %}</a>]
47
48 {% if user.is_moderator %}
49 <span class="moderator_info">
50 ({{ thread.poster_ip }})
51 [<a href="{% url 'delete' post_id=thread.id %}"
52 >{% trans 'Delete' %}</a>]
53 </span>
54 {% endif %}
47 </div>
55 </div>
48 {% autoescape off %}
56 {% autoescape off %}
49 {{ thread.text.rendered|truncatewords_html:50 }}
57 {{ thread.text.rendered|truncatewords_html:50 }}
@@ -9,7 +9,10 b''
9 {% block content %}
9 {% block content %}
10
10
11 <div class="post">
11 <div class="post">
12 {% trans 'User:' %} <b>{{ request.session.user.user_id }}</b>
12 {% trans 'User:' %} <b>{{ user.user_id }}</b>.
13 {% if user.is_moderator %}
14 {% trans 'You are moderator.' %}
15 {% endif %}
13 </div>
16 </div>
14
17
15 <div class="post-form-w">
18 <div class="post-form-w">
@@ -41,6 +41,14 b''
41 {% endif %}
41 {% endif %}
42 [<a href="#" onclick="javascript:addQuickReply('{{ post.id }}')
42 [<a href="#" onclick="javascript:addQuickReply('{{ post.id }}')
43 ; return false;">&gt;&gt;</a>]
43 ; return false;">&gt;&gt;</a>]
44
45 {% if user.is_moderator %}
46 <span class="moderator_info">
47 ({{ post.poster_ip }})
48 [<a href="{% url 'delete' post_id=post.id %}"
49 >{% trans 'Delete' %}</a>]
50 </span>
51 {% endif %}
44 </div>
52 </div>
45 {% autoescape off %}
53 {% autoescape off %}
46 {{ post.text.rendered }}
54 {{ post.text.rendered }}
@@ -26,6 +26,7 b" urlpatterns = patterns('',"
26 url(r'^captcha/', include('captcha.urls')),
26 url(r'^captcha/', include('captcha.urls')),
27 url(r'^jump/(?P<post_id>\w+)/$', views.jump_to_post, name='jumper'),
27 url(r'^jump/(?P<post_id>\w+)/$', views.jump_to_post, name='jumper'),
28 url(r'^authors/$', views.authors, name='authors'),
28 url(r'^authors/$', views.authors, name='authors'),
29 url(r'^delete/(?P<post_id>\w+)/$', views.delete, name='delete'),
29
30
30 # RSS feeds
31 # RSS feeds
31 url(r'^rss/$', AllThreadsFeed()),
32 url(r'^rss/$', AllThreadsFeed()),
@@ -10,7 +10,7 b' from boards import utils'
10 from boards.forms import ThreadForm, PostForm, SettingsForm, PlainErrorList, \
10 from boards.forms import ThreadForm, PostForm, SettingsForm, PlainErrorList, \
11 ThreadCaptchaForm, PostCaptchaForm
11 ThreadCaptchaForm, PostCaptchaForm
12
12
13 from boards.models import Post, Admin, Tag, User
13 from boards.models import Post, Admin, Tag, User, RANK_USER, RANK_MODERATOR, NO_PARENT
14 from boards import authors
14 from boards import authors
15 import neboard
15 import neboard
16
16
@@ -190,7 +190,6 b' def settings(request):'
190 selected_theme = _get_theme(request)
190 selected_theme = _get_theme(request)
191 form = SettingsForm(initial={'theme': selected_theme})
191 form = SettingsForm(initial={'theme': selected_theme})
192 context['form'] = form
192 context['form'] = form
193 _get_user(request)
194
193
195 return render(request, 'boards/settings.html', context)
194 return render(request, 'boards/settings.html', context)
196
195
@@ -224,6 +223,19 b' def authors(request):'
224 return render(request, 'boards/authors.html', context)
223 return render(request, 'boards/authors.html', context)
225
224
226
225
226 def delete(request, post_id):
227 user = _get_user(request)
228 post = get_object_or_404(Post, id=post_id)
229
230 if user.is_moderator():
231 Post.objects.delete_post(post)
232
233 if NO_PARENT == post.parent:
234 return redirect(index)
235 else:
236 return redirect(thread, post_id=post.parent)
237
238
227 def _get_theme(request):
239 def _get_theme(request):
228 """Get user's CSS theme"""
240 """Get user's CSS theme"""
229
241
@@ -250,6 +262,7 b' def _init_default_context(request):'
250 context = RequestContext(request)
262 context = RequestContext(request)
251 context['tags'] = Tag.objects.get_popular_tags()
263 context['tags'] = Tag.objects.get_popular_tags()
252 context['theme'] = _get_theme(request)
264 context['theme'] = _get_theme(request)
265 context['user'] = _get_user(request)
253
266
254 return context
267 return context
255
268
@@ -258,17 +271,17 b' def _get_user(request):'
258 """Get current user from the session"""
271 """Get current user from the session"""
259
272
260 session = request.session
273 session = request.session
261 if not 'user' in session:
274 if not 'user_id' in session:
262 request.session.save()
275 request.session.save()
263
276
264 md5 = hashlib.md5()
277 md5 = hashlib.md5()
265 md5.update(session.session_key)
278 md5.update(session.session_key)
266 new_id = md5.hexdigest()
279 new_id = md5.hexdigest()
267
280
268 user = User.objects.create(user_id=new_id)
281 user = User.objects.create(user_id=new_id, rank=RANK_USER)
269
282
270 session['user'] = user
283 session['user_id'] = user.id
271 else:
284 else:
272 user = session['user']
285 user = User.objects.get(id=session['user_id'])
273
286
274 return user No newline at end of file
287 return user
General Comments 0
You need to be logged in to leave comments. Login now