Start personal boards
authorSylvain Thénault <sylvain.thenault@logilab.fr>
Tue, 28 Feb 2017 17:06:12 +0100
changeset 190 b471354d2886
parent 188 409f9cbc02c5
child 191 fe403024414d
Start personal boards which replace the anonymous index page. Related to #13749115
cubicweb_sherpa/i18n/en.po
cubicweb_sherpa/i18n/fr.po
cubicweb_sherpa/views/management.py
cubicweb_sherpa/views/templates/index_authenticated.jinja2.html
--- a/cubicweb_sherpa/i18n/en.po	Tue Feb 28 17:03:53 2017 +0100
+++ b/cubicweb_sherpa/i18n/en.po	Tue Feb 28 17:06:12 2017 +0100
@@ -7,6 +7,9 @@
 "Generated-By: pygettext.py 1.5\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
 
+msgid "created by {}"
+msgstr ""
+
 msgid "ctxcomponents_sherpa.actions"
 msgstr ""
 
@@ -23,3 +26,6 @@
 
 msgid "import ConceptScheme"
 msgstr ""
+
+msgid "modified on {}"
+msgstr ""
--- a/cubicweb_sherpa/i18n/fr.po	Tue Feb 28 17:03:53 2017 +0100
+++ b/cubicweb_sherpa/i18n/fr.po	Tue Feb 28 17:06:12 2017 +0100
@@ -7,6 +7,9 @@
 "Generated-By: pygettext.py 1.5\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
 
+msgid "created by {}"
+msgstr "créé par {}"
+
 msgid "ctxcomponents_sherpa.actions"
 msgstr ""
 
@@ -23,3 +26,6 @@
 
 msgid "import ConceptScheme"
 msgstr "importer un vocabulaire contrôlé"
+
+msgid "modified on {}"
+msgstr "modifié le {}"
--- a/cubicweb_sherpa/views/management.py	Tue Feb 28 17:03:53 2017 +0100
+++ b/cubicweb_sherpa/views/management.py	Tue Feb 28 17:06:12 2017 +0100
@@ -18,12 +18,61 @@
 
 from logilab.mtconverter import xml_escape
 
-from cubicweb.predicates import relation_possible, one_line_rset, non_final_entity
+from cubicweb import tags
+from cubicweb.predicates import (authenticated_user, non_final_entity,
+                                 one_line_rset, relation_possible)
+from cubicweb.view import EntityView
 from cubicweb.web import action, formwidgets
 from cubicweb.web.formfields import guess_field
 from cubicweb.web.views import actions, management
 
 from cubes.relationwidget.views import RelationFacetWidget
+from cubes.skos import views as skos
+
+from . import IndexView
+
+
+class AuthenticatedIndexView(IndexView):
+    __select__ = IndexView.__select__ & authenticated_user()
+    template_name = 'index_authenticated'
+
+    def build_context(self):
+        context = super(AuthenticatedIndexView, self).build_context()
+        for rql, key in [
+                ('Any X,XMD,XU,XT ORDERBY XMD DESC WHERE X is SEDAArchiveTransfer, '
+                 'X modification_date XMD, X created_by XU?, X title XT, '
+                 'X owned_by U, U eid %(u)s', 'profiles'),
+                ('Any X,XMD,XU,XUA ORDERBY XMD DESC WHERE X is SEDAArchiveUnit, '
+                 'X modification_date XMD, X created_by XU?, X user_annotation XUA, '
+                 'X owned_by U, U eid %(u)s', 'profiles'),
+                ('Any X,XMD,XU ORDERBY XMD DESC WHERE X is AuthorityRecord, '
+                 'X modification_date XMD, X created_by XU?,'
+                 'X owned_by U, U eid %(u)s', 'records'),
+        ]:
+            rset = self._cw.execute(rql, {'u': self._cw.user.eid})
+            if rset:
+                context['my_{}_html'.format(key)] = self._cw.view(
+                    'detailed-paginated-list', rset=rset)
+        return context
+
+
+class DetailedPaginatedListView(skos.PaginatedListView):
+    __regid__ = 'detailed-paginated-list'
+
+    def call(self, **kwargs):
+        super(DetailedPaginatedListView, self).call(subvid='detailed-item')
+
+
+class DetailedItemView(EntityView):
+    __regid__ = 'detailed-item'
+
+    def entity_call(self, entity):
+        self.w(tags.a(entity.dc_title(), href=entity.absolute_url()))
+        descr = [self._cw._('modified on {}').format(entity.printable_value('modification_date'))]
+        if entity.created_by:
+            user = entity.created_by[0]
+            descr.append(self._cw._('created by {}').format(user.name()))
+        self.w(tags.span(', '.join(descr), klass='text-muted'))
 
 
 class SherpaSecurityManagementView(management.SecurityManagementView):
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cubicweb_sherpa/views/templates/index_authenticated.jinja2.html	Tue Feb 28 17:06:12 2017 +0100
@@ -0,0 +1,64 @@
+<div class="col-md-12" id="accueil">
+
+  <section>
+    <h2>Profils d'archivage</h2>
+    <div class="titleUnderline">
+      <span class="underline mr"></span><span class="losange"></span><span class="underline ml"></span>
+    </div>
+    <p>
+      Les profils d'archivage définissent la structure et le contenu attendu pour un bordereau de versement. Ils sont généralements associés à un flux d'archivage. <a href="{{ base_url}}/project">En savoir plus</a>
+    </p>
+    {% if my_profiles_html %}
+    <p>
+      Voici la liste des profils que vous avez rédigés ou sur lesquels vous avez le droit de modification :
+    </p>
+    {{ my_profiles_html|safe }}
+    {% endif %}
+    <div id="buttons-wrapper">
+      <a href="{{base_url}}/add/sedaarchivetransfer" class="btn btn-default">créer un nouveau profil</a>
+    </div>
+  </section>
+
+  <section>
+    <h2>Unités d'archive</h2>
+    <div class="titleUnderline">
+      <span class="underline mr"></span><span class="losange"></span><span class="underline ml"></span>
+    </div>
+    <p>
+      Les unités d'archives sont des morceaux de profils réutilisables ensuite dans les profils
+      d'archivage. <a href="{{ base_url}}/project">En savoir plus</a>
+    </p>
+    {% if my_units_html %}
+    <p>
+      Voici la liste des unités d'archives que vous avez
+      rédigées ou sur lesquelles vous avez le droit de modification :
+    </p>
+    {{ my_units_html|safe }}
+    {% endif %}
+    <div id="buttons-wrapper">
+      <a href="{{base_url}}/add/sedaarchiveunit?unit_type=unit_content" class="btn btn-default">créer une nouvelle unité d'archive</a>
+    </div>
+  </section>
+
+  <section>
+    <h2>Notices d'autorité</h2>
+    <div class="titleUnderline">
+      <span class="underline mr"></span><span class="losange"></span><span class="underline ml"></span>
+    </div>
+    <p>
+      Les notices d'autorité permettent de décrire les agents (personnes ou organisation)
+      intervenant dans la vie d'un document ou dans le processus d'archivage. <a href="{{ base_url}}/project">En savoir plus</a>
+    </p>
+    {% if my_records_html %}
+    <p>
+      Voici la liste des notices d'autorité que vous avez rédigées ou sur lesquelles vous avez le droit de
+      modification :
+    </p>
+    {{ my_records_html|safe }}
+    {% endif %}
+    <div id="buttons-wrapper">
+      <a href="{{base_url}}/add/authorityrecord" class="btn btn-default">créer une nouvelle notice d'autorité</a>
+    </div>
+  </section>
+
+</div>