Bläddra i källkod

dev #185 Button to read all

Alexis CLEMENT 8 år sedan
förälder
incheckning
1fb65f7570

+ 31 - 0
tracim/tracim/controllers/read.py Visa fil

@@ -0,0 +1,31 @@
1
+# -*- coding: utf-8 -*-
2
+import tg
3
+from tg import require, predicates
4
+from tracim.controllers import StandardController
5
+from tracim.lib.content import ContentApi
6
+from tracim.model.data import ContentType
7
+
8
+
9
+class ReadController(StandardController):
10
+
11
+    @classmethod
12
+    def current_item_id_key_in_context(cls) -> str:
13
+        pass
14
+
15
+    @tg.expose()
16
+    def index(self):
17
+        return dict()
18
+
19
+    @require(predicates.not_anonymous())
20
+    @tg.expose()
21
+    def all(self):
22
+        print("read all")
23
+        user = tg.tmpl_context.current_user
24
+        content_api = ContentApi(user)
25
+        itemset = content_api.get_last_unread(None, ContentType.Any, None)
26
+        for item in itemset:
27
+            content_api.mark_read(item)
28
+
29
+        tg.redirect("/home")
30
+
31
+

+ 4 - 0
tracim/tracim/controllers/root.py Visa fil

@@ -12,6 +12,7 @@ from tg import url
12 12
 
13 13
 from tg.i18n import ugettext as _
14 14
 from tracim.controllers.api import APIController
15
+from tracim.controllers.tools import ToolsController
15 16
 
16 17
 from tracim.lib import CST
17 18
 from tracim.lib.base import logger
@@ -57,10 +58,13 @@ class RootController(StandardController):
57 58
     debug = DebugController()
58 59
     error = ErrorController()
59 60
 
61
+
60 62
     # Rest controllers
61 63
     workspaces = UserWorkspaceRestController()
62 64
     user = UserRestController()
63 65
 
66
+    tools = ToolsController()
67
+
64 68
     # api
65 69
     api = APIController()
66 70
 

+ 22 - 0
tracim/tracim/controllers/tools.py Visa fil

@@ -0,0 +1,22 @@
1
+# -*- coding: utf-8 -*-
2
+
3
+import tg
4
+from tg.decorators import override_template
5
+from tracim.controllers.read import ReadController
6
+from tracim.lib.base import BaseController
7
+
8
+
9
+class ToolsController(BaseController):
10
+    """
11
+    TODO Manage rights
12
+    """
13
+
14
+    read = ReadController()
15
+
16
+    @classmethod
17
+    def current_item_id_key_in_context(cls) -> str:
18
+        pass
19
+
20
+    @tg.expose()
21
+    def index(self):
22
+        return dict()

+ 1 - 0
tracim/tracim/templates/home.mak Visa fil

@@ -90,6 +90,7 @@
90 90
 
91 91
     ## NOT READ
92 92
     <div class="" id="unread-content-panel">
93
+        <br/><a href="/tools/read/all" class="btn btn-default"> Mark everything as read </a><hr/>
93 94
         <div class="panel panel-success">
94 95
             <div class="panel-body">
95 96
                 % if fake_api.last_unread.nb <= 0:

+ 29 - 0
tracim/tracim/tests/library/test_content_api.py Visa fil

@@ -347,6 +347,35 @@ class TestContentApi(BaseTest, TestStandard):
347 347
         eq_(ActionDescription.COMMENT, c.revision_type)
348 348
 
349 349
 
350
+    def test_mark_as_read(self):
351
+        uapi = UserApi(None)
352
+        groups = [GroupApi(None).get_one(Group.TIM_USER),
353
+                  GroupApi(None).get_one(Group.TIM_MANAGER),
354
+                  GroupApi(None).get_one(Group.TIM_ADMIN)]
355
+
356
+        userA = uapi.create_user(email='this.is@user',
357
+                                groups=groups, save_now=True)
358
+
359
+        userB = uapi.create_user(email='this.is@nother_user',
360
+                                 groups=groups, save_now=True)
361
+
362
+        workspace = WorkspaceApi(userA, userB).create_workspace('test workspace',
363
+                                                        save_now=True)
364
+        contapiA = ContentApi(userA)
365
+        contapiB = ContentApi(userB)
366
+
367
+        page = contapiA.create(ContentType.page, workspace, "this is a page")
368
+
369
+        eq_(page.revisions[-1].read_by[userB], False)
370
+
371
+        contapiB.mark_read(page)
372
+
373
+        eq_(page.revisions[-1].read_by[userB], True)
374
+
375
+        print("test_mark_as_read")
376
+
377
+
378
+
350 379
     def test_update(self):
351 380
         uapi = UserApi(None)
352 381
         groups = [GroupApi(None).get_one(Group.TIM_USER),