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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
from django.db import models
from django.contrib.auth.models import User
from fields import AutoOneToOneField, ExtendedImageField
from django.utils.translation import ugettext_lazy as _
from pybb.models import Post
import settings
TZ_CHOICES = [(float(x[0]), x[1]) for x in (
(-12, '-12'), (-11, '-11'), (-10, '-10'), (-9.5, '-09.5'), (-9, '-09'),
(-8.5, '-08.5'), (-8, '-08 PST'), (-7, '-07 MST'), (-6, '-06 CST'),
(-5, '-05 EST'), (-4, '-04 AST'), (-3.5, '-03.5'), (-3, '-03 ADT'),
(-2, '-02'), (-1, '-01'), (0, '00 GMT'), (1, '+01 CET'), (2, '+02'),
(3, '+03'), (3.5, '+03.5'), (4, '+04'), (4.5, '+04.5'), (5, '+05'),
(5.5, '+05.5'), (6, '+06'), (6.5, '+06.5'), (7, '+07'), (8, '+08'),
(9, '+09'), (9.5, '+09.5'), (10, '+10'), (10.5, '+10.5'), (11, '+11'),
(11.5, '+11.5'), (12, '+12'), (13, '+13'), (14, '+14'),
)]
class Profile(models.Model):
user = AutoOneToOneField(User, related_name='wlprofile', verbose_name=_('User'))
# Web related fields.
site = models.URLField(_('Website'), verify_exists=False, blank=True, default='')
jabber = models.CharField(_('Jabber'), max_length=80, blank=True, default='')
icq = models.CharField(_('ICQ'), max_length=12, blank=True, default='')
msn = models.CharField(_('MSN'), max_length=80, blank=True, default='')
aim = models.CharField(_('AIM'), max_length=80, blank=True, default='')
yahoo = models.CharField(_('Yahoo'), max_length=80, blank=True, default='')
# Personal Informations
location = models.CharField(_('Location'), max_length=30, blank=True, default='')
# Configuration for Forum/Site
time_zone = models.FloatField(_('Time zone'), choices=TZ_CHOICES, default=float(settings.DEFAULT_TIME_ZONE))
time_display = models.CharField(_('Time display'), max_length=80, default=settings.DEFAULT_TIME_DISPLAY)
signature = models.TextField(_('Signature'), blank=True, default='', max_length=settings.SIGNATURE_MAX_LENGTH)
# language = models.CharField(_('Language'), max_length=10, blank=True, default='',
# choices=settings.LANGUAGES)
avatar = ExtendedImageField(_('Avatar'), blank=True, default="wlprofile/anonymous.png", upload_to="wlprofile/avatars/", width=settings.AVATAR_WIDTH, height=settings.AVATAR_HEIGHT)
show_signatures = models.BooleanField(_('Show signatures'), blank=True, default=True)
# markup = models.CharField(_('Default markup'), max_length=15, default=settings.DEFAULT_MARKUP, choices=MARKUP_CHOICES)
class Meta:
verbose_name = _('Profile')
verbose_name_plural = _('Profiles')
def unread_pm_count(self):
return PrivateMessage.objects.filter(dst_user=self, read=False).count()
def post_count(self):
"""
Return the nr of posts the user has. This uses djangos filter feature
will therefore hit the database. This should maybe be reworked when the
database grows to not be always calculated.
"""
return Post.objects.filter(user=self.user).count()
def user_status(self):
nump = self.post_count()
if nump < 6:
return { "text":"Just found this site", "image":"rang_1.png" }
elif nump < 50:
return { "text":"Pry about Widelands", "image":"rang_2.png" }
elif nump < 120:
return { "text":"Likes to be here", "image":"rang_3.png" }
elif nump < 180:
return { "text":"At home in WL-forums", "image":"rang_4.png" }
elif nump < 250:
return { "text":"Widelands-Forum-Junkie", "image":"rang_5.png" }
elif nump < 500:
return { "text":"Tribe Member", "image":"rang_6.png" }
else:
return { "text":"One Elder of Players", "image":"rang_7.png" }
def get_ggzstats(self):
try:
return self.user.wlggzstats
except:
return None
|