Пример #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()
 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()
Пример #5
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
Пример #6
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
Пример #7
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
Пример #8
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
Пример #9
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))
Пример #10
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))
Пример #11
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))
Пример #12
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)
Пример #13
0
class ManageTags(BrowserView):
    """ Tag management browser view
    """
    
    implements(IManageTags)

    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):
        """ This browser view can be called in a get/post request to remove 
            existing tags.
        """
        request = self.request
        if 'form.widgets.remove' in request.form:
            ids = request.form['form.widgets.remove']
            removed = self.manager.remove_tags(ids=ids)
            
            if 'ajax' in request.form:
                request.response.setHeader('content-type', 'application/json; charset=utf-8')
                response_body = {'removed': [id.encode('utf-8') for id in ids]}
                response_http = json.dumps(response_body)
                request.response.setHeader('content-length', len(response_http))
                return response_http
            else:
                count_removed = len(removed)
                if count_removed==1:
                    message = _(u'${count} tag removed.', mapping={u'count': count_removed})
                elif count_removed>1:
                    message = _(u'${count} tags removed.', mapping={u'count': count_removed})
                if count_removed>0:
                    IStatusMessage(self.request).addStatusMessage(message, type='info')
   
                return self.index()
                
        else:
            return self.index()

    def url(self):
        """ This browser view url
        """
        return '%s/@@%s' % (self.context.absolute_url(), self.__name__)
         
            
    # The following methods are now provided by IImageTagsManager adapter
    def get_tag(self, id, create_on_fail=False):
        """ Get a given tag based on id.
            If create_on_fail = True, it will create a new placeholder (dictionary) if the tag is not found.
        """
        return self.manager.get_tag(id, create_on_fail)

    def get_tags(self):
        """ Get all tags
        """
        return self.manager.get_tags()
        
    def get_sorted_tags(self):
        """ Sorted list of tags
        """
        return self.manager.get_sorted_tags()
               
    def save_tag(self, data):
        """ Save a tag and create it (assigning an automatic id) if it's a new one
        """
        return self.manager.save_tag(data)
Пример #14
0
class ManageTags(BrowserView):
    """ Tag management browser view
    """

    implements(IManageTags)

    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):
        """ This browser view can be called in a get/post request to remove 
            existing tags.
        """
        request = self.request
        if 'form.widgets.remove' in request.form:
            ids = request.form['form.widgets.remove']
            removed = self.manager.remove_tags(ids=ids)

            if 'ajax' in request.form:
                request.response.setHeader('content-type',
                                           'application/json; charset=utf-8')
                response_body = {'removed': [id.encode('utf-8') for id in ids]}
                response_http = json.dumps(response_body)
                request.response.setHeader('content-length',
                                           len(response_http))
                return response_http
            else:
                count_removed = len(removed)
                if count_removed == 1:
                    message = _(u'${count} tag removed.',
                                mapping={u'count': count_removed})
                elif count_removed > 1:
                    message = _(u'${count} tags removed.',
                                mapping={u'count': count_removed})
                if count_removed > 0:
                    IStatusMessage(self.request).addStatusMessage(message,
                                                                  type='info')

                return self.index()

        else:
            return self.index()

    def url(self):
        """ This browser view url
        """
        return '%s/@@%s' % (self.context.absolute_url(), self.__name__)

    # The following methods are now provided by IImageTagsManager adapter
    def get_tag(self, id, create_on_fail=False):
        """ Get a given tag based on id.
            If create_on_fail = True, it will create a new placeholder (dictionary) if the tag is not found.
        """
        return self.manager.get_tag(id, create_on_fail)

    def get_tags(self):
        """ Get all tags
        """
        return self.manager.get_tags()

    def get_sorted_tags(self):
        """ Sorted list of tags
        """
        return self.manager.get_sorted_tags()

    def save_tag(self, data):
        """ Save a tag and create it (assigning an automatic id) if it's a new one
        """
        return self.manager.save_tag(data)