mirror of
https://github.com/ae-utbm/sith.git
synced 2024-11-22 22:23:23 +00:00
Add query reductions in core
This commit is contained in:
parent
e689f7f1db
commit
cf062a35d3
@ -223,14 +223,25 @@ class User(AbstractBaseUser):
|
|||||||
s = self.subscriptions.last()
|
s = self.subscriptions.last()
|
||||||
return s.is_valid_now() if s is not None else False
|
return s.is_valid_now() if s is not None else False
|
||||||
|
|
||||||
|
_club_memberships = {}
|
||||||
|
_group_names = {}
|
||||||
|
_group_ids = {}
|
||||||
def is_in_group(self, group_name):
|
def is_in_group(self, group_name):
|
||||||
"""If the user is in the group passed in argument (as string or by id)"""
|
"""If the user is in the group passed in argument (as string or by id)"""
|
||||||
group_id = 0
|
group_id = 0
|
||||||
g = None
|
g = None
|
||||||
if isinstance(group_name, int): # Handle the case where group_name is an ID
|
if isinstance(group_name, int): # Handle the case where group_name is an ID
|
||||||
|
if group_name in User._group_ids.keys():
|
||||||
|
g = User._group_ids[group_name]
|
||||||
|
else:
|
||||||
g = Group.objects.filter(id=group_name).first()
|
g = Group.objects.filter(id=group_name).first()
|
||||||
|
User._group_ids[group_name] = g
|
||||||
|
else:
|
||||||
|
if group_name in User._group_names.keys():
|
||||||
|
g = User._group_names[group_name]
|
||||||
else:
|
else:
|
||||||
g = Group.objects.filter(name=group_name).first()
|
g = Group.objects.filter(name=group_name).first()
|
||||||
|
User._group_names[group_name] = g
|
||||||
if g:
|
if g:
|
||||||
group_name = g.name
|
group_name = g.name
|
||||||
group_id = g.id
|
group_id = g.id
|
||||||
@ -245,18 +256,26 @@ class User(AbstractBaseUser):
|
|||||||
if group_name == settings.SITH_MAIN_MEMBERS_GROUP: # We check the subscription if asked
|
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:
|
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)]
|
name = group_name[:-len(settings.SITH_BOARD_SUFFIX)]
|
||||||
|
if name in User._club_memberships.keys():
|
||||||
|
mem = User._club_memberships[name]
|
||||||
|
else:
|
||||||
|
from club.models import Club
|
||||||
c = Club.objects.filter(unix_name=name).first()
|
c = Club.objects.filter(unix_name=name).first()
|
||||||
mem = c.get_membership_for(self)
|
mem = c.get_membership_for(self)
|
||||||
|
User._club_memberships[name] = mem
|
||||||
if mem:
|
if mem:
|
||||||
return mem.role > settings.SITH_MAXIMUM_FREE_ROLE
|
return mem.role > settings.SITH_MAXIMUM_FREE_ROLE
|
||||||
return False
|
return False
|
||||||
if group_name[-len(settings.SITH_MEMBER_SUFFIX):] == settings.SITH_MEMBER_SUFFIX:
|
if group_name[-len(settings.SITH_MEMBER_SUFFIX):] == settings.SITH_MEMBER_SUFFIX:
|
||||||
from club.models import Club
|
|
||||||
name = group_name[:-len(settings.SITH_MEMBER_SUFFIX)]
|
name = group_name[:-len(settings.SITH_MEMBER_SUFFIX)]
|
||||||
|
if name in User._club_memberships.keys():
|
||||||
|
mem = User._club_memberships[name]
|
||||||
|
else:
|
||||||
|
from club.models import Club
|
||||||
c = Club.objects.filter(unix_name=name).first()
|
c = Club.objects.filter(unix_name=name).first()
|
||||||
mem = c.get_membership_for(self)
|
mem = c.get_membership_for(self)
|
||||||
|
User._club_memberships[name] = mem
|
||||||
if mem:
|
if mem:
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
Loading…
Reference in New Issue
Block a user