ChatMember.has_read_permission()   A
last analyzed

Complexity

Conditions 1

Size

Total Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 3
rs 10
cc 1
1
# -*- coding: utf-8 -*-
2
from django.db import models
3
4
from sigma_chat.models.chat import Chat
5
6
7
class ChatMember(models.Model):
8
    is_creator = models.BooleanField()
9
    is_admin = models.BooleanField()
10
    is_member = models.BooleanField(default=True)
11
    is_banned = models.BooleanField(default=False)
12
    user = models.ForeignKey('sigma_core.User', related_name='user_chatmember')
13
    chat = models.ForeignKey(Chat, related_name='chatmember')
14
15
    # Related fields :
16
    #     - member_message (model Message.member)
17
18
    ################################################################
19
    # PERMISSIONS                                                  #
20
    ################################################################
21
22
    @staticmethod
23
    def has_read_permission(request):
24
        return True
25
26
    def has_object_read_permission(self, request):
27
        # Return True if user is the one of this ChatMember or if user is admin on the related chat
28
        return request.user.is_chat_member(self.chat)
29
30
    @staticmethod
31
    def has_write_permission(request):
32
        return True
33
34
    def has_object_write_permission(self, request):
35
        # Return True if user is the one of this ChatMember or if user is admin on the related chat
36
        return (not self.is_creator) and (request.user == self.user or request.user.is_chat_admin(self.chat))
37