class OAuthControlPanelForm(RegistryEditForm):
    # A form with two subforms
    # 1. a small form to add new configurations
    #    - handle create
    # 2. a form with one group form for each existing configuration
    #    - handle edit and delete

    form.extends(RegistryEditForm)

    template = ViewPageTemplateFile('controlpanel.pt')

    # no schema needed to drive this form
    schema = None

    # part 1 of the form (part 2 is this form itself)
    addform = None

    def __init__(self, context, request):
        super(OAuthControlPanelForm, self).__init__(context, request)
        self.addform = CreateNewForm(context, request)

    def getContent(self):
        # TODO: there is something borked with setting ignoreContext
        #       when I hit save it tries to persist the fields in this form
        #       to whatever is returned here (None causes troubles which
        #       should be fine for a from with ignoreContext=True)
        return {}

    def updateFields(self):
        super(OAuthControlPanelForm, self).updateFields()
        # This is the place to add groups.
        #    superclass groups have been created now,
        #    and it won't mess with ours.
        #    we can also add GroupFactory here, because update
        #    will take care of it
        registry = getUtility(IRegistry)
        coll = registry.collectionOfInterface(IOAuth1Settings, check=False)
        groups = []
        for rid, record in coll.items():
            # TODO: prefix of record id?
            subform = OAuth1EditForm(record, self.request, self)
            subform.label = record.title or record.id or rid
            locate(subform, self, record.id or rid)
            groups.append(subform)
        coll = registry.collectionOfInterface(IOAuth2Settings, check=False)
        for rid, record in coll.items():
            # TODO: prefix of record id?
            subform = OAuth2EditForm(record, self.request, self)
            subform.label = record.title or record.id or rid
            locate(subform, self, record.id or rid)
            groups.append(subform)
        self.groups += tuple(groups)

    def update(self):
        self.addform.update()
        # TODO check response for shortcut (if addform.update
        #      executed it's action the response is probably
        #      already set to redirect?)
        super(OAuthControlPanelForm, self).update()
class StoryEditQuickForm(EditQuickForm):
    form.extends(EditQuickForm)

    fields = field.Fields(IQuickForm) + field.Fields(IStory).select(
        'text',
        'estimate',
        'assigned_to'
    )
Beispiel #3
0
class Add(add.DefaultAddForm):
    """
    Add Experiment
    """

    template = ViewPageTemplateFile("experiment_add.pt")

    extends(view.DefaultView,
            ignoreButtons=True)

    buttons = button.Buttons(add.DefaultAddForm.buttons['cancel'])

    @button.buttonAndHandler(_('Create and start'), name='save')
    def handleAdd(self, action):
        data, errors = self.extractData()
        self.validateAction(data)
        if errors:
            self.status = self.formErrorsMessage
            return
        # TODO: this is prob. a bug in base form, because createAndAdd
        #       does not return the wrapped object.
        obj = self.createAndAdd(data)
        if obj is None:
            # TODO: this is probably an error here?
            #       object creation/add failed for some reason
            return
        # get wrapped instance fo new object (see above)
        obj = self.context[obj.id]
        # mark only as finished if we get the new object
        self._finishedAdd = True
        IStatusMessage(self.request).addStatusMessage(_(u"Item created"),
                                                      "info")
        # auto start job here
        jt = IJobTracker(obj)
        msgtype, msg = jt.start_job(self.request)
        if msgtype is not None:
            IStatusMessage(self.request).add(msg, type=msgtype)

    @button.buttonAndHandler(_('Create'), name='create')
    def handleCreate(self, action):
        data, errors = self.extractData()
        self.validateAction(data)
        if errors:
            self.status = self.formErrorsMessage
            return
        # TODO: this is prob. a bug in base form, because createAndAdd
        #       does not return the wrapped object.
        obj = self.createAndAdd(data)
        if obj is None:
            # TODO: this is probably an error here?
            #       object creation/add failed for some reason
            return
        # get wrapped instance fo new object (see above)
        obj = self.context[obj.id]
        # mark only as finished if we get the new object
        self._finishedAdd = True
        IStatusMessage(self.request).addStatusMessage(_(u"Item created"),
                                                      "info")
Beispiel #4
0
class EditHostForm(EditForm):
    """ Edit form for host """
    form.extends(form.EditForm)
    label = _(u'Host Edit Form')
    factory = Host
    omitFields = HostDetails.omit_editfields
    fields = fieldsForFactory(factory, omitFields)
    fields['isTemplate'].widgetFactory = \
        checkbox.SingleCheckBoxFieldWidget
Beispiel #5
0
class EditForm(form.EditForm):
    extends(form.EditForm)

    grok.context(IFearture)
    grok.require('zope2.View')
    fields = field.Fields(IFearture)
    label = _(u"modify standard parameters for Plotting the figure")

    fields['coordination'].widgetFactory = DataGridFieldFactory
Beispiel #6
0
class DateManagementView(form.EditForm):
    label = _("Set the date for the school")
    template = ViewPageTemplateFile('date_management.pt')

    form.extends(form.EditForm)
    fields = field.Fields(IDateManager)

    def updateActions(self):
        super(DateManagementView, self).updateActions()
        self.actions['apply'].addClass('button-ok')
Beispiel #7
0
class Edit(mars.form.FormView, layout.FormLayoutSupport, form.EditForm):
    form.extends(form.EditForm)
    label = u'Message Edit Form'
    fields = field.Fields(IMessage)

    @button.buttonAndHandler(u'Apply and View', name='applyView')
    def handleApplyView(self, action):
        self.handleApply(self, action)
        if not self.widgets.errors:
            url = absoluteURL(self.context, self.request)
            self.request.response.redirect(url)
class IamIsearchSettingsEditForm(RegistryEditForm):

    form.extends(RegistryEditForm)
    schema = IIamIsearchSettings
    label = _(u"I am / I search settings")

    def updateFields(self):
        super(IamIsearchSettingsEditForm, self).updateFields()

    def updateWidgets(self):
        super(IamIsearchSettingsEditForm, self).updateWidgets()
Beispiel #9
0
class HelloWorldEditForm(EditForm):
    grok.context(message.HelloWorld)
    form.extends(form.EditForm)
    label = u'Hello World Message Edit Form'
    fields = field.Fields(interfaces.IHelloWorld)

    @button.buttonAndHandler(u'Apply and View', name='applyView')
    def handleApplyView(self, action):
        self.handleApply(self, action)
        if not self.widgets.errors:
            url = absoluteURL(self.context, self.request)
            self.request.response.redirect(url)
Beispiel #10
0
class Edit(mars.form.FormView, layout.FormLayoutSupport, group.GroupForm,
           form.EditForm):
    """Edit form for site"""
    grok.name('edit')
    grok.require(permissions.MANAGECONTENT)
    form.extends(form.EditForm)
    label = _('Edit Metadata for the site.')
    groups = (ContentMetaDataGroup, )

    @button.buttonAndHandler(u'Apply and View', name='applyView')
    def handleApplyView(self, action):
        self.handleApply(self, action)
        if not self.widgets.errors:
            url = absoluteURL(self.context, self.request)
            self.request.response.redirect(url)
class SettingsPanelForm(RegistryEditForm):
    """
    Define form logic
    """
    form.extends(RegistryEditForm)
    schema = ISettings
    fields = field.Fields(ISettingsDefault)
    groups = (FormVectorizer, FormClustering)

    @button.buttonAndHandler(_(u"Compute"), name='compute')
    def handleCompute(self, action):
        model = ILearningModel(self.context)

        # pr = cProfile.Profile()
        # pr.enable()
        self.status = model.compute()
Beispiel #12
0
class EditForm(layout.FormLayoutSupport, form.EditForm):
    """ Edit form """

    form.extends(form.EditForm)
    label = _(u'Edit Superclass')
    factory = Superclass
    omitFields = SuperclassDetails.omit_editfields
    fields = fieldsForFactory(factory, omitFields)
    
    def update(self):
        """ check for necessary permissions
        """
        for field_name in self.fields.keys():
            if not canWrite(self.context, field_name):
                print "delete: %s from %s" % (field_name, self.context)
                del self.fields[field_name]
        super(form.EditForm, self).update()

    def applyChanges(self, data):
        content = self.getContent()
        changes = applyChanges(self, content, data)
        # ``changes`` is a dictionary; if empty, there were no changes
        if changes:
            # Construct change-descriptions for the object-modified event
            descriptions = []
            for interface, attrs in changes.items():
                if interface == IAdmUtilEvent:
                    #print "##### Event #######"
                    pass
                elif IEventIfSuperclass.isEqualOrExtendedBy(interface):
                    #print "##### Superclass #######"
                    pass
                names = attrs.keys()
                #for attr in attrs:
                    #print "attr: %s (I:%s)" % (attr, interface)
                    #print "   old: ", attrs[attr]['oldval']
                    #print "   new: ", attrs[attr]['newval']
                descriptions.append(Attributes(interface, *names))
            # Send out a detailed object-modified event
            zope.event.notify(ObjectModifiedEvent(content, *descriptions))
        # workaround for gocept.objectquery
        import transaction
        transaction.savepoint()
        return changes
Beispiel #13
0
class OpengraphControlpanelForm(extensible.ExtensibleForm, form.EditForm):
    successMessage = _(u'Data successfully updated.')
    noChangesMessage = _(u'No changes were applied.')
    formErrorsMessage = _(u"There were some errors.")

    form.extends(form.EditForm, ignoreButtons=True)
    fields = field.Fields(IOpengraphSettings)
    label = _(u'Configure Collective Opengraph')

    def __init__(self, context, request):
        super(OpengraphControlpanelForm, self).__init__(context, request)
        self.ptool = getToolByName(self.context, 'plone_utils')

    @button.buttonAndHandler(_(u'Apply'), name='apply')
    def handle_apply(self, action):
        data, errors = self.extractData()
        if errors:
            self.status = self.formErrorsMessage
            return
        registry = getUtility(IRegistry)
        settings = registry.forInterface(IOpengraphSettings, check=False)
        IAnnotations(
            self.context)['old_content_types'] = settings.content_types

        changes = self.applyChanges(data)
        if changes:
            self.status = self.successMessage
            if not self.context.restrictedTraverse(
                    '@@opengraph_sitewide_enabled')():
                notify(OpengraphSettingsEvent(self.context, data))
        else:
            self.status = self.noChangesMessage

        self.ptool.addPortalMessage(self.status, 'info')
        self.request.response.redirect(self.back_link)

    @button.buttonAndHandler(_(u'Cancel'), name='cancel')
    def handle_cancel(self, action):
        self.ptool.addPortalMessage(self.noChangesMessage, 'info')
        self.request.response.redirect(self.back_link)

    @property
    def back_link(self):
        return back_to_controlpanel(self)['url']
Beispiel #14
0
class ImportAllXlsDataForm(layout.FormLayoutSupport, form.Form):
    """ Import all objects """

    form.extends(form.Form)
    label = _(u"Import all XLS data")
    fields = field.Fields(IImportXlsData)

    def getTitle(self):
        """this title will be displayed in the head of form"""
        return u"aaa"

    @button.buttonAndHandler(u'Submit')
    def handleSubmit(self, action):
        """submit was pressed"""
        supervisor = getUtility(IAdmUtilSupervisor, name='AdmUtilSupervisor')
        if 'xlsdata' in self.widgets:
            codepage = self.widgets['codepage'].value[0]
            fileWidget = self.widgets['xlsdata']
            fileUpload = fileWidget.extract()
            filename = datetime.now().strftime('in_%Y%m%d%H%M%S.xls')
            f_handle, f_name = tempfile.mkstemp(filename)
            outf = open(f_name, 'wb')
            outf.write(fileUpload.read())
            outf.close()
            try:
                supervisor.importAllXlsData(self.request, f_name, codepage)
            finally:
                os.remove(f_name)
        url = absoluteURL(self.context, self.request)
        self.request.response.redirect(url)

    @button.buttonAndHandler(u'Cancel')
    def handleCancel(self, action):
        """cancel was pressed"""
        url = absoluteURL(self.context, self.request)
        self.request.response.redirect(url)

    def update(self):
        """update all widgets"""
        #if ISuperclass.providedBy(self.context):
        #self.label = self.getTitle()
        form.Form.update(self)
Beispiel #15
0
class FieldDescriptionEditView(form.EditForm):
    """Edit form for basic person."""
    form.extends(form.EditForm)
    template = ViewPageTemplateFile('templates/person_add.pt')
    fields = field.Fields(IFieldDescription).omit('name')

    @button.buttonAndHandler(_("Cancel"))
    def handle_cancel_action(self, action):
        url = absoluteURL(self.context, self.request)
        self.request.response.redirect(url)

    def updateActions(self):
        super(FieldDescriptionEditView, self).updateActions()
        self.actions['apply'].addClass('button-ok')
        self.actions['cancel'].addClass('button-cancel')

    @property
    def label(self):
        return _(u'Change information for ${field_title}',
                 mapping={'field_title': self.context.title})
Beispiel #16
0
class DatasetEditView(DatasetFieldMixin, DefaultEditForm):

    # kw: ignoreFields, ignoreButtons, ignoreHandlers
    form.extends(DefaultEditForm, ignoreFields=True)

    @property
    def additionalSchemata(self):
        for schema in super(DatasetFieldMixin, self).additionalSchemata:
            yield schema
        for schema in self.getGenreSchemata():
            yield schema

    # TODO: do this only for zipped files
    @button.buttonAndHandler(u'Edit File Details', name='edit_file_metadata')
    def handleEditFileMetadata(self, action):
        # do whatever here and redirect to metadata edit view
        # TODO: use restrictedTraverse to check security as well?
        #       (would avoid login page)
        url = self.context.absolute_url() + '/@@editfilemetadata'
        self.request.response.redirect(url)
Beispiel #17
0
class ContactEditView(form.EditForm):
    """Edit form for basic contact."""
    form.extends(form.EditForm)
    template = ViewPageTemplateFile('templates/contact_add.pt')
    fields = field.Fields(IContact)

    formErrorsMessage = _('Please correct the marked fields below.')

    @button.buttonAndHandler(_("Cancel"))
    def handle_cancel_action(self, action):
        url = absoluteURL(self.context, self.request)
        self.request.response.redirect(url)

    def update(self):
        super(ContactEditView, self).update()
        self.subforms = []
        for relationship_info in self.context.persons.all().relationships:
            subform = ContactPersonInfoSubForm(self.context, self.request,
                                               self, relationship_info)
            # XXX: should also apply at least urllib.quote here:
            prefix = unicode(
                relationship_info.target.__name__).encode('punycode')
            subform.prefix += '.%s' % prefix
            subform.update()
            # One more hack.
            if subform.changed and self.status == self.noChangesMessage:
                self.status = self.successMessage
            self.subforms.append(subform)

    def updateActions(self):
        super(ContactEditView, self).updateActions()
        self.actions['apply'].addClass('button-ok')
        self.actions['cancel'].addClass('button-cancel')

    @property
    def label(self):
        return _(u'Change contact information for ${person}',
                 mapping={'person': self.context.title})
Beispiel #18
0
class ImportCsvDataComponentForm(layout.FormLayoutSupport, form.Form):
    """ Delete the net """

    form.extends(form.Form)
    label = _(u"Import CSV data")
    fields = field.Fields(IImportCsvData)

    def getTitle(self):
        """this title will be displayed in the head of form"""
        return u"aaa"

    @button.buttonAndHandler(u'Submit')
    def handleSubmit(self, action):
        """submit was pressed"""
        if 'csvdata' in self.widgets:
            fileWidget = self.widgets['csvdata']
            fileUpload = fileWidget.extract()
            reader = csv.reader(fileUpload.readlines(),
                                delimiter=';',
                                quoting=csv.QUOTE_NONNUMERIC)


#            for row in reader:
#                print '> ', row
        url = absoluteURL(self.context, self.request)
        self.request.response.redirect(url)

    @button.buttonAndHandler(u'Cancel')
    def handleCancel(self, action):
        """cancel was pressed"""
        url = absoluteURL(self.context, self.request)
        self.request.response.redirect(url)

    def update(self):
        """update all widgets"""
        #if ISuperclass.providedBy(self.context):
        #self.label = self.getTitle()
        form.Form.update(self)
Beispiel #19
0
class AllFieldsForm(mars.form.FormView, form.EditForm):
    """A form showing all fields."""
    grok.name('widgets')
    grok.context(zope.interface.Interface)

    form.extends(form.EditForm)
    fields = field.Fields(interfaces.IAllFields).omit('dictField',
                                                      'objectField')
    fields['checkboxBoolField'].widgetFactory = \
        checkbox.SingleCheckBoxFieldWidget

    buttons = form.EditForm.buttons + \
              button.Buttons(
                 button.ImageButton(name='pressme', image=u'pressme.png')
                 )

    label = 'Widgets Demo'

    @button.handler(buttons['pressme'])
    def handlePressMe(self, action):
        self.status = u'Press me was clicked!'

    def getContent(self):
        return interfaces.IAllFields(self.context)

    def updateWidgets(self):
        self.widgets = zope.component.getMultiAdapter(
            (self, self.request, self.getContent()), IWidgets)
        self.widgets.update()
        self.widgets['hiddenField'].mode = HIDDEN_MODE
        self.widgets['promptChoiceField'].prompt = True
        self.widgets['promptChoiceField'].update()

    def __call__(self):
        self.update()
        layout = zope.component.getMultiAdapter((self, self.request),
                                                ILayoutTemplate)
        return layout(self)
Beispiel #20
0
class AddForm(layout.FormLayoutSupport, form.AddForm):
    """Add form."""

    form.extends(form.AddForm)
    label = _(u'Add Superclass')
    factory = Superclass
    omitFields = SuperclassDetails.omit_addfields
    fields = fieldsForFactory(factory, omitFields)

    def nextURL(self):
        """ forward the browser """
        return absoluteURL(self.context[self._newObjectID],
                           self.request)

    def create(self, data):
        """ will create the object """
        obj = self.factory(**data)
        self.newdata = data
        IBrwsOverview(obj).setTitle(data['ikName'])
        obj.__post_init__()
        return obj
    
    def add(self, obj):
        """ will store the new one in object tree """
        travp = self.context
        # store obj id for nextURL()
        self._newObjectID = obj.objectID
        while IPagelet.providedBy(travp):
            travp = self.context.__parent__
        travp[obj.objectID] = obj
        if hasattr(obj, "store_refs"):
            obj.store_refs(**self.newdata)
        # workaround for gocept.objectquery
        #import transaction
        #transaction.savepoint()
        return obj
Beispiel #21
0
class DeleteForm(layout.FormLayoutSupport, form.Form):
    """ Delete the net """
    
    form.extends(form.Form)
    label = _(u"Delete this object?")
    
    def getTitle(self):
        """this title will be displayed in the head of form"""
        return _(u"Delete this object: '%s'?") % \
               IBrwsOverview(self.context).getTitle()
        
    @button.buttonAndHandler(u'Delete')
    def handleDelete(self, action):
        """delete was pressed"""
        if ISuperclass.providedBy(self.context):
            parent = self.context.__parent__
            del parent[self.context.objectID]
            self.deleted = True
            self.context = parent
            url = absoluteURL(parent, self.request)
            self.request.response.redirect(url)
            # workaround for gocept.objectquery
            import transaction
            transaction.savepoint()

    @button.buttonAndHandler(u'Cancel')
    def handleCancel(self, action):
        """cancel was pressed"""
        url = absoluteURL(self.context, self.request)
        self.request.response.redirect(url)

    def update(self):
        """update all widgets"""
        if ISuperclass.providedBy(self.context):
            self.label = self.getTitle()
        form.Form.update(self)
Beispiel #22
0
class SettingsEditForm(RegistryEditForm):

    form.extends(RegistryEditForm)
    schema = ISettings
class GeolocationDefaultControlPanelForm(RegistryEditForm):
    form.extends(RegistryEditForm)
    schema = IGeolocationDefaults
    id = "geolocation-defaults"
    label = _("Geolocation default")
Beispiel #24
0
class EditHostForm(EditForm):
    """ Edit form for host """
    form.extends(form.EditForm)
    label = _(u'VMware ESX Server Edit Form')
    fields = field.Fields(IHostVMwareEsx).omit(*HostDetails.omit_editfields)
Beispiel #25
0
class ControlPanelForm(RegistryEditForm):

    form.extends(RegistryEditForm)
    schema = ITilesControlPanel
    label = _(u"Tiles default settings")
    description = _(u'Default settings to use for all tiles.')
Beispiel #26
0
class EditHostForm(EditForm):
    """ Edit form for host """
    form.extends(form.EditForm)
    label = _(u'Host Edit Form')
    fields = field.Fields(IHost).omit(*HostDetails.omit_editfields)
Beispiel #27
0
class RabbitMQClientControlPanelForm(RegistryEditForm):
    """RabbitMQClientControlPanelForm."""

    form.extends(RegistryEditForm)
    schema = IRabbitMQClientSettings
class SettingsControlPanelForm(RegistryEditForm):

    form.extends(RegistryEditForm)
    schema = IMobileThemingSettings
Beispiel #29
0
class TASettingControlPanelForm(RegistryEditForm):
    form.extends(RegistryEditForm)
    schema = ITASetting
class BasicInformControlPanelForm(RegistryEditForm):
    form.extends(RegistryEditForm)
    schema = IInform