Completed
Push — master ( 14185c...203d73 )
by Camille
01:09
created

School   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 41
Duplicated Lines 0 %
Metric Value
dl 0
loc 41
rs 10
wmc 4

4 Methods

Rating   Name   Duplication   Size   Complexity  
A has_create_permission() 0 7 1
A save() 0 16 1
A has_read_permission() 0 6 1
A has_object_read_permission() 0 5 1
1
from django.db import models
2
3
from dry_rest_permissions.generics import allow_staff_or_superuser
4
5
from sigma_core.models.group import Group
6
7
8
class School(Group):
9
    design = models.CharField(max_length=255)
10
11
    def save(self, *args, **kwargs):
12
        """
13
        Schools are special groups: some params cannot be specified by user.
14
        """
15
        self.visibility = Group.VIS_PUBLIC
16
        self.type = Group.TYPE_SCHOOL
17
        self.default_member_rank = -1
18
        self.req_rank_invite = Group.ADMINISTRATOR_RANK
19
        self.req_rank_kick = Group.ADMINISTRATOR_RANK
20
        self.req_rank_accept_join_requests = Group.ADMINISTRATOR_RANK
21
        self.req_rank_promote = Group.ADMINISTRATOR_RANK
22
        self.req_rank_demote = Group.ADMINISTRATOR_RANK
23
        self.req_rank_modify_group_infos = Group.ADMINISTRATOR_RANK
24
        self.resp_school = None
25
26
        return super(School, self).save(*args, **kwargs)
27
28
    # Permissions
29
    @staticmethod
30
    def has_read_permission(request):
31
        """
32
        Schools list is visible by everybody.
33
        """
34
        return True
35
36
    def has_object_read_permission(self, request):
37
        """
38
        Schools are only visible by members.
39
        """
40
        return request.user.is_group_member(self)
41
42
    @staticmethod
43
    @allow_staff_or_superuser
44
    def has_create_permission(request):
45
        """
46
        Schools can be created by Sigma admin only.
47
        """
48
        return False
49