-
-
Notifications
You must be signed in to change notification settings - Fork 11
Expand file tree
/
Copy pathutils.py
More file actions
48 lines (37 loc) · 1.46 KB
/
utils.py
File metadata and controls
48 lines (37 loc) · 1.46 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
import datetime
from collections import namedtuple
from error_tracker import ModelMixin, MaskingMixin
Error = namedtuple("Error", "hash, host, path, method, request_data, exception_name,"
" traceback, count, created_on, last_seen")
paginator = namedtuple("Paginator", "has_next, has_prev, next_num, prev_num, items")
class ErrorModel(ModelMixin):
objects = {}
@classmethod
def delete_entity(cls, rhash):
cls.objects.pop(rhash)
@classmethod
def create_or_update_entity(cls, rhash, host, path, method, request_data,
exception_name, traceback):
count = 1
now = datetime.datetime.now()
created_on = now
traceback = traceback
if rhash in cls.objects:
error = cls.objects[rhash]
created_on = error.created_on
exception_name = error.exception_name
traceback = error.traceback
count = error.count + 1
error = Error(rhash, host, path, method, str(request_data),
exception_name, traceback, count, created_on, now)
cls.objects[rhash] = error
return error
@classmethod
def get_exceptions_per_page(cls, page_number=1):
return paginator(False, False, None, None, list(cls.objects.values()))
@classmethod
def get_entity(cls, rhash):
error = cls.objects.get(rhash, None)
return error
class Masking(MaskingMixin):
pass