Completed
Push — master ( 9a7f1b...b2a2c0 )
by Camille
9s
created

GroupMember.has_create_permission()   B

Complexity

Conditions 5

Size

Total Lines 14

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
dl 0
loc 14
c 1
b 0
f 1
rs 8.5454
cc 5
1
from django.db import models
2
from django.http import Http404
3
4
from sigma_core.models.user import User
5
6
class GroupMember(models.Model):
7
    """
8
    Modelize a membership relation between an User and a Group.
9
    """
10
    class Meta:
11
        # TODO: Make a primary key once Django supports it
12
        unique_together = (("user", "group"),)
13
14
    user = models.ForeignKey('User', related_name='memberships')
15
    group = models.ForeignKey('Group', related_name='memberships')
16
    created = models.DateTimeField(auto_now_add=True)
17
    join_date = models.DateField(blank=True, null=True)
18
    leave_date = models.DateField(blank=True, null=True)
19
    perm_rank = models.SmallIntegerField(blank=False, default=1)
20
21
    # Related fields:
22
    #   - values (model GroupMemberValue)
23
24
    def can_invite(self):
25
        return self.perm_rank >= self.group.req_rank_invite
26
27
    def can_kick(self):
28
        return self.perm_rank >= self.group.req_rank_kick
29
30
    def is_accepted(self):
31
        return self.perm_rank > 0
32
33
    def __str__(self):
34
        return "User \"%s\" r%d in Group \"%s\"" % (self.user.__str__(), self.perm_rank, self.group.__str__())
35
36
    # Perms for admin site
37
    def has_perm(self, perm, obj=None): # pragma: no cover
38
        return True
39
40
    def has_module_perms(self, app_label): # pragma: no cover
41
        return True
42