Hide keyboard shortcuts

Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

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

from django.db import models 

 

from backend_app.fields import JSONField 

from backend_app.models.abstract.versionedEssentialModule import ( 

VersionedEssentialModule, 

VersionedEssentialModuleSerializer, 

VersionedEssentialModuleViewSet, 

) 

from backend_app.permissions.app_permissions import NoDelete 

from backend_app.validation.validators import UsefulLinksValidator 

 

IMPORTANCE_LEVEL = (("-", "normal"), ("+", "important"), ("++", "IMPORTANT")) 

 

useful_link_validator = UsefulLinksValidator() 

 

 

class Module(VersionedEssentialModule): 

""" 

Abstract module that provides defaults fields: 

Title, comment, useful_links and importance_level 

 

Those field will be inherited. 

 

All Basic modules are also "versioned" modules 

""" 

 

title = models.CharField(default="", blank=True, max_length=150) 

comment = models.CharField(default="", blank=True, max_length=5000) 

useful_links = JSONField(default=list, validators=[useful_link_validator]) 

importance_level = models.CharField( 

max_length=2, choices=IMPORTANCE_LEVEL, default="-" 

) 

 

class Meta: 

abstract = True 

 

 

class ModuleSerializer(VersionedEssentialModuleSerializer): 

""" 

Custom serializer that performs checks on the Basic module filed 

""" 

 

class Meta: 

model = Module 

fields = VersionedEssentialModuleSerializer.Meta.fields + ( 

"title", 

"comment", 

"useful_links", 

"importance_level", 

) 

 

 

class ModuleViewSet(VersionedEssentialModuleViewSet): 

""" 

Viewset for the Basic Module 

""" 

 

permission_classes = (NoDelete,) 

serializer_class = ModuleSerializer