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
« 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 _
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)
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
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)
31 objects = BaseSessionManager()
33 class Meta:
34 abstract = True
35 verbose_name = _("session")
36 verbose_name_plural = _("sessions")
38 def __str__(self):
39 return self.session_key
41 @classmethod
42 def get_session_store_class(cls):
43 raise NotImplementedError
45 def get_decoded(self):
46 session_store_class = self.get_session_store_class()
47 return session_store_class().decode(self.session_data)