# HG changeset patch # User Thierry Florac # Date 1453129736 -3600 # Node ID 4a2b5dd3d69bb7a03d42c96d2e5d21a6527f1773 # Parent cbc55162b64e3a927e2384cdb58d295e49d80695 Added favorites contents in user's profile diff -r cbc55162b64e -r 4a2b5dd3d69b src/pyams_content/profile/admin.py --- a/src/pyams_content/profile/admin.py Mon Jan 18 16:08:07 2016 +0100 +++ b/src/pyams_content/profile/admin.py Mon Jan 18 16:08:56 2016 +0100 @@ -34,6 +34,7 @@ class AdminProfile(Persistent): """Admin profile persistent class""" + favorites = FieldProperty(IAdminProfile['favorites']) table_page_length = FieldProperty(IAdminProfile['table_page_length']) diff -r cbc55162b64e -r 4a2b5dd3d69b src/pyams_content/profile/interfaces/__init__.py --- a/src/pyams_content/profile/interfaces/__init__.py Mon Jan 18 16:08:07 2016 +0100 +++ b/src/pyams_content/profile/interfaces/__init__.py Mon Jan 18 16:08:56 2016 +0100 @@ -19,7 +19,7 @@ # import packages from zope.interface import Interface -from zope.schema import Choice +from zope.schema import Choice, List, TextLine from pyams_content import _ @@ -30,6 +30,10 @@ class IAdminProfile(Interface): """User admin profile preferences""" + favorites = List(title=_("User favorites"), + description=_("List of internal numbers of shared contents stored for quick access"), + value_type=TextLine()) + table_page_length = Choice(title=_("Default table length"), description=_("Default length used for inner tables and dashboards"), values=(10, 25, 50, 100), diff -r cbc55162b64e -r 4a2b5dd3d69b src/pyams_content/profile/zmi/__init__.py --- a/src/pyams_content/profile/zmi/__init__.py Mon Jan 18 16:08:07 2016 +0100 +++ b/src/pyams_content/profile/zmi/__init__.py Mon Jan 18 16:08:56 2016 +0100 @@ -9,6 +9,7 @@ # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS # FOR A PARTICULAR PURPOSE. # +from pyramid.view import view_config __docformat__ = 'restructuredtext' @@ -21,9 +22,9 @@ from pyams_skin.layer import IPyAMSLayer # import packages -from pyams_form.form import InnerEditForm from pyams_security.zmi.profile import UserProfileEditForm from pyams_utils.adapter import adapter_config +from pyams_zmi.form import InnerAdminEditForm from z3c.form import field from zope.interface import Interface @@ -33,7 +34,7 @@ @adapter_config(name='admin_profile', context=(Interface, IPyAMSLayer, UserProfileEditForm), provides=IInnerTabForm) -class AdminProfileTabForm(InnerEditForm): +class AdminProfileTabForm(InnerAdminEditForm): """Admin profile tab form""" tab_label = _("Admin. profile") @@ -49,3 +50,20 @@ def getContent(self): return IAdminProfile(self.request.principal) + + +@view_config(name='switch-user-favorite.json', context=Interface, request_type=IPyAMSLayer, + renderer='json', xhr=True) +def switch_favorite(request): + """Add or remove reference from user favorites""" + profile = IAdminProfile(request.principal) + favorites = profile.favorites or [] + oid = request.params.get('oid') + if oid: + if oid in favorites: + favorites.remove(oid) + else: + favorites.append(oid) + profile.favorites = favorites + return {'oid': oid, + 'favorite': oid in favorites}