예제 #1
0
 def set_field_appstruct(self, values, notify = True, mark_modified = True):
     #Remove restricted keys, in case they're present
     #This might be changed to raise an error instead in time
     for restricted_key in RESTRICTED_KEYS:
         if restricted_key in values:
             del values[restricted_key]
     updated = set()
     for (k, v) in values.items():
         cur = self.get_field_value(k)
         if cur == v:
             continue
         self.set_field_value(k, v)
         updated.add(k)
     if updated:
         updated.add('searchable_text') #Just to make sure
         updated.add('allowed_to_view')
         if mark_modified and 'modified' not in values:
             #Don't update if modified is set, since it will override the value we're trying to set.
             self.mark_modified()
             updated.add('modified')
         if 'tags' not in updated:
             #Hack to fix text
             updated.add('tags')
         if notify:
             #FIXME: This hack can be removed when transformations are live
             #Currently we need to reindex whenever some fields have changed
             objectEventNotify(ObjectUpdatedEvent(self, changed=updated))
     return updated
예제 #2
0
    def test_content_not_updated_when_only_read(self):
        root = self._fixture()
        meeting = root['m']

        objectEventNotify(ObjectUpdatedEvent(meeting, indexes=('unread', )))

        adapter = self.config.registry.queryAdapter(meeting, ILogHandler)
        self.assertEqual(len(adapter.log_storage), 0)
예제 #3
0
def clear_unread_from_retracted_proposals(obj, event):
    if obj.get_workflow_state() != 'retracted':
        return
    reg = get_current_registry()
    unread = reg.queryAdapter(obj, IUnread)
    if unread and unread.unread_storage:
        unread.unread_storage.clear()
        objectEventNotify(ObjectUpdatedEvent(obj, indexes = ('unread',), metadata = False))
예제 #4
0
 def mark_as_read(self, userid):
     storage = self.unread_storage
     if userid in storage:
         storage.remove(userid)
         objectEventNotify(
             ObjectUpdatedEvent(self.context,
                                indexes=('unread', ),
                                metadata=False))
예제 #5
0
    def test_content_updated(self):
        root = self._fixture()
        meeting = root['m']

        objectEventNotify(ObjectUpdatedEvent(meeting))

        adapter = self.config.registry.queryAdapter(meeting, ILogHandler)
        self.assertEqual(len(adapter.log_storage), 1)
        self.assertEqual(adapter.log_storage[0].tags, ('updated', ))
예제 #6
0
 def reset_unread(self):
     try:
         del self.context.__unread_storage__
         objectEventNotify(
             ObjectUpdatedEvent(self.context,
                                indexes=('unread', ),
                                metadata=False))
     except AttributeError:  #If there is no __unread_storage__ we shouldn't do something
         pass
예제 #7
0
 def set_vote_data(self, value, notify=True):
     """ Set vote data """
     marker = object()
     current_val = self.get_vote_data(marker)
     if value == current_val:
         return
     self.__vote_data__ = value
     if notify:
         objectEventNotify(ObjectUpdatedEvent(self))
예제 #8
0
    def test_reindexed_on_update(self):
        meeting = createContent('Meeting')
        meeting.title = 'hello world'
        self.root['meeting'] = meeting

        query = self.query
        self.assertEqual(query("title == 'hello world'")[0], 1)

        self.root['meeting'].title = 'me and my little friends'
        #We'll have to kick the subscriber manually
        objectEventNotify(ObjectUpdatedEvent(self.root['meeting']))

        self.assertEqual(query("title == 'hello world'")[0], 0)
        self.assertEqual(query("title == 'me and my little friends'")[0], 1)
예제 #9
0
def _notify(context):
    """ Send notification for Like tag. This might change later since
        the index is for a specific tag rather than a general solution.
    """
    objectEventNotify(
        ObjectUpdatedEvent(context, indexes=('like_userids', ), metadata=True))
예제 #10
0
 def _notify(self):
     #Only update specific index?
     objectEventNotify(ObjectUpdatedEvent(self, metadata=True))