17 * Only registered users are able to access this view. |
17 * Only registered users are able to access this view. |
18 * the results are filtered by connected user |
18 * the results are filtered by connected user |
19 """ |
19 """ |
20 permission_classes = (permissions.IsAuthenticated,) |
20 permission_classes = (permissions.IsAuthenticated,) |
21 |
21 |
22 def __filter_object(self, model, user, modified_since): |
22 def __filter_object(self, model, user, modified_since, client_id): |
|
23 """ |
|
24 Log entries are filtered by model, actor and timestamp. |
|
25 If a client id is given, log entries from this client are ignored. |
|
26 """ |
23 log_entries = LogEntry.objects.get_for_model(model).filter(actor=user) |
27 log_entries = LogEntry.objects.get_for_model(model).filter(actor=user) |
24 if modified_since: |
28 if modified_since: |
25 log_entries = log_entries.filter(timestamp__gte=modified_since) |
29 log_entries = log_entries.filter(timestamp__gte=modified_since) |
|
30 if client_id: |
|
31 log_entries = log_entries.exclude(client=client_id) |
26 return log_entries.order_by('timestamp') |
32 return log_entries.order_by('timestamp') |
27 |
33 |
28 def __process_log_entries(self, model, user, modified_since): |
34 def __process_log_entries(self, model, user, modified_since, client_id): |
29 ''' |
35 ''' |
30 Process log entries |
36 Process log entries |
31 ''' |
37 ''' |
32 log_entries = self.__filter_object(model, user, modified_since) |
38 log_entries = self.__filter_object(model, user, modified_since, client_id) |
33 logger.debug("LOG ENTRies %r", list(log_entries)) |
39 logger.debug("LOG ENTRies %r", list(log_entries)) |
34 |
40 |
35 res = {} |
41 res = {} |
36 for log_entry in log_entries: |
42 for log_entry in log_entries: |
37 ext_id = log_entry.additional_data.get('ext_id') |
43 ext_id = log_entry.additional_data.get('ext_id') |
66 } |
72 } |
67 return res |
73 return res |
68 |
74 |
69 def get(self, request, format=None): |
75 def get(self, request, format=None): |
70 """ |
76 """ |
71 Return a list of all users. |
77 Return an aggregations of all changes. |
72 """ |
78 """ |
73 modified_since_str = request.query_params.get('modified_since', None) |
79 modified_since_str = request.query_params.get('modified_since', None) |
74 modified_since = None |
80 modified_since = None |
75 if modified_since_str is not None: |
81 if modified_since_str is not None: |
76 modified_since = datetime.datetime.fromtimestamp( |
82 modified_since = datetime.datetime.fromtimestamp( |
77 float(modified_since_str), |
83 float(modified_since_str), |
78 timezone.utc |
84 timezone.utc |
79 ) |
85 ) |
80 |
86 |
81 user = request.user |
87 user = request.user |
82 res_sessions = self.__process_log_entries(Session, user, modified_since) |
88 client_id = request.META.get('HTTP_AUDITLOG_CLIENT', None) |
83 res_notes = self.__process_log_entries(Note, user, modified_since) |
89 res_sessions = self.__process_log_entries(Session, user, modified_since, client_id) |
|
90 res_notes = self.__process_log_entries(Note, user, modified_since, client_id) |
84 |
91 |
85 return Response({ |
92 return Response({ |
86 'sessions': res_sessions.values(), |
93 'sessions': res_sessions.values(), |
87 'notes': res_notes.values() |
94 'notes': res_notes.values() |
88 }) |
95 }) |