def group_tmpl(portal, objs, **kwargs): keyer = lambda item: path_in_site(item['ob']) sorted_items = sorted(objs, key=keyer) items_str = ''.join('[%s]' % path_in_site(item['ob']) for item in sorted_items) body = '%s %s %s' % (template_name, items_str, portal.title_or_id()) return {'subject': 'notifications', 'body_text': body}
def test_walk_subscriptions(self): subs1 = list((path_in_site(obj), sub) for obj, n, sub in walk_subscriptions(self.portal)) self.assertEqual(len(subs1), 2) self.assertTrue(('f1/b/2', self.user2_sub) in subs1) self.assertTrue(('f1/b', self.user1_sub) in subs1) subs2 = list((path_in_site(obj), sub) for obj, n, sub in walk_subscriptions(self.portal['f1']['b']['2'])) self.assertEqual(len(subs2), 1) self.assertTrue(('f1/b/2', self.user2_sub) in subs1) subs3 = list(walk_subscriptions(self.portal['f1']['a'])) self.assertEqual(len(subs3), 0)
def admin_get_subscriptions(self): for obj, sub_id, subscription in walk_subscriptions(self.getSite()): yield { 'user': subscription.to_string(obj), 'location': path_in_site(obj), 'sub_id': sub_id, 'lang': subscription.lang, 'notif_type': subscription.notif_type, }
def _update(self, portal): self.log.info('updating %r', portal) portal_schemas = portal['portal_schemas'] for schema in portal_schemas.objectValues('Naaya Schema'): for widget in schema.objectValues(): names = exorcize_local_properties(widget) if names is not None: self.log.info('cleaned up %r: %r', path_in_site(widget), names) return True
def manageMainTopics(self, maintopics=None, REQUEST=None): """ Update main topics. """ site = self.getSite() if maintopics is None: maintopics = [] else: maintopics = self.utConvertToList(maintopics) site.maintopics = [] for maintopic in maintopics: folder_ob = self.utGetObject(maintopic) site.maintopics.append(path_in_site(folder_ob)) site._p_changed = True if REQUEST: REQUEST.RESPONSE.redirect('manage_maintopics_html?save=ok')
def _update(self, portal): portal.maintopics_settings = { 'expanded': True, 'persistent': True, 'expand_levels': 1, 'max_levels': 1 } maintopics = [] old_maintopics = portal.utSortObjsListByAttr(filter(lambda x: x is not None, map(lambda f, x: f(x, None), (portal.utGetObject,)*len(portal.maintopics), portal.maintopics)), 'sortorder', 0) for path_ob in old_maintopics: maintopics.append(path_in_site(path_ob)) portal.maintopics = maintopics portal._p_changed = True return True
def list_user_subscriptions(self, REQUEST, get_all=False): user_id = self.get_user_id(REQUEST) if get_all: obj = self.get_context().getSite() else: obj = self.get_context() for obj, n, subscription in walk_subscriptions(obj): if not isinstance(subscription, AccountSubscription): continue if subscription.user_id != user_id: continue yield { 'location': path_in_site(obj), 'notif_type': subscription.notif_type, 'lang': subscription.lang, }
def _update(self, portal): portal.maintopics_settings = { 'expanded': True, 'persistent': True, 'expand_levels': 1, 'max_levels': 1 } maintopics = [] old_maintopics = portal.utSortObjsListByAttr( filter( lambda x: x is not None, map(lambda f, x: f(x, None), (portal.utGetObject, ) * len(portal.maintopics), portal.maintopics)), 'sortorder', 0) for path_ob in old_maintopics: maintopics.append(path_in_site(path_ob)) portal.maintopics = maintopics portal._p_changed = True return True
def single_tmpl(ob, person, portal, **kwargs): return {'subject': 'notifications', 'body_text': 'instant [%s] %s' % (path_in_site(ob), portal.title_or_id())}
def walk_site_subscriptions(self): return set((sub.user_id, path_in_site(obj), sub.notif_type, sub.lang) for obj, n, sub in walk_subscriptions(self.portal))
def path_in_site(self, obj): """ Return path relative to site root """ return path_in_site(obj)
def subscr(): return set((path_in_site(obj), sub.notif_type, sub.user_id) for obj, n, sub in walk_subscriptions(self.portal))
def initial_jstree_node(self, context): if self.relative: return path_in_site(context) else: return ""
def get_location(self): return path_in_site(self.get_context())