def __init__(self, context, request=None): self.context = context self.request = request self.datasets = [] self.datapoints = {} self.schema = IFormDefinition(self.context).schema self.fieldnames = getFieldNamesInOrder(self.schema)
def __call__(self, *args, **kwargs): definition = IFormDefinition(self.context) data = getattr(definition, 'field_rules', '{}').strip() setHeader = self.request.response.setHeader setHeader('Content-type', 'application/json') setHeader('Content-length', len(data)) return data
def __init__(self, context, request): self.context = context self.request = request self.portal = getSite() self.comparators = Comparators(request) self.status = IStatusMessage(self.request) self.schema = IFormDefinition(self.context).schema
def metadata_form_definition(form): """Named adapter for metadata""" try: primary = IFormDefinition(form) return form_definition(primary, attr='metadata_definition') except ValueError: return None # since metadata definition is optional
def __init__(self, context, request=None): ## context should be context of API view, not API view itself self.context = context self.__parent__ = context # may be re-parented by API to view self.request = getRequest() if request is None else request self.definition = IFormDefinition(self.context) self._schema = self.definition.schema self._fieldnames = getFieldNamesInOrder(self._schema)
def migrate_filter(measure, queryname): schema = IFormDefinition(measure).schema rfilter = premigrate_filter(measure, queryname) composed = queryAdapter(measure, IComposedQuery, name=queryname) destination = query_filters(composed)[0] copy_filter(rfilter, destination) verify_filter(rfilter, destination, schema) remove_content_filter(rfilter)
def migrate_measures(site): migrated = 0 all_count = 0 prior_incomplete = premigrate_incomplete_measures(site) # UIDs incomplete q = {'portal_type': MEASURE_DEFINITION_TYPE} for brain in _search(site, q): measure = _get(brain) group = measure.__parent__ if group.source_type == 'uu.formlibrary.simpleform': continue # ignore SimpleForm-based measure, no queries to migrate migrated += migrate_measure(measure) all_count += 1 print 'Migrated %s measures from legacy RecordFilter(s), of %s' % ( migrated, all_count, ) print 'Cleaning up remaining legacy RecordFilter entries from catalog' incomplete_cleanups(site) # VERIFY / assertions: # 1. NO RecordFilter content cataloged any more: q = {'portal_type': 'uu.formlibrary.recordfilter'} assert len(_search(site, q)) == 0 # 2. For all measures, things look good: q = {'portal_type': MEASURE_DEFINITION_TYPE} for brain in _search(site, q): measure = _get(brain) schema = IFormDefinition(measure).schema group = measure.__parent__ if group.source_type == 'uu.formlibrary.simpleform': continue # ignore SimpleForm-based measure, no queries to migrate # 2.a. NO _tree; since MeasureDefinition # is not subclasing plone.dexterity.content.Container any more # in favor of Item, we need to directly access tree: try: assert getattr(aq_base(measure), '_tree', None) is None except AssertionError: # likely a tree with no filters, so clean up here: assert len(aq_base(measure)._tree) == 0 delattr(aq_base(measure), '_tree') # 2.b. IComposedQuery for measure configuration looks okay, for # numerator, denominator as configured. if group.source_type == 'uu.formlibrary.simpleform': continue # ignore SimpleForm-based measures, no queries! else: # get whether num, den... # build query for each: # assert is_query_complete(q.build()) adapter = lambda name: queryAdapter(measure, IComposedQuery, name) if IUUID(measure) not in prior_incomplete: if measure.numerator_type == 'multi_filter': composed = adapter(u'numerator') assert is_query_complete(composed.build(schema)) if measure.denominator_type == 'multi_filter': composed = adapter(u'denominator') assert is_query_complete(composed.build(schema))
def __init__(self, context, request): self.context = context self.request = request self.portal = getSite() self.definition = IFormDefinition(self.context) self.series = context.__parent__ # assumes series <>--- form self.title = '%s: %s' % (self.series.Title().strip(), context.Title()) self.seriesinfo = dict([ (k, v) for k, v in self.series.__dict__.items() if v is not None and k in getFieldNamesInOrder(IFormSeries) ])
def prior_incomplete_measure(measure): group = measure.__parent__ schema = IFormDefinition(measure).schema if group.source_type == 'uu.formlibrary.simpleform': return False # ignore SimpleForm-based measures, no queries! if measure.numerator_type == 'multi_filter': rfilter = premigrate_filter(measure, 'numerator') if rfilter is None or not is_query_complete(rfilter.build(schema)): return True if measure.denominator_type == 'multi_filter': rfilter = premigrate_filter(measure, 'denominator') if rfilter is None or not is_query_complete(rfilter.build(schema)): return True return False
def definition_field_source(context, field_ifaces=(IField,)): if isinstance(context, dict): context = find_context(getRequest()) definition = IFormDefinition(context) meta_defn = queryAdapter(definition, IFormDefinition, name='metadata') if meta_defn is not None: definition = meta_defn unspecified = SimpleTerm( value='', title=u'Unused / no field specified', ) return SimpleVocabulary( [unspecified] + [ SimpleTerm(value, title=title) for value, title in definition_field_list(definition, field_ifaces) ])
def __init__(self, context, request, name=None): """ Construct composed form given (default) schema an a tuple of ordered additional schema key/value pairs of (string) component name keys to schema values. """ self.context = context self.request = request # form definition will either be context, or adaptation of context. # see uu.formlibrary.definition.form_definition for adapter example. if name is None: self.definition = IFormDefinition(self.context) else: self.definition = queryAdapter( self.context, IFormDefinition, name=name, ) self._schema = self.definition.schema self.groups = [] # modified by updateFieldsFromSchemata() self.components = IFormComponents(self.definition) self.group_schemas = self._group_schemas() self.group_titles = self._group_titles() # mapping: schema to names: self.schema_names = dict(invert(self.group_schemas)) # ordered list of additional schema for AutoExtensibleForm: self._additionalSchemata = tuple( [t[1] for t in self.group_schemas if t[0]]) # super(ComposedForm, self).__init__(self, context, request) form.Form.__init__(self, context, request) self.saved = False # initial value: no duplication of save... self.save_attempt = False # flag for save attempt, success or not self._status = IStatusMessage(self.request)
def form_definition(self): if not getattr(self, '_v_definition', None): self._v_definition = IFormDefinition(self) return self._v_definition
def definition(self): if self._definition is None: self._definition = IFormDefinition(self.context) return self._definition
def _file_field_name(self): schema = IFormDefinition(self.context).schema for (name, field) in getFieldsInOrder(schema): if INamedFileField.providedBy(field): return name
def _datagroups(self, form): definition = IFormDefinition(form) groups = {'': definition} groups.update(IFormComponents(definition).groups) return groups
def _definition(self): try: definition = IFormDefinition(self) # get definition except ValueError: return None return definition