コード例 #1
0
class RunLatexViewlet(ViewletForm):

    zope.interface.implements(IViewlet)

    label = _(u"Run LaTeX on all bibliographic items")

    info = _(
        u"This is a very expensive task. So you should only do it if it is really required."
    )

    ignoreContext = True

    prefix = 'RunLaTeX'

    def __init__(self, context, request, view, manager):
        """ See zope.viewlet.viewlet.ViewletBase"""
        self.__parent__ = view
        self.context = context
        self.request = request
        self.manager = manager

    fields = field.Fields()

    @button.buttonAndHandler(_(u"Run LaTeX"), name="runlatex")
    def handleRunlatex(self, action):
        for entry in self.context.values():
            if interfaces.IBiblatexEntry.providedBy(entry):
                setFormattedStrings(entry, object())
コード例 #2
0
class EditWizard(wizard.Wizard):

    zope.interface.implements(
        IEditWizard,
        ITabbedContentLayout,
    )

    label = _('zblx-editwizard-label', u"Edit Bibliographic Entry")

    def setUpSteps(self):
        return [
            step.addStep(self, 'entry_type', weight=1),
            step.addStep(self, 'required', weight=10),
            step.addStep(self, 'optional', weight=20),
            step.addStep(self, 'roles', weight=30),
            step.addStep(self, 'shortening', weight=40),
            step.addStep(self, 'sorting', weight=50),
            step.addStep(self, 'linking', weight=60),
            step.addStep(self, 'compat', weight=100),
            step.addStep(self, 'publication_facts', weight=25),
            step.addStep(self, 'general', weight=28),
        ]

    def OFFnextURL(self):
        return absoluteURL(self.context, self.request)
コード例 #3
0
class AddViewlet(ViewletForm):

    zope.interface.implements(IViewlet)

    ignoreContext = True

    @property
    def action(self):
        return absoluteURL(self.context,
                           self.request) + '/@@addBiblatexEntry.html'

    def __init__(self, context, request, view, manager):
        """ See zope.viewlet.viewlet.ViewletBase"""
        self.__parent__ = view
        self.context = context
        self.request = request
        self.manager = manager

    fields = field.Fields(interfaces.IBiblatexEntry).select('entry_type')

    @button.buttonAndHandler(_('Add Entry'), name='next')
    def handleNext(self, action):
        """ We won't see this action (except abuse) because the action
        url points to a different url."""
        data, errors = self.extractData()
        if errors:
            self.status = self.formErrorMessage
            return
コード例 #4
0
class OptionalStep(RequiredStep):

    step_flieds = 'optional'

    label = _('zblx-addwizard-optionalstep-label' u"Optional")

    more_fields_in_form = ()
コード例 #5
0
class SimpleAddForm(form.AddForm):
    """A very simple add form for entry type objects. """

    label = _('biblatexentry-simpleaddform-label', u"Add Entry")

    fields = field.Fields(interfaces.IBiblatexEntry).omit(
        'options', '__name__', '__parent__')

    def create(self, data):
        obj = zope.component.createObject(
            'quotationtool.biblatex.biblatexentry.BiblatexEntry')
        form.applyChanges(self, obj, data)

        # Grant the current user the Edit permission by assigning him
        # the quotationtool.Creator role, but only locally in the
        # context of the newly created object.
        manager = IPrincipalRoleManager(obj)
        manager.assignRoleToPrincipal('quotationtool.Creator',
                                      self.request.principal.id)

        return obj

    def add(self, obj):
        self._name = INameChooser(self.context).chooseName(None, obj)
        self.context[self._name] = self._obj = obj

    def nextURL(self):
        return absoluteURL(self._obj, self.request)
コード例 #6
0
class RequiredStep(step.Step):

    zope.interface.implements(IAddWizard)

    label = _('zblx-addwizard-requiredstep-label' u"Required")

    ignoreContext = True
    handleApplyOnNext = False

    step_flieds = 'required'

    # additional fields to setup
    more_fields = (
        'crossref',
        'xref',
        'hyphenation',
    )

    # additional fields to show up in form
    more_fields_in_form = more_fields

    @property
    def fields(self):
        helper_widget = zope.component.getMultiAdapter(
            (interfaces.IBiblatexEntry['entry_type'], self.request),
            IFieldWidget)
        helper_widget.name = self.prefix + 'widgets.entry_type'
        if not helper_widget.name in self.request.form:
            raise UserError(
                _("You have to choose an entry type. " +
                  unicode(helper_widget.name) + unicode(self.request.form)))
        helper_widget.update()
        _type = helper_widget.value[0]  # we get a list from request.form
        try:
            interfaces.IBiblatexEntry['entry_type'].validate(_type)
        except Exception:
            raise UserError(_("Invalid entry type."))
        self.type = getEntryTypeSafely(_type)
        flds = ('entry_type', )
        flds += getRequiredTuple(self.type.required)
        flds += getTuple(self.type.optional)
        flds += self.more_fields
        return field.Fields(interfaces.IBiblatexEntry).select(*flds)

    def updateWidgets(self):
        super(RequiredStep, self).updateWidgets()
        self.widgets['entry_type'].mode = HIDDEN_MODE
        if self.step_flieds == 'required':
            flds = getRequiredTuple(self.type.required)
        else:
            flds = getTuple(getattr(self.type, self.step_flieds, []))
        flds += self.more_fields_in_form
        for name in self.widgets.keys():
            if name not in flds:
                self.widgets[name].mode = HIDDEN_MODE
コード例 #7
0
 def fields(self):
     helper_widget = zope.component.getMultiAdapter(
         (interfaces.IBiblatexEntry['entry_type'], self.request),
         IFieldWidget)
     helper_widget.name = self.prefix + 'widgets.entry_type'
     if not helper_widget.name in self.request.form:
         raise UserError(
             _("You have to choose an entry type." +
               unicode(self.request.form)))
     helper_widget.update()
     _type = helper_widget.value[0]  # we get a list from request.form
     try:
         interfaces.IBiblatexEntry['entry_type'].validate(_type)
     except Exception:
         raise UserError(_("Invalid entry type."))
     self.type = getEntryTypeSafely(_type)
     flds = ('entry_type', )
     flds += getRequiredTuple(self.type.required)
     flds += getTuple(self.type.optional)
     flds += self.more_fields
     return field.Fields(interfaces.IBiblatexEntry).select(*flds)
コード例 #8
0
class AddWizard(wizard.Wizard):

    zope.interface.implements(IAddWizard)

    label = _('zblx-addwizard-label', u"Add bibliographic entry")

    ignoreContext = True

    def setUpSteps(self):
        return [
            step.addStep(self, 'Required', weight=10),
            step.addStep(self, 'Optional', weight=20),
        ]
コード例 #9
0
class EditOptionalStep(step.EditStep):

    zope.interface.implements(ITabbedContentLayout, IEditStep)

    label = _('zblx-editoptionalstep-label', u"Optional")

    _myflds = 'optional'

    @property
    def fields(self):
        _type = getEntryTypeSafely(getattr(self.context, 'entry_type'))
        flds = getTuple(getattr(_type, self._myflds))
        return field.Fields(interfaces.IBiblatexEntry).select(*flds)
コード例 #10
0
class BiblatexConfigViewlet(ViewletForm):

    label = _('biblatexconfig-label', u"BibLaTeX Configuration")

    mode = DISPLAY_MODE

    fields = field.Fields(interfaces.IBiblatexConfiguration)

    def getContent(self):
        config = zope.component.queryUtility(
            interfaces.IBiblatexConfiguration,
            context=self.context,
        )
        return config
コード例 #11
0
 def fields(self):
     # use a widget to get the entry type from the request
     helper_widget = zope.component.getMultiAdapter(
         (interfaces.IBiblatexEntry['entry_type'], self.request),
         IFieldWidget)
     helper_widget.name = self.prefix + 'widgets.entry_type'
     if helper_widget.name in self.request.form:
         helper_widget.update()
         _type = helper_widget.value[0]  # we get a list from request.form
         try:
             interfaces.IBiblatexEntry['entry_type'].validate(_type)
         except Exception:
             raise UserError(
                 _("Wrong entry type: ${TYPE}", mapping={'TYPE': _type}))
     else:
         _type = getattr(self.context, 'entry_type')
     self.type = getEntryTypeSafely(_type)
     flds = getRequiredTuple(self.type.required) + ('entry_type', )
     return field.Fields(interfaces.IBiblatexEntry).select(*flds)
コード例 #12
0
class EditRequiredStep(step.EditStep):
    """ Edit required field.

    We have to get the entry type ether from the request (from step 1)
    or from the context.

    We have to get that from the request: request.form =
    {u'form.widgets.entry_type-empty-marker': u'1',
    u'form.buttons.next': u'Next', u'form.widgets.entry_type':
    [u'Book']}
    """

    zope.interface.implements(ITabbedContentLayout, IEditStep)

    label = _('zblx-editrequiredstep-label', u"Required")

    @property
    def fields(self):
        # use a widget to get the entry type from the request
        helper_widget = zope.component.getMultiAdapter(
            (interfaces.IBiblatexEntry['entry_type'], self.request),
            IFieldWidget)
        helper_widget.name = self.prefix + 'widgets.entry_type'
        if helper_widget.name in self.request.form:
            helper_widget.update()
            _type = helper_widget.value[0]  # we get a list from request.form
            try:
                interfaces.IBiblatexEntry['entry_type'].validate(_type)
            except Exception:
                raise UserError(
                    _("Wrong entry type: ${TYPE}", mapping={'TYPE': _type}))
        else:
            _type = getattr(self.context, 'entry_type')
        self.type = getEntryTypeSafely(_type)
        flds = getRequiredTuple(self.type.required) + ('entry_type', )
        return field.Fields(interfaces.IBiblatexEntry).select(*flds)

    def update(self):
        super(EditRequiredStep, self).update()
        self.widgets['entry_type'].mode = HIDDEN_MODE
コード例 #13
0
class EditEntryTypeStep(step.Step):
    """ Step for changing the entry type. This is a bit complicated,
    because we do not want to get an ivalid object after changing the
    entry type. So we don't apply the change to the object, but
    send the form data to the required step.

    We don't want the Apply button in this step, so we do not inherit
    form EditStep.
    """

    zope.interface.implements(ITabbedContentLayout, IEditStep)

    handleApplyOnNext = False

    label = _('zblx-editentrytypestep-label', u"Entry Type")

    fields = field.Fields(interfaces.IBiblatexEntry['entry_type'])

    @property
    def action(self):
        # we send it to the edit required step
        return absoluteURL(self.context,
                           self.request) + '/@@edit.html/required'
コード例 #14
0
class EditPublicationFactsStep(EditOptionalStep):

    label = _('zblx-editpublicationfactsstep-label', u"Publication Facts")

    _myflds = 'publication_facts'
コード例 #15
0
 def label(self):
     # TODO: translate this message instead of using the default
     _type = self.type.title.default
     return _('zblx-addrequiredform-label',
              u"Add '$TYPE' entry.",
              mapping={'TYPE': _type})
コード例 #16
0
class EditShorteningStep(EditOptionalStep):

    label = _('zblx-editshorteningstep-label', u"Shortening")

    _myflds = 'shortening'
コード例 #17
0
class EditSortingStep(EditOptionalStep):

    label = _('zblx-editsortingstep-label', u"Sorting")

    _myflds = 'sorting'
コード例 #18
0
class EditLinkingStep(EditOptionalStep):

    label = _('zblx-editlinkingstep-label', u"Linking")

    _myflds = 'linking'
コード例 #19
0
class EditCompatStep(EditOptionalStep):

    label = _('zblx-editcompatstep-label', u"Compat")

    _myflds = 'compat'
コード例 #20
0
class EditGeneralStep(EditOptionalStep):

    label = _('zblx-editgeneralstep-label', u"General")

    _myflds = 'general'
コード例 #21
0
class EditRolesStep(EditOptionalStep):

    label = _('zblx-editrolesstep-label', u"Roles")

    _myflds = 'roles'