GroupAcknowledgment.__str__()   A
last analyzed

Complexity

Conditions 2

Size

Total Lines 5

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 6

Importance

Changes 1
Bugs 0 Features 0
Metric Value
dl 0
loc 5
c 1
b 0
f 0
rs 9.4285
ccs 0
cts 0
cp 0
cc 2
crap 6
1
from django.db import models
2
3
from sigma_core.models.custom_field import CustomField
4
from sigma_core.models.group_field import GroupField
5
6
7
class Group(models.Model):
8
    #########################
9
    # Constants and choices #
10
    #########################
11
12
    ##########
13
    # Fields #
14
    ##########
15
    name = models.CharField(max_length=254)
16
    is_private = models.BooleanField(default=False)
17
    description = models.TextField(blank=True)
18
    is_protected = models.BooleanField(default=False) # if True, the Group cannot be deleted
19
    can_anyone_join = models.BooleanField(default=False) #if True, people don't need invitation
20
    need_validation_to_join = models.BooleanField(default=False)
21
22
    # Related fields:
23
    #   - invited_users (model User)
24
    #   - memberships (model GroupMember)
25
    #   - users (model User)
26
    #   - fields (model GroupField)
27
    #   - subgroups (model Group)
28
    #   - group_parents (model Group)
29
    # TODO: Determine whether 'memberships' fields needs to be retrieved every time or not...
30
31
    @property
32
    def subgroups_list(self):
33
        return [ga.subgroup for ga in self.subgroups.filter(validated=True).select_related('subgroup')]
34
35
    @property
36
    def group_parents_list(self):
37
        return [ga.parent_group for ga in self.group_parents.filter(validated=True).select_related('parent_group')]
38
39
    @property
40
    def members_count(self):
41
        return self.memberships.count()
42
43
    #################
44
    # Model methods #
45
    #################
46
    def can_anyone_join(self):
47
        return self.can_anyone_join
48
49
    def __str__(self): # pragma: no cover
50
        return self.name
51
52
    ###############
53
    # Permissions #
54
    ###############
55
56
    # Perms for admin site
57
    def has_perm(self, perm, obj=None): # pragma: no cover
58
        return True
59
60
    def has_module_perms(self, app_label): # pragma: no cover
61
        return True
62
63
64
class GroupAcknowledgment(models.Model):
65
    subgroup = models.ForeignKey(Group, related_name='group_parents')
66
    parent_group = models.ForeignKey(Group, related_name='subgroups')
67
    validated = models.BooleanField(default=False)
68
    delegate_admin = models.BooleanField(default=True)
69
    created = models.DateTimeField(auto_now_add=True)
70
    updated = models.DateTimeField(auto_now=True)
71
72
    def __str__(self): # pragma: no cover
73
        if self.validated:
74
            return "Group %s acknowledged by Group %s" % (self.subgroup.__str__(), self.parent_group.__str__())
75
        else:
76
            return "Group %s awaiting for acknowledgment by Group %s since %s" % (self.subgroup.__str__(), self.parent_group.__str__(), self.created.strftime("%Y-%m-%d %H:%M"))
77