##// END OF EJS Templates
Added users with unique (sort of) IDs. Moved theme setting to user instead of session. This refs #61
neko259 -
r110:34858abe 1.1
parent child Browse files
Show More
@@ -287,3 +287,36 b' class Admin(models.Model):'
287 287
288 288 def __unicode__(self):
289 289 return self.name + '/' + '*' * len(self.password)
290
291
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):
299
300 user_id = models.CharField(max_length=20)
301 settings = models.ManyToManyField(Setting)
302
303 def save_setting(self, name, value):
304 setting, created = self.settings.get_or_create(name=name)
305 setting.value = value
306 setting.save()
307
308 return setting
309
310 def get_setting(self, name):
311 settings = self.settings.filter(name=name)
312 if len(settings) > 0:
313 setting = settings[0]
314 else:
315 setting = None
316
317 if setting:
318 setting_value = setting.value
319 else:
320 setting_value = None
321
322 return setting_value
@@ -8,6 +8,10 b''
8 8
9 9 {% block content %}
10 10
11 <div class="post">
12 {% trans 'User:' %} <b>{{ request.session.user.user_id }}</b>
13 </div>
14
11 15 <div class="post-form-w">
12 16 <div class="post-form">
13 17 <span class="form-title">{% trans "Theme" %}</span>
@@ -1,3 +1,4 b''
1 import hashlib
1 2 from django.core.urlresolvers import reverse
2 3 from django.template import RequestContext
3 4 from django.shortcuts import render, redirect, get_object_or_404
@@ -9,7 +10,7 b' from boards import utils'
9 10 from boards.forms import ThreadForm, PostForm, SettingsForm, PlainErrorList, \
10 11 ThreadCaptchaForm, PostCaptchaForm
11 12
12 from boards.models import Post, Admin, Tag
13 from boards.models import Post, Admin, Tag, User
13 14 from boards import authors
14 15 import neboard
15 16
@@ -174,21 +175,22 b' def logout(request):'
174 175 def settings(request):
175 176 """User's settings"""
176 177
177 context = RequestContext(request)
178 context = _init_default_context(request)
178 179
179 180 if request.method == 'POST':
180 181 form = SettingsForm(request.POST)
181 182 if form.is_valid():
182 183 selected_theme = form.cleaned_data['theme']
183 request.session['theme'] = selected_theme
184
185 user = _get_user(request)
186 user.save_setting('theme', selected_theme)
184 187
185 188 return redirect(settings)
186 189 else:
187 190 selected_theme = _get_theme(request)
188 191 form = SettingsForm(initial={'theme': selected_theme})
189 192 context['form'] = form
190 context['tags'] = Tag.objects.get_popular_tags()
191 context['theme'] = _get_theme(request)
193 _get_user(request)
192 194
193 195 return render(request, 'boards/settings.html', context)
194 196
@@ -225,7 +227,12 b' def authors(request):'
225 227 def _get_theme(request):
226 228 """Get user's CSS theme"""
227 229
228 return request.session.get('theme', neboard.settings.DEFAULT_THEME)
230 user = _get_user(request)
231 theme = user.get_setting('theme')
232 if not theme:
233 theme = neboard.settings.DEFAULT_THEME
234
235 return theme
229 236
230 237
231 238 def _get_client_ip(request):
@@ -245,3 +252,23 b' def _init_default_context(request):'
245 252 context['theme'] = _get_theme(request)
246 253
247 254 return context
255
256
257 def _get_user(request):
258 """Get current user from the session"""
259
260 session = request.session
261 if not 'user' in session:
262 request.session.save()
263
264 md5 = hashlib.md5()
265 md5.update(session.session_key)
266 new_id = md5.hexdigest()
267
268 user = User.objects.create(user_id=new_id)
269
270 session['user'] = user
271 else:
272 user = session['user']
273
274 return user No newline at end of file
General Comments 0
You need to be logged in to leave comments. Login now