def set_data(self, data):
        assert self.folder
        assert self.form_fields
        assert self.versionForChange
        assert self.auditor
        assert data

        nvId = new_version_id()
        while nvId in self.folder.objectIds():
            nvId = new_version_id()
        newVersion = new_version(self.folder, nvId)
        fields = self.form_fields.omit('id', 'parentVersion',
          'editor', 'creationDate')
        form.applyChanges(newVersion, fields, data)
        newVersion.parentVersion = to_ascii(self.versionForChange.id)
        userInfo = createObject('groupserver.LoggedInUser',
          self.folder)
        newVersion.editor = to_unicode_or_bust(userInfo.id)

        i, s = self.get_auditDatums(self.versionForChange,
          newVersion)
        self.auditor.info(EDIT_CONTENT, i, s)

        # Handle publishing here
        if data['published']:
            self.folder.published_revision = newVersion.id
        self.status = '%s %s' % \
          ('Published' if data['published'] else 'Changed',
           data['title'])
        assert self.status
예제 #2
0
 def submit(self, action, data):
     """
     """
     wvconfig = IWeblogConfiguration(self.context)
     form.applyChanges(wvconfig, self.form_fields, data)
     msg = _(u'Configuration saved.')
     IStatusMessage(self.request).addStatusMessage(msg, type='info')
예제 #3
0
    def createAndAdd(self, data):
        domain_model = self.domain_model
        # create the object, inspect data for constructor args
        try:
            ob = createInstance(domain_model, data)
        except TypeError:
            ob = domain_model()

        # apply any context values
        self.finishConstruction(ob)

        # apply extra form values
        form.applyChanges(ob, self.form_fields, data, self.adapters)

        # save the object, id is generated by db on flush
        self.context[""] = ob

        # flush so we have database id
        bungeni.alchemist.Session().flush()

        # fire an object created event
        notify(ObjectCreatedEvent(ob))

        # signal to add form machinery to go to next url
        self._finished_add = True

        mapper = orm.object_mapper(ob)

        # TODO single primary key (need changes to base container)
        oid = mapper.primary_key_from_instance(ob)

        # retrieve the object with location and security information
        return self.context[oid]
예제 #4
0
 def create(self, data):
     query = createObject(u"collective.cmisquery.CMISQuery")
     content = self.context.add(query)
     # We need to add the content before editing it, in order to
     # have a working reference: we would get not yet overwise.
     applyChanges(content, self.form_fields, data)
     return content
    def set_data(self, data):
        assert self.folder
        assert self.form_fields
        assert self.versionForChange
        assert self.auditor
        assert data

        nvId = new_version_id()
        while nvId in self.folder.objectIds():
            nvId = new_version_id()
        newVersion = new_version(self.folder, nvId)
        fields = self.form_fields.omit('id', 'parentVersion', 'editor',
                                       'creationDate')
        form.applyChanges(newVersion, fields, data)
        newVersion.parentVersion = to_ascii(self.versionForChange.id)
        userInfo = createObject('groupserver.LoggedInUser', self.folder)
        newVersion.editor = to_unicode_or_bust(userInfo.id)

        i, s = self.get_auditDatums(self.versionForChange, newVersion)
        self.auditor.info(EDIT_CONTENT, i, s)

        # Handle publishing here
        if data['published']:
            self.folder.published_revision = newVersion.id
        self.status = '%s %s' % \
          ('Published' if data['published'] else 'Changed',
           data['title'])
        assert self.status
예제 #6
0
    def createAndAdd(self, data):
        # use aq_inner, or else the obj will be wrapped in this view,
        # will screw up acquired security settings (esp. local roles)
        context = aq_inner(self.context)
        plone_utils = getToolByName(context, 'plone_utils')
        list_id = plone_utils.normalizeString(data['title'])

        context.invokeFactory(self.portal_type, list_id)
        list_ob = context._getOb(list_id)

        old_list_type = list_ob.list_type.list_marker
        new_list_type = data.get('list_type').list_marker

        form.applyChanges(list_ob, self.form_fields, data)

        # ensure correct role is set for users
        self._assign_local_roles_to_managers(list_ob)
        
        # XXX this ObjectCreatedEvent event would normally come before
        # the ObjectAddedEvent
        notify(zope.app.event.objectevent.ObjectCreatedEvent(list_ob))
        notify(ListTypeChanged(list_ob, old_list_type, new_list_type))
        self._finished_add = True

        status = IStatusMessage(self.request)
        status.addStatusMessage(_('Mailing list added.'), type=u'info')

        self._next_url = list_ob.absolute_url()

        return list_ob
예제 #7
0
    def handle_create_shipment( self, action, data ):
        items = self.selection_column.getSelected( self.line_items, self.request )
        if not items:
            self.status = _(u"Please Select Items to Ship")
            return
        
        o_shipment = shipment.Shipment()
        
        order = self.context._object
        # this gets attached normally via the warehouse
        # event subscriber, we do it lazy here for existing orders
        if getattr( order, 'shipments', None) is None:
            order.shipments = shipment.OrderShipments()

        # modify shipment with supplied form fields
        adapters = { IShipment : o_shipment }
        form.applyChanges( None, self.form_fields, data, adapters )

        # store shipment
        sid = str( len( order.shipments ) + 1 )
        order.shipments[ sid ] = o_shipment

        # populate shipment with items
        for i in items:
            o_shipment[ i.item_id ] = i.clone()
            i.fulfillment_workflow.fireTransition('ship')

        # attempt to transition order
        self.transitionOrder()

        # clear manager item cache and fetch
        self.status = _(u"Shipment Created")
        self.update()
예제 #8
0
 def create(self, data):
     query = createObject(u"collective.cmisquery.CMISQuery")
     content = self.context.add(query)
     # We need to add the content before editing it, in order to
     # have a working reference: we would get not yet overwise.
     applyChanges(content, self.form_fields, data)
     return content
    def createAndAdd(self, data):
        # use aq_inner, or else the obj will be wrapped in this view,
        # will screw up acquired security settings (esp. local roles)
        context = aq_inner(self.context)
        plone_utils = getToolByName(context, 'plone_utils')
        list_id = plone_utils.normalizeString(data['title'])

        context.invokeFactory(self.portal_type, list_id)
        list_ob = context._getOb(list_id)

        old_list_type = list_ob.list_type.list_marker
        new_list_type = data.get('list_type').list_marker

        form.applyChanges(list_ob, self.form_fields, data)

        # ensure correct role is set for users
        self._assign_local_roles_to_managers(list_ob)
        
        # XXX this ObjectCreatedEvent event would normally come before
        # the ObjectAddedEvent
        notify(zope.app.event.objectevent.ObjectCreatedEvent(list_ob))
        notify(ListTypeChanged(list_ob, old_list_type, new_list_type))
        self._finished_add = True

        status = IStatusMessage(self.request)
        status.addStatusMessage(_('Mailing list added.'), type=u'info')

        self._next_url = list_ob.absolute_url()

        return list_ob
예제 #10
0
파일: browser.py 프로젝트: eea/eea.google
 def create(self, data):
     """ Create
     """
     name = INameChooser(self.context).chooseName(data.get('title', ''),
                                                  None)
     ob = AnalyticsReport(id=name)
     applyChanges(ob, self.form_fields, data)
     return ob
예제 #11
0
 def add_profile_attributes(self, userInfo, data):
     addFields = AddFields(self.context)
     enforce_schema(userInfo.user, addFields.profileInterface)
     f = form.Fields(addFields.adminInterface, render_context=False)
     fields = f.select(*addFields.profileFieldIds)
     for field in fields:
         field.interface = addFields.profileInterface
     form.applyChanges(userInfo.user, fields, data)
예제 #12
0
파일: browser.py 프로젝트: avoinea/stiamro
    def create(self, data):
        ob = NewsItem()

        title = data.get('title', 'stire')
        uid = INameChooser(self.context).chooseName(title, ob)
        setattr(ob, '_tmp_id', uid)
        applyChanges(ob, self.form_fields, data)
        return ob
    def add_profile_attributes(self, userInfo, data):
        enforce_schema(userInfo.user, self.inviteFields.profileInterface)
        fields = self.form_fields.select(*self.inviteFields.profileFieldIds)
        for field in fields:
            field.interface = self.inviteFields.profileInterface

        form.applyChanges(userInfo.user, fields, data)
        # wpb: Why not use self.set_delivery?
        set_digest(userInfo, self.groupInfo, data)
예제 #14
0
 def handle_change(self, action, data):
     ctx = get_the_actual_instance_from_zope(self.context)
     form.applyChanges(ctx, self.form_fields, data)
     auditor = ChangeAuditor(ctx)
     auditor.info(CHANGE, str(len(data['introduction'])))
     self.status = _(
         'change-success',
         'The introduction text that appears on '
         '<a href="/">the site homepage</a> has been '
         'changed.')
예제 #15
0
파일: browser.py 프로젝트: avoinea/stiamro
    def create(self, data):
        ob = Server()
        url = data.get('url')
        data = self._discover(url)

        domain = self._get_id(url)
        uid = INameChooser(self.context).chooseName(domain, ob)
        setattr(ob, '_tmp_id', uid)
        applyChanges(ob, self.form_fields, data)
        return ob
예제 #16
0
 def handle_add_warehouse( self, action, data ):
     adapters = { interfaces.IWarehouse : warehouse.Warehouse(),
                  interfaces.IAddress   : Address() }
                  
     form.applyChanges( self.context, self.form_fields, data, adapters )
     
     container = component.getUtility( interfaces.IWarehouseContainer )
     w = adapters[ interfaces.IWarehouse ]
     w.location = adapters[ interfaces.IAddress ]
     container[ w.name ] = w
     self.request.response.redirect('@@pgp-view-warehouse?wid=%s'% w.name )
예제 #17
0
 def handle_edit_save_and_view(self, action, data):
     """Saves the  document and redirects to its view page"""
     for key in data.keys():
         if isinstance(data[key], str): 
             data[key] = unescape(data[key])
 	form.applyChanges(self.context, self.form_fields, data)
     if not self._next_url:
         self._next_url = ui_utils.url.absoluteURL(
             self.context, self.request) + \
             '?portal_status_message= Saved'
     self.request.response.redirect(self._next_url)
예제 #18
0
 def handle_edit_action(self, action, data):
     CheckAuthenticator(self.request)
     if not self.available():
         self.status = _(u'text_not_allowed_manage_server',
                         default=u'You are not allowed to manage the Zope server.')
         return
     form.applyChanges(self.context, self.form_fields, data, self.adapters)
     value = data.get('days', None)
     # skip the actual backup method in tests 
     if value is not None:
         context = aq_inner(self.context)
         cpanel = context.unrestrictedTraverse('/Control_Panel')
         context.manage_exportObject() 
     self.status = _(u'The plone site has been taken backup of (probably in /var/instance).')
    def actual_handle_set(self, action, data):
        groupsToJoin = None
        if 'joinable_groups' in data.keys():
            groupsToJoin = data.pop('joinable_groups')

        fields = self.form_fields.omit('joinable_groups')
        for field in fields:
            field.interface = self.registerInterface
        form.applyChanges(self.context, fields, data)

        if groupsToJoin and self.user_has_verified_email:
            self.join_groups(groupsToJoin)
        elif groupsToJoin:
            self.invite_groups(groupsToJoin)
예제 #20
0
    def handle_change(self, action, data):

        if data['replyTo'] != self.replyTo:
            self.replyTo = data['replyTo']
            del (data['replyTo'])

        form.applyChanges(self.context, self.form_fields, data)
        self.set_subject_prefix(data['short_name'])
        groupLink = '<a href="{groupUrl}">{groupName}</a>.'.format(
            groupUrl=self.groupInfo.relative_url(),
            groupName=self.groupInfo.name)
        self.status = _('changed-status',
                        'Changed the properties of ${groupLink}.',
                        mapping={'groupLink': groupLink})
예제 #21
0
 def handle_edit_action(self, action, data):
     CheckAuthenticator(self.request)
     if not self.available():
         self.status = _(u'text_not_allowed_manage_server',
                         default=u'You are not allowed to manage the Zope server.')
         return
     form.applyChanges(self.context, self.form_fields, data, self.adapters)
     value = data.get('days', None)
     # skip the actual pack method in tests
     if value is not None and isinstance(value, int) and value >= 0:
         context = aq_inner(self.context)
         cpanel = context.unrestrictedTraverse('/Control_Panel')
         cpanel.manage_pack(days=value, REQUEST=None)
     self.status = _(u'Packed the database.')
예제 #22
0
    def handle_change(self, action, data):

        if data['replyTo'] != self.replyTo:
            self.replyTo = data['replyTo']
            del(data['replyTo'])

        form.applyChanges(self.context, self.form_fields, data)
        self.set_subject_prefix(data['short_name'])
        groupLink = '<a href="{groupUrl}">{groupName}</a>.'.format(
            groupUrl=self.groupInfo.relative_url(),
            groupName=self.groupInfo.name)
        self.status = _('changed-status',
                        'Changed the properties of ${groupLink}.',
                        mapping={'groupLink': groupLink})
예제 #23
0
    def handle_invite(self, action, data):
        form.applyChanges(self.context, self.form_fields, data)

        auditor = Auditor(self.siteInfo, self.groupInfo)
        admin = createObject('groupserver.LoggedInUser', self.context)
        l = '{0}'.format(len(data['aboutText'])) \
            if data['aboutText'] else '0'
        auditor.info(CHANGE_ABOUT, admin, l)

        self.status = _(
            'change-status-success',
            'The About tab on the homepage for '
            '<a href="${groupUrl}">${groupName}</a> has been changed.',
            mapping={'groupUrl': self.groupInfo.relativeURL,
                     'groupName': self.groupInfo.name})
예제 #24
0
    def save_action(self, action, data):
        """Update the context and redirect to its overview page."""
        config = getUtility(IPublisherConfigSet).getByDistribution(self.context)
        if config is None:
            config = getUtility(IPublisherConfigSet).new(
                distribution=self.context,
                root_dir=data["root_dir"],
                base_url=data["base_url"],
                copy_base_url=data["copy_base_url"],
            )
        else:
            form.applyChanges(config, self.form_fields, data, self.adapters)

        self.request.response.addInfoNotification("Your changes have been applied.")
        self.next_url = canonical_url(self.context)
예제 #25
0
	def handle_edit_action(self, action, data):
		if form.applyChanges(self.context, self.form_fields, data,
							 self.adapters):
			self.status = _("Changes saved.")
			self._on_save(data)
		else:
			self.status = _("No changes made.")
    def set_data(self, data):
        assert self.context
        assert self.form_fields

        alteredFields = []
        for datum in getFieldsInOrder(self.interface):
            if datum[0] in data:
                if data[datum[0]] != getattr(self.context, datum[0]):
                    alteredFields.append(datum[0])

        # Create the content folder and object and apply changes.
        folder = GSContentPage(self.context, mode='add', id=data['id'])
        if folder.status['error']:
            retval = u'%s' % folder.status['msg']

        changed = form.applyChanges(folder, self.form_fields, data)

        # All good, so redirect to the edit page.
        if changed:
            url = '%s/edit_page.html' % folder.context.absolute_url(0)
            self.request.response.redirect(url)
            return
        else:
            retval = u'Problem creating page'

        assert retval
        assert type(retval) == unicode
        self.status = retval
예제 #27
0
    def handle_save_action(self, action, data):
        if form.applyChanges(self.context, self.form_fields, data,
                             self.adapters):
            zope.event.notify(
                zope.lifecycleevent.ObjectModifiedEvent(self.context))
            zope.event.notify(ploneformbase.EditSavedEvent(self.context))
            self.status = "Changes saved"
        else:
            zope.event.notify(ploneformbase.EditCancelledEvent(self.context))
            self.status = "No changes"

        settings = PageSliderSettings(self.context)
        slides = settings.slides
        index = data.get('index', -1)
        value = {
            'html': data['slide'],
            'overlay': data['overlay'],
            'on_hover': data['on_hover']
        }

        if index == -1:
            slides.append(value)
            index = len(slides) - 1
        else:
            slides[index] = value

        settings.slides = slides

        url = getMultiAdapter((self.context, self.request),
                              name='absolute_url')() + "/@@slider-settings"
        self.request.response.redirect(url)
예제 #28
0
    def handle_edit_action(self, action, data):
        # If the CC license option has been chosen, copy the new fields
        # into the license
        if 'Creative Commons License' == data['default_license']:
            ad = self.adapters[IContentLicensingSettingsForm]
            # Get the hidden field data from the view in the form
            ad.setCCLicense(self.request['license_cc_name'],
                            self.request['license_cc_url'],
                            self.request['license_cc_button'])

        # Apply form changes        
        if form.applyChanges(self.context, self.form_fields, data, self.adapters):

            # If there is a new license in the form, add it to the properties page
            if data.has_key('new_license_name') and data['new_license_name']:
                ad = self.adapters[IContentLicensingNewLicenseForm]
                ad.setNewLicense(data['new_license_name'], 
                                 data['new_license_url'], 
                                 data['new_license_icon'])

            self.status = _("Changes saved.")
            self._on_save(data)
            self.request['fieldset.current'] = u'fieldsetlegend-contentlicensingsettings'
        else:
            self.status = _("No changes made.")
예제 #29
0
    def handle_edit_action(self, action, data):
        # If the CC license option has been chosen, copy the new fields
        # into the license
        if 'Creative Commons License' == data['default_license']:
            ad = self.adapters[IContentLicensingSettingsForm]
            # Get the hidden field data from the view in the form
            ad.setCCLicense(self.request['license_cc_name'],
                            self.request['license_cc_url'],
                            self.request['license_cc_button'])

        # Apply form changes
        if form.applyChanges(self.context, self.form_fields, data,
                             self.adapters):

            # If there is a new license in the form, add it to the properties page
            if data.has_key('new_license_name') and data['new_license_name']:
                ad = self.adapters[IContentLicensingNewLicenseForm]
                ad.setNewLicense(data['new_license_name'],
                                 data['new_license_url'],
                                 data['new_license_icon'])

            self.status = _("Changes saved.")
            self._on_save(data)
            self.request[
                'fieldset.current'] = u'fieldsetlegend-contentlicensingsettings'
        else:
            self.status = _("No changes made.")
예제 #30
0
    def handle_invite(self, action, data):
        form.applyChanges(self.context, self.form_fields, data)

        auditor = Auditor(self.siteInfo, self.groupInfo)
        admin = createObject('groupserver.LoggedInUser', self.context)
        l = '{0}'.format(len(data['aboutText'])) \
            if data['aboutText'] else '0'
        auditor.info(CHANGE_ABOUT, admin, l)

        self.status = _(
            'change-status-success', 'The About tab on the homepage for '
            '<a href="${groupUrl}">${groupName}</a> has been changed.',
            mapping={
                'groupUrl': self.groupInfo.relativeURL,
                'groupName': self.groupInfo.name
            })
    def save_action(self, action, data):
        form.applyChanges(self.context, self.form_fields, data, self.adapters)
        extractor = getUtility(ITermExtractor)

        # Check if user has changed the tagger...
        ttype = data["tagger_type"]
        tcategories = data["brown_categories"]
        if extractor.tagger_metadata["type"] != ttype or extractor.tagger_metadata["categories"] != tcategories:
            if ttype == "N-Gram":
                tagged_sents = brown.tagged_sents(categories=tcategories)
                tagger = getUtility(IPOSTagger, name="collective.classification.taggers.NgramTagger")
                tagger.train(tagged_sents)
                extractor.setTagger(tagger, {"type": "N-Gram", "categories": tcategories})
            else:
                tagger = getUtility(IPOSTagger, name="collective.classification.taggers.PennTreebankTagger")
                extractor.setTagger(tagger, {"type": "Pen TreeBank", "categories": []})
        self.status = _(u"Changes saved. You will need to reparse the " "content and then retrain the classifier.")
예제 #32
0
 def createAndAdd(self, data):
     domain_model = removeSecurityProxy(self.domain_model)
     # create the object, inspect data for constructor args
     try:
         ob = generic.createInstance(domain_model, data)
     except TypeError:
         ob = domain_model()
     # apply any context values
     self.finishConstruction(ob)
     # apply extra form values
     form.applyChanges(ob, self.form_fields, data, self.adapters)
     # fire an object created event
     notify(ObjectCreatedEvent(ob))
     # signal to add form machinery to go to next url
     self._finished_add = True
     name = workspace.stringKey(ob)
     return self.context.get(name)
예제 #33
0
 def createAndAdd( self, data ):
     domain_model = removeSecurityProxy( self.domain_model )
     # create the object, inspect data for constructor args      
     try:  
         ob = generic.createInstance( domain_model, data )
     except TypeError:
         ob = domain_model()
     # apply any context values
     self.finishConstruction( ob )
     # apply extra form values
     form.applyChanges( ob, self.form_fields, data, self.adapters )
     # fire an object created event
     notify(ObjectCreatedEvent(ob))
     # signal to add form machinery to go to next url
     self._finished_add = True
     name = workspace.stringKey(ob)
     return self.context.get(name)
예제 #34
0
 def saveFields(self, action, data):
     CheckAuthenticator(self.request)
     if form.applyChanges(self.context, self.form_fields, data,
                          self.adapters):
         self.status = _(u"Changes saved.")
         self._on_save(data)
     else:
         self.status = _(u"No changes made.")
 def handle_edit_action(self, action, data):
     CheckAuthenticator(self.request)
     if form.applyChanges(self.context, self.form_fields, data, self.adapters):
         self.status = _("Changes saved.")
         notify(ConfigurationChangedEvent(self, data))
         self._on_save(data)
     else:
         self.status = _("No changes made.")
예제 #36
0
 def handle_save(self, action, data):
     trusted = removeSecurityProxy(self.context)
     if form.applyChanges(trusted.media_paths, self.form_fields, data, 
                                                             self.adapters):
         session = Session()
         session.add(trusted.media_paths)
         session.flush()
     self._next_url = absoluteURL(self.context, self.request)
     self.request.response.redirect(self._next_url)
 def handle_save_action(self, action, data):
     if form.applyChanges(self.context,
                          self.form_fields,
                          data,
                          self.adapters):
         self.status = _(u"Changes saved and tagcloud updated.")
         notify(TreeUpdateEvent(self.context))
     else:
         self.status = _(u"No changes.")
     return self.redirectFromForm()