-
-
Notifications
You must be signed in to change notification settings - Fork 33.9k
Expand file tree
/
Copy pathapi.py
More file actions
127 lines (104 loc) · 3.17 KB
/
api.py
File metadata and controls
127 lines (104 loc) · 3.17 KB
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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
from django.contrib.messages import constants
from django.contrib.messages.storage import default_storage
__all__ = (
"add_message",
"get_messages",
"get_level",
"set_level",
"debug",
"info",
"success",
"warning",
"error",
"MessageFailure",
)
class MessageFailure(Exception):
pass
def add_message(request, level, message, extra_tags="", fail_silently=False):
"""
Attempt to add a message to the request using the 'messages' app.
"""
try:
messages = request._messages
except AttributeError:
if not hasattr(request, "META"):
raise TypeError(
"add_message() argument must be an HttpRequest object, not "
"'%s'." % request.__class__.__name__
)
if not fail_silently:
raise MessageFailure(
"You cannot add messages without installing "
"django.contrib.messages.middleware.MessageMiddleware"
)
else:
return messages.add(level, message, extra_tags)
def get_messages(request):
"""
Return the message storage on the request if it exists, otherwise return
an empty list.
"""
return getattr(request, "_messages", [])
def get_level(request):
"""
Return the minimum level of messages to be recorded.
The default level is the ``MESSAGE_LEVEL`` setting. If this is not found,
use the ``INFO`` level.
"""
storage = getattr(request, "_messages", default_storage(request))
return storage.level
def set_level(request, level):
"""
Set the minimum level of messages to be recorded, and return ``True`` if
the level was recorded successfully.
If set to ``None``, use the default level (see the get_level() function).
"""
if not hasattr(request, "_messages"):
return False
request._messages.level = level
return True
def debug(request, message, extra_tags="", fail_silently=False):
"""Add a message with the ``DEBUG`` level."""
add_message(
request,
constants.DEBUG,
message,
extra_tags=extra_tags,
fail_silently=fail_silently,
)
def info(request, message, extra_tags="", fail_silently=False):
"""Add a message with the ``INFO`` level."""
add_message(
request,
constants.INFO,
message,
extra_tags=extra_tags,
fail_silently=fail_silently,
)
def success(request, message, extra_tags="", fail_silently=False):
"""Add a message with the ``SUCCESS`` level."""
add_message(
request,
constants.SUCCESS,
message,
extra_tags=extra_tags,
fail_silently=fail_silently,
)
def warning(request, message, extra_tags="", fail_silently=False):
"""Add a message with the ``WARNING`` level."""
add_message(
request,
constants.WARNING,
message,
extra_tags=extra_tags,
fail_silently=fail_silently,
)
def error(request, message, extra_tags="", fail_silently=False):
"""Add a message with the ``ERROR`` level."""
add_message(
request,
constants.ERROR,
message,
extra_tags=extra_tags,
fail_silently=fail_silently,
)