Coverage for /Users/davegaeddert/Development/dropseed/plain/plain/plain/preflight/messages.py: 56%
54 statements
« prev ^ index » next coverage.py v7.6.1, created at 2024-10-16 22:04 -0500
« prev ^ index » next coverage.py v7.6.1, created at 2024-10-16 22:04 -0500
1# Levels
2DEBUG = 10
3INFO = 20
4WARNING = 30
5ERROR = 40
6CRITICAL = 50
9class CheckMessage:
10 def __init__(self, level, msg, hint=None, obj=None, id=None):
11 if not isinstance(level, int):
12 raise TypeError("The first argument should be level.")
13 self.level = level
14 self.msg = msg
15 self.hint = hint
16 self.obj = obj
17 self.id = id
19 def __eq__(self, other):
20 return isinstance(other, self.__class__) and all(
21 getattr(self, attr) == getattr(other, attr)
22 for attr in ["level", "msg", "hint", "obj", "id"]
23 )
25 def __str__(self):
26 try:
27 from plain import models
29 ModelBase = models.base.ModelBase
30 using_db = True
31 except ImportError:
32 using_db = False
33 ModelBase = object
35 if self.obj is None:
36 obj = "?"
37 elif using_db and isinstance(self.obj, ModelBase):
38 # We need to hardcode ModelBase and Field cases because its __str__
39 # method doesn't return "applabel.modellabel" and cannot be changed.
40 obj = self.obj._meta.label
41 else:
42 obj = str(self.obj)
43 id = "(%s) " % self.id if self.id else ""
44 hint = "\n\tHINT: %s" % self.hint if self.hint else ""
45 return f"{obj}: {id}{self.msg}{hint}"
47 def __repr__(self):
48 return "<{}: level={!r}, msg={!r}, hint={!r}, obj={!r}, id={!r}>".format(
49 self.__class__.__name__,
50 self.level,
51 self.msg,
52 self.hint,
53 self.obj,
54 self.id,
55 )
57 def is_serious(self, level=ERROR):
58 return self.level >= level
60 def is_silenced(self):
61 from plain.runtime import settings
63 return self.id in settings.SILENCED_PREFLIGHT_CHECKS
66class Debug(CheckMessage):
67 def __init__(self, *args, **kwargs):
68 super().__init__(DEBUG, *args, **kwargs)
71class Info(CheckMessage):
72 def __init__(self, *args, **kwargs):
73 super().__init__(INFO, *args, **kwargs)
76class Warning(CheckMessage):
77 def __init__(self, *args, **kwargs):
78 super().__init__(WARNING, *args, **kwargs)
81class Error(CheckMessage):
82 def __init__(self, *args, **kwargs):
83 super().__init__(ERROR, *args, **kwargs)
86class Critical(CheckMessage):
87 def __init__(self, *args, **kwargs):
88 super().__init__(CRITICAL, *args, **kwargs)