Coverage for /var/srv/projects/api.amasfac.comuna18.com/tmp/venv/lib/python3.9/site-packages/django/contrib/sessions/base_session.py: 64%

27 statements  

« prev     ^ index     » next       coverage.py v6.4.4, created at 2023-07-17 14:22 -0600

1""" 

2This module allows importing AbstractBaseSession even 

3when django.contrib.sessions is not in INSTALLED_APPS. 

4""" 

5from django.db import models 

6from django.utils.translation import gettext_lazy as _ 

7 

8 

9class BaseSessionManager(models.Manager): 

10 def encode(self, session_dict): 

11 """ 

12 Return the given session dictionary serialized and encoded as a string. 

13 """ 

14 session_store_class = self.model.get_session_store_class() 

15 return session_store_class().encode(session_dict) 

16 

17 def save(self, session_key, session_dict, expire_date): 

18 s = self.model(session_key, self.encode(session_dict), expire_date) 

19 if session_dict: 

20 s.save() 

21 else: 

22 s.delete() # Clear sessions with no data. 

23 return s 

24 

25 

26class AbstractBaseSession(models.Model): 

27 session_key = models.CharField(_("session key"), max_length=40, primary_key=True) 

28 session_data = models.TextField(_("session data")) 

29 expire_date = models.DateTimeField(_("expire date"), db_index=True) 

30 

31 objects = BaseSessionManager() 

32 

33 class Meta: 

34 abstract = True 

35 verbose_name = _("session") 

36 verbose_name_plural = _("sessions") 

37 

38 def __str__(self): 

39 return self.session_key 

40 

41 @classmethod 

42 def get_session_store_class(cls): 

43 raise NotImplementedError 

44 

45 def get_decoded(self): 

46 session_store_class = self.get_session_store_class() 

47 return session_store_class().decode(self.session_data)