Merge branch 'forum' into 'master'

Forum

See merge request !49
This commit is contained in:
Skia
2017-02-24 03:08:07 +01:00
38 changed files with 1171 additions and 59 deletions

View File

@ -10,6 +10,8 @@ from django.conf import settings
from django.db import transaction
from django.contrib.staticfiles.storage import staticfiles_storage
from django.utils.html import escape
from django.utils.functional import cached_property
from phonenumber_field.modelfields import PhoneNumberField
from datetime import datetime, timedelta, date
@ -182,9 +184,11 @@ class User(AbstractBaseUser):
def to_dict(self):
return self.__dict__
@cached_property
def was_subscribed(self):
return self.subscriptions.exists()
@cached_property
def is_subscribed(self):
s = self.subscriptions.last()
return s.is_valid_now() if s is not None else False
@ -204,8 +208,12 @@ class User(AbstractBaseUser):
return False
if group_id == settings.SITH_GROUP_PUBLIC_ID:
return True
if group_id == settings.SITH_GROUP_SUBSCRIBERS_ID:
return self.is_subscribed
if group_id == settings.SITH_GROUP_OLD_SUBSCRIBERS_ID:
return self.was_subscribed
if group_name == settings.SITH_MAIN_MEMBERS_GROUP: # We check the subscription if asked
return self.is_subscribed()
return self.is_subscribed
if group_name[-len(settings.SITH_BOARD_SUFFIX):] == settings.SITH_BOARD_SUFFIX:
from club.models import Club
name = group_name[:-len(settings.SITH_BOARD_SUFFIX)]
@ -226,25 +234,25 @@ class User(AbstractBaseUser):
return True
return self.groups.filter(name=group_name).exists()
@property
@cached_property
def is_root(self):
return self.is_superuser or self.groups.filter(id=settings.SITH_GROUP_ROOT_ID).exists()
@property
@cached_property
def is_board_member(self):
from club.models import Club
return Club.objects.filter(unix_name=settings.SITH_MAIN_CLUB['unix_name']).first().get_membership_for(self)
@property
@cached_property
def is_launderette_manager(self):
from club.models import Club
return Club.objects.filter(unix_name=settings.SITH_LAUNDERETTE_MANAGER['unix_name']).first().get_membership_for(self)
@property
@cached_property
def is_banned_alcohol(self):
return self.is_in_group(settings.SITH_GROUP_BANNED_ALCOHOL_ID)
@property
@cached_property
def is_banned_counter(self):
return self.is_in_group(settings.SITH_GROUP_BANNED_COUNTER_ID)
@ -418,10 +426,20 @@ class User(AbstractBaseUser):
escape(self.get_display_name()),
)
@property
@cached_property
def subscribed(self):
return self.is_in_group(settings.SITH_MAIN_MEMBERS_GROUP)
@cached_property
def forum_infos(self):
try:
return self._forum_infos
except:
from forum.models import ForumUserInfo
infos = ForumUserInfo(user=self)
infos.save()
return infos
class AnonymousUser(AuthAnonymousUser):
def __init__(self, request):
super(AnonymousUser, self).__init__()
@ -652,12 +670,12 @@ class SithFile(models.Model):
else:
return super(SithFile, self).__getattribute__(attr)
@property
@cached_property
def as_picture(self):
from sas.models import Picture
return Picture.objects.filter(id=self.id).first()
@property
@cached_property
def as_album(self):
from sas.models import Album
return Album.objects.filter(id=self.id).first()