src/notes/api/views/sync.py
changeset 129 d48946d164c6
parent 128 34a75bd8d0b9
child 132 906a6c7c7943
--- a/src/notes/api/views/sync.py	Tue Jul 25 19:11:26 2017 +0200
+++ b/src/notes/api/views/sync.py	Fri Jul 28 19:40:35 2017 +0200
@@ -19,17 +19,23 @@
     """
     permission_classes = (permissions.IsAuthenticated,)
 
-    def __filter_object(self, model, user, modified_since):
+    def __filter_object(self, model, user, modified_since, client_id):
+        """
+        Log entries are filtered by model, actor and timestamp.
+        If a client id is given, log entries from this client are ignored.
+        """
         log_entries = LogEntry.objects.get_for_model(model).filter(actor=user)
         if modified_since:
             log_entries = log_entries.filter(timestamp__gte=modified_since)
+        if client_id:
+            log_entries = log_entries.exclude(client=client_id)
         return log_entries.order_by('timestamp')
 
-    def __process_log_entries(self, model, user, modified_since):
+    def __process_log_entries(self, model, user, modified_since, client_id):
         '''
         Process log entries
         '''
-        log_entries = self.__filter_object(model, user, modified_since)
+        log_entries = self.__filter_object(model, user, modified_since, client_id)
         logger.debug("LOG ENTRies %r", list(log_entries))
 
         res = {}
@@ -68,7 +74,7 @@
 
     def get(self, request, format=None):
         """
-        Return a list of all users.
+        Return an aggregations of all changes.
         """
         modified_since_str = request.query_params.get('modified_since', None)
         modified_since = None
@@ -79,8 +85,9 @@
             )
 
         user = request.user
-        res_sessions = self.__process_log_entries(Session, user, modified_since)
-        res_notes = self.__process_log_entries(Note, user, modified_since)
+        client_id = request.META.get('HTTP_AUDITLOG_CLIENT', None)
+        res_sessions = self.__process_log_entries(Session, user, modified_since, client_id)
+        res_notes = self.__process_log_entries(Note, user, modified_since, client_id)
 
         return Response({
             'sessions': res_sessions.values(),