src/pyams_content/profile/zmi/__init__.py
changeset 8 4a2b5dd3d69b
parent 0 7c0001cacf8e
child 12 0cb4470d7eb6
--- 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}