コード例 #1
0
 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)
コード例 #2
0
 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
コード例 #3
0
 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
コード例 #4
0
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
コード例 #5
0
 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)
コード例 #6
0
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)
コード例 #7
0
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))
コード例 #8
0
 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)
     ])
コード例 #9
0
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
コード例 #10
0
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)
        ])
コード例 #11
0
    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)
コード例 #12
0
 def form_definition(self):
     if not getattr(self, '_v_definition', None):
         self._v_definition = IFormDefinition(self)
     return self._v_definition
コード例 #13
0
ファイル: __init__.py プロジェクト: mostscript/uu.formlibrary
 def definition(self):
     if self._definition is None:
         self._definition = IFormDefinition(self.context)
     return self._definition
コード例 #14
0
 def _file_field_name(self):
     schema = IFormDefinition(self.context).schema
     for (name, field) in getFieldsInOrder(schema):
         if INamedFileField.providedBy(field):
             return name
コード例 #15
0
 def _datagroups(self, form):
     definition = IFormDefinition(form)
     groups = {'': definition}
     groups.update(IFormComponents(definition).groups)
     return groups
コード例 #16
0
 def _definition(self):
     try:
         definition = IFormDefinition(self)  # get definition
     except ValueError:
         return None
     return definition