-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathflash.py
86 lines (60 loc) · 1.88 KB
/
flash.py
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
86
#!/usr/bin/python
# -*- coding: utf-8 -*-
from builtins import object
class Flash(object):
def __init__(self, message, is_error=False):
self.message = message.encode('utf8')
self.is_error = is_error
def __repr__(self):
return self.message
def __str__(self):
return self.message
def exists(request):
return 'flash_data' in request.session
def clear(request):
if exists(request):
del(request.session['flash_data'])
class FlashWrapper(object):
def __init__(self, request):
self.request = request
def __len__(self):
return len(self.request.session.get('flash_data', []))
def __bool__(self):
return len(self) > 0
def has_only_errors(self):
msgs = self.get()
for msg in msgs:
if not msg.is_error:
return False
return True
def get(self):
flash_ = None
if exists(self.request):
flash_ = self.request.session['flash_data']
else: flash_ = []
return flash_
def get_and_clear(self):
flash_ = None
if exists(self.request) and self.request.session.has_key('flash_data'):
flash_ = self.request.session['flash_data']
clear(self.request)
else: flash_ = []
return flash_
def get(request):
return FlashWrapper(request)
def append(request, message):
if not exists(request):
request.session['flash_data'] = []
request.session['flash_data'].append(Flash(message))
request.session.save()
def error(request, message):
clear(request)
append_error(request, message)
def append_error(request, message):
if not exists(request):
request.session['flash_data'] = []
request.session['flash_data'].append(Flash(message, True))
request.session.save()
def set(request, message):
clear(request)
append(request, message)