Пример #1
0
    def handleApply(self, action):
        """ Save (create or update) a tag
        """
        data, errors = self.extractData()
        if errors:
            self.status = self.formErrorsMessage
            return
        ajax = 'ajax' in self.request.form

        manager = IImageTagsManager(self.context)
        id, tag, new_tag = manager.save_tag(data)

        if not errors:
            #  Special treatment for ajax/non-ajax save
            if not ajax:
                if new_tag:
                    message = _(u"Tag '${title}' added.",
                                mapping={u'title': tag['title']})
                else:
                    message = _(u"Tag '${title}' updated.",
                                mapping={u'title': tag['title']})
                self.request.response.redirect('%s/@@imagetags-manage' %
                                               self.context.absolute_url())
                IStatusMessage(self.request).addStatusMessage(message,
                                                              type='info')
            else:
                # Return XML response
                self.request.response.redirect(
                    '%s/@@imagetags-newtag?id=%s' %
                    (self.context.absolute_url(), id))
Пример #2
0
 def __init__(self, context, request):
     self.context = aq_inner(context)
     self.request = request
     self.helper = getMultiAdapter((self.context, self.request),
                                   name="imagetags-helper")
     self.default_image = self.helper.image()
     self.manager = IImageTagsManager(self.context)
 def __call__(self, id):
     manager = IImageTagsManager(self.context)
     tag = manager.get_tag(id)
     image = getMultiAdapter((self.context, self.request),
                             name="imagetags-img")
     self.tag_id = id
     self.tag_box = '<![CDATA[%s]]>' % (image.tag_box(id=id, data=tag))
     self.tag_title = '<![CDATA[%s]]>' % (image.tag_title(id=id, data=tag))
     return self.index()
Пример #4
0
 def __init__(self, context, request):
     self.context = aq_inner(context)
     self.request = request
     self.embedded = True
     # Get tag manager to get sorted tags
     manager = IImageTagsManager(self.context)
     self.tags = manager.get_sorted_tags()
     # Get helper to get default image
     helper = getMultiAdapter((self.context, self.request),
                              name="imagetags-helper")
     self.default_image = helper.image()
     # Get settings from portal_registry for ImageTags
     registry = queryUtility(IRegistry)
     settings = registry.forInterface(IImageTagsSettings)
     self.iframe_enabled = settings.iframe_enabled
     self.taglist_height = settings.iframe_taglist_height
Пример #5
0
 def updateWidgets(self):
     """ If 'id' parameter is in the request set values for widgets based
         on the chosen tag. 
     """
     super(form.EditForm, self).updateWidgets()
     self._updateWidgets()
     request = self.request
     id_field = 'id'
     if id_field in request.form:
         id = request.form[id_field]
         manager = IImageTagsManager(self.context)
         tag = manager.get_tag(id)
         if not tag is None:
             for x in tag:
                 self.widgets[x].value = tag[x]
             self.widgets['id'].value = id
Пример #6
0
def migrate_1001_1010(context, logger=None):
    """ Replace all dots in tag ids with hyphens.
        This slightly enhances performance especially in JavaScript
        and also simplifies code
    """
    if logger is None:
        logger = logging.getLogger('collective.imagetags')

    catalog = getToolByName(context, 'portal_catalog')
    brains = catalog(object_provides=IImageWithTags.__identifier__)
    for brain in brains:
        object = brain.getObject()
        manager = IImageTagsManager(object)
        tags = manager.get_tags()
        for tag_id in tags:
            if '.' in tag_id:
                tag_data = tags[tag_id]
                tag_data['id'] = tag_id.replace('.', '-')
                manager.remove_tags(ids=[
                    tag_id,
                ])
                manager.save_tag(tag_data)

    logger.info('%s objects migrated with new tag ids' % len(brains))