Просмотр исходного кода

add read_by_user in last active content endpoint

Guénaël Muller 6 лет назад
Родитель
Сommit
8e5c454379

+ 1 - 1
tracim/lib/core/content.py Просмотреть файл

163
             self._show_temporary = previous_show_temporary
163
             self._show_temporary = previous_show_temporary
164
 
164
 
165
     def get_content_in_context(self, content: Content) -> ContentInContext:
165
     def get_content_in_context(self, content: Content) -> ContentInContext:
166
-        return ContentInContext(content, self._session, self._config)
166
+        return ContentInContext(content, self._session, self._config, self._user)  # nopep8
167
 
167
 
168
     def get_revision_in_context(self, revision: ContentRevisionRO) -> RevisionInContext:  # nopep8
168
     def get_revision_in_context(self, revision: ContentRevisionRO) -> RevisionInContext:  # nopep8
169
         # TODO - G.M - 2018-06-173 - create revision in context object
169
         # TODO - G.M - 2018-06-173 - create revision in context object

+ 7 - 1
tracim/models/context_models.py Просмотреть файл

335
     Interface to get Content data and Content data related to context.
335
     Interface to get Content data and Content data related to context.
336
     """
336
     """
337
 
337
 
338
-    def __init__(self, content: Content, dbsession: Session, config: CFG):
338
+    def __init__(self, content: Content, dbsession: Session, config: CFG, user: User=None):  # nopep8
339
         self.content = content
339
         self.content = content
340
         self.dbsession = dbsession
340
         self.dbsession = dbsession
341
         self.config = config
341
         self.config = config
342
+        self._user = user
342
 
343
 
343
     # Default
344
     # Default
344
     @property
345
     @property
431
     def slug(self):
432
     def slug(self):
432
         return slugify(self.content.label)
433
         return slugify(self.content.label)
433
 
434
 
435
+    @property
436
+    def read_by_user(self):
437
+        assert self._user
438
+        return self.content.has_new_information_for(self._user)
439
+
434
 
440
 
435
 class RevisionInContext(object):
441
 class RevisionInContext(object):
436
     """
442
     """

+ 2 - 0
tracim/views/core_api/schemas.py Просмотреть файл

458
     )
458
     )
459
 
459
 
460
 
460
 
461
+class UserContentDigestSchema(ContentDigestSchema):
462
+    read_by_user = marshmallow.fields.Bool(example=False, default=False)
461
 #####
463
 #####
462
 # Content
464
 # Content
463
 #####
465
 #####

+ 4 - 3
tracim/views/core_api/user_controller.py Просмотреть файл

15
 from tracim.lib.core.workspace import WorkspaceApi
15
 from tracim.lib.core.workspace import WorkspaceApi
16
 from tracim.views.controllers import Controller
16
 from tracim.views.controllers import Controller
17
 from tracim.views.core_api.schemas import UserIdPathSchema
17
 from tracim.views.core_api.schemas import UserIdPathSchema
18
-from tracim.views.core_api.schemas import ContentDigestSchema
18
+from tracim.views.core_api.schemas import UserContentDigestSchema
19
 from tracim.views.core_api.schemas import ExtendedFilterQuerySchema
19
 from tracim.views.core_api.schemas import ExtendedFilterQuerySchema
20
 from tracim.views.core_api.schemas import WorkspaceDigestSchema
20
 from tracim.views.core_api.schemas import WorkspaceDigestSchema
21
 from tracim.models.contents import ContentTypeLegacy as ContentType
21
 from tracim.models.contents import ContentTypeLegacy as ContentType
50
     @require_same_user_or_profile(Group.TIM_ADMIN)
50
     @require_same_user_or_profile(Group.TIM_ADMIN)
51
     @hapic.input_path(UserIdPathSchema())
51
     @hapic.input_path(UserIdPathSchema())
52
     @hapic.input_query(ExtendedFilterQuerySchema())
52
     @hapic.input_query(ExtendedFilterQuerySchema())
53
-    @hapic.output_body(ContentDigestSchema(many=True))
53
+    @hapic.output_body(UserContentDigestSchema(many=True))
54
     def last_active_content(self, context, request: TracimRequest, hapic_data=None):  # nopep8
54
     def last_active_content(self, context, request: TracimRequest, hapic_data=None):  # nopep8
55
         """
55
         """
56
         Get last_active_content for user
56
         Get last_active_content for user
81
             limit=content_filter.limit or None,
81
             limit=content_filter.limit or None,
82
         )
82
         )
83
         return [
83
         return [
84
-            api.get_content_in_context(content) for content in last_actives
84
+            api.get_content_in_context(content)
85
+            for content in last_actives
85
         ]
86
         ]
86
 
87
 
87
     def bind(self, configurator: Configurator) -> None:
88
     def bind(self, configurator: Configurator) -> None: