permissions.py
1.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
# File used to store functions to handle permissions
from categories.models import Category
from subjects.models import Subject
from topics.models import Resource
"""
Function to know if a user has permission to:
- Edit Category
- Delete Category
- Create Subject
- Replicate Subject
"""
def has_category_permissions(user, category):
if user.is_staff:
return True
if category and category.coordinators.filter(id = user.id).exists():
return True
return False
"""
Function to know if a user has permission to:
- Edit Subject
- Delete Subject
- Create Topic inside Subject
"""
def has_subject_permissions(user, subject):
if user and user.is_staff:
return True
if subject.professor and subject.professor.filter(id = user.id).exists():
return True
if subject.category and subject.category.coordinators.filter(id = user.id).exists():
return True
return False
"""
Function to know if user has permission to:
- See subject
"""
def has_subject_view_permissions(user, subject):
if has_subject_permissions(user, subject):
return True
if subject and subject.students.filter(id = user.id).exists():
return True
return False
"""
Function to know if user is student of some subject in category
"""
def has_category_permission(user, cat_slug):
exist = Subject.objects.filter(students__id = user.id, category__slug = cat_slug).exists()
return exist
"""
Function to know if user has permission to:
- Access Resource
"""
def has_resource_permissions(user, resource):
if has_subject_permissions(user, resource.topic.subject):
return True
if resource.visible or resource.topic.repository:
if resource.all_students:
if resource.topic.subject.students.filter(id = user.id).exists():
return True
if resource.students.filter(id = user.id).exists():
return True
if Resource.objects.filter(id = resource.id, groups__participants__pk = user.pk).exists():
return True
return False