mirror of
https://github.com/ae-utbm/sith.git
synced 2025-07-11 04:19:25 +00:00
Better usage of cache for groups and clubs related operations (#634)
* Better usage of cache for group retrieval * Cache clearing on object deletion or update * replace signals by save and delete override * add is_anonymous check in is_owned_by Add in many is_owned_by(self, user) methods that user is not anonymous. Since many of those functions do db queries, this should reduce a little bit the load of the db. * Stricter usage of User.is_in_group Constrain the parameters that can be passed to the function to make sure only a str or an int can be used. Also force to explicitly specify if the group id or the group name is used. * write test and correct bugs * remove forgotten populate commands * Correct test
This commit is contained in:
@ -161,7 +161,9 @@ class Forum(models.Model):
|
||||
# divided by 3 the number of requests on the main forum page
|
||||
# after the first load
|
||||
def is_owned_by(self, user):
|
||||
if user.is_in_group(settings.SITH_GROUP_FORUM_ADMIN_ID):
|
||||
if user.is_anonymous:
|
||||
return False
|
||||
if user.is_in_group(pk=settings.SITH_GROUP_FORUM_ADMIN_ID):
|
||||
return True
|
||||
try:
|
||||
m = Forum._club_memberships[self.id][user.id]
|
||||
@ -337,7 +339,10 @@ class ForumMessage(models.Model):
|
||||
def is_last_in_topic(self):
|
||||
return bool(self.id == self.topic.messages.order_by("date").last().id)
|
||||
|
||||
def is_owned_by(self, user): # Anyone can create a topic: it's better to
|
||||
def is_owned_by(self, user):
|
||||
if user.is_anonymous:
|
||||
return False
|
||||
# Anyone can create a topic: it's better to
|
||||
# check the rights at the forum level, since it's more controlled
|
||||
return self.topic.forum.is_owned_by(user) or user.id == self.author.id
|
||||
|
||||
|
Reference in New Issue
Block a user