Coverage for /var/srv/projects/api.amasfac.comuna18.com/tmp/venv/lib/python3.9/site-packages/django/contrib/messages/storage/session.py: 50%

24 statements  

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

1import json 

2 

3from django.contrib.messages.storage.base import BaseStorage 

4from django.contrib.messages.storage.cookie import MessageDecoder, MessageEncoder 

5from django.core.exceptions import ImproperlyConfigured 

6 

7 

8class SessionStorage(BaseStorage): 

9 """ 

10 Store messages in the session (that is, django.contrib.sessions). 

11 """ 

12 

13 session_key = "_messages" 

14 

15 def __init__(self, request, *args, **kwargs): 

16 if not hasattr(request, "session"): 16 ↛ 17line 16 didn't jump to line 17, because the condition on line 16 was never true

17 raise ImproperlyConfigured( 

18 "The session-based temporary message storage requires session " 

19 "middleware to be installed, and come before the message " 

20 "middleware in the MIDDLEWARE list." 

21 ) 

22 super().__init__(request, *args, **kwargs) 

23 

24 def _get(self, *args, **kwargs): 

25 """ 

26 Retrieve a list of messages from the request's session. This storage 

27 always stores everything it is given, so return True for the 

28 all_retrieved flag. 

29 """ 

30 return ( 

31 self.deserialize_messages(self.request.session.get(self.session_key)), 

32 True, 

33 ) 

34 

35 def _store(self, messages, response, *args, **kwargs): 

36 """ 

37 Store a list of messages to the request's session. 

38 """ 

39 if messages: 

40 self.request.session[self.session_key] = self.serialize_messages(messages) 

41 else: 

42 self.request.session.pop(self.session_key, None) 

43 return [] 

44 

45 def serialize_messages(self, messages): 

46 encoder = MessageEncoder() 

47 return encoder.encode(messages) 

48 

49 def deserialize_messages(self, data): 

50 if data and isinstance(data, str): 

51 return json.loads(data, cls=MessageDecoder) 

52 return data