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
def profileWidgetNames(self): retval = [ 'form.%s' % f[0] for f in getFieldsInOrder(self.profileInterface) ] retval = [f for f in retval if f not in self.__hiddenFieldNames] assert type(retval) == list return retval
def handle_reset(self, action, data): # This may seem a bit daft, but there is method to my madness. The # "showImage" value is set by simple assignment, while the # "image" is set using assert self.context assert self.form_fields alteredFields = [datum[0] for datum in getFieldsInOrder(IGSProfileImage) if data[datum[0]] != getattr(self.context, datum[0])] if 'showImage' in alteredFields: self.context.showImage = data['showImage'] if 'image' in alteredFields: self.set_image(data['image']) if alteredFields: fields = [IGSProfileImage.get(name).title for name in alteredFields] f = ' and '.join([i for i in (', '.join(fields[:-1]), fields[-1]) if i]) self.status = 'Changed %s' % f else: self.status = "No fields changed." assert self.status assert type(self.status) == unicode
def properties(self): retval = ODict() retval['email'] = EmailAddress( title='Email', description='The email address of the new member') ifs = getFieldsInOrder(self.schema) for interface in ifs: key = unicode(interface[0]) retval[key] = interface[1] assert isinstance(retval, ODict) assert retval return retval
def getFields(self): r"""Return a list of fields in required + alphabetical order. The required attributes are listed first, then the optional attributes.""" # The `Interface` class have no security declarations, so that we are # not able to access any API methods on proxied objects. If we only # remove security proxies, the location proxy's module will be # returned. iface = removeAllProxies(self.context) # Make sure that the required fields are shown first sorter = lambda x: (not x[1].required, x[0].lower()) return [interface.getFieldInfoDictionary(field) for name, field in interface.getFieldsInOrder(iface, sorter)]
def siteProperties(self): '''Whole-heartily nicked from the GSProfile code, the site-wide user properties rely on a bit of voodoo: the schemas themselves are defined in the file-system, but which schema to use is stored in the "GlobalConfiguration" instance. ''' site_root = self.group.site_root() assert hasattr(site_root, 'GlobalConfiguration') config = site_root.GlobalConfiguration ifName = config.getProperty('profileInterface', 'IGSCoreProfile') # --=mpj17=-- Sometimes profileInterface is set to '' ifName = (ifName and ifName) or 'IGSCoreProfile' assert hasattr(profileinterfaces, ifName), \ 'Interface "%s" not found.' % ifName profileInterface = getattr(profileinterfaces, ifName) retval = interface.getFieldsInOrder(profileInterface) return retval
def profileFieldIds(self): retval = [f[0] for f in getFieldsInOrder(self.profileInterface)] assert type(retval) == list return retval
def profileWidgetNames(self): retval = ['form.%s' % f[0] for f in getFieldsInOrder(self.profileInterface)] retval = [f for f in retval if f not in self.__hiddenFieldNames] assert type(retval) == list return retval