def handleSetDefault(self, action):
        data, errors = self.extractData()

        avatar = data['avatar']
        if not avatar:
            IStatusMessage(self.request).add(
                _('Please select avatar.'), 'warning')
        else:
            self.context.default = int(avatar)
            self.default = self.context.default
            IStatusMessage(self.request).add(
                _('Default avatar has been selected.'))
    def handleRemove(self, action):
        data, errors = self.extractData()

        avatar = data['avatar']
        if not avatar:
            IStatusMessage(self.request).add(
                _('Please select avatar.'), 'warning')
        else:
            ids = getUtility(IIntIds)
            ob = ids.queryObject(int(avatar))

            if ob is not None:
                del self.context[ob.__name__]
                IStatusMessage(self.request).add(_('Avatar has been removed.'))
                self.redirect('.')
    def handleUpload(self, action):
        data, errors = self.extractData()
        if errors:
            pass
        else:
            file = data['data']

            image = Image()
            image.data = file.data
            image.mimeType = file.mimeType

            if (image.width > self.container.maxWidth or
                image.height > self.container.maxHeight):
                try:
                    image.data = convert(
                        image.data, 'image/jpeg',
                        sourceMimetype = image.mimeType,
                        width = self.container.maxWidth,
                        height = self.container.maxHeight, quality=88)
                except ConverterException, err:
                    log = logging.getLogger('zojax.profile.avatar')
                    log.log(logging.WARNING, str(err))
                    IStatusMessage(self.request).add(err, 'error')
                    return

            if not data['title']:
                data['title'] = file.filename

            avatar = self.context.create(title=data['title'], data=image)
            self.context.add(avatar)
            IStatusMessage(self.request).add(_(u'Avatar sccessully uploaded.'))
            self.redirect('.')
    def update(self):
        configlet = getUtility(IProfilesCategory)

        request = self.request

        if 'form.button.add' in request:
            categories = list(configlet.fieldCategories)
            cat = request.get('form.widget.category', '')

            if not cat:
                IStatusMessage(request).add(
                    _('Please enter category title.'), 'warning')
            elif cat in categories:
                IStatusMessage(request).add(
                    _('Category already exists.'), 'warning')
            else:
                categories.append(cat)
                configlet.fieldCategories = categories
                IStatusMessage(request).add(_('Category has been added.'))
                self.redirect('.')

        elif 'form.button.remove' in request:
            cats = request.get('form.widget.categories', ())
            if not cats:
                IStatusMessage(request).add(
                    _('Please select categories.'), 'warning')
            else:
                categories = list(configlet.fieldCategories)
                for cat in cats:
                    if cat in categories:
                        categories.remove(cat)

                configlet.fieldCategories = categories
                IStatusMessage(request).add(_('Category has been removed.'))
                self.redirect('.')

        elif 'form.button.moveup' in request or \
                'form.button.movedown' in request:
            cats = request.get('form.widget.categories', ())
            if not cats:
                IStatusMessage(request).add(
                    _('Please select categories.'), 'warning')
            else:
                sign = 'form.button.moveup' in request and -1 or 1
                categories = list(configlet.fieldCategories)
                for cat in cats:
                    if cat in categories:
                        ind = categories.index(cat)
                        categories.remove(cat)
                        categories.insert(ind + sign, cat)

                configlet.fieldCategories = categories
                IStatusMessage(request).add(_('Category has been moved.'))
                self.redirect('.')

        elif 'form.button.sort' in request:
            categories = list(configlet.fieldCategories)
            categories.sort()
            configlet.fieldCategories = categories
            IStatusMessage(request).add(_('Categories has been sorted.'))
            self.redirect('.')

        self.categories = configlet.fieldCategories
        super(FieldCategories, self).update()
 def description(self):
     context = self.container
     return _(
         u'Create new avatar. Maximum size: ${width} x ${height} pixels.',
         mapping={'width': context.maxWidth, 'height': context.maxHeight})