Exemplo n.º 1
0
    def add_field(self,
                  var='',
                  ftype=None,
                  label='',
                  desc='',
                  required=False,
                  value=None,
                  options=None,
                  **kwargs):
        kwtype = kwargs.get('type', None)
        if kwtype is None:
            kwtype = ftype

        field = FormField()
        field['var'] = var
        field['type'] = kwtype
        field['value'] = value
        if self['type'] in ('form', 'result'):
            field['label'] = label
            field['desc'] = desc
            field['required'] = required
            if options is not None:
                for option in options:
                    field.add_option(**option)
        else:
            del field['type']
        self.append(field)
        return field
Exemplo n.º 2
0
 def add_item(self, values):
     itemXML = ET.Element('{%s}item' % self.namespace)
     self.xml.append(itemXML)
     reported_vars = self['reported'].keys()
     for var in reported_vars:
         field = FormField()
         field._type = self['reported'][var]['type']
         field['var'] = var
         field['value'] = values.get(var, None)
         itemXML.append(field.xml)
Exemplo n.º 3
0
 def add_item(self, values):
     itemXML = ET.Element('{%s}item' % self.namespace)
     self.xml.append(itemXML)
     reported_vars = self['reported'].keys()
     for var in reported_vars:
         field = FormField()
         field._type = self['reported'][var]['type']
         field['var'] = var
         field['value'] = values.get(var, None)
         itemXML.append(field.xml)
Exemplo n.º 4
0
 def get_fields(self, use_dict=False):
     fields = OrderedDict()
     fieldsXML = self.xml.findall('{%s}field' % FormField.namespace)
     for fieldXML in fieldsXML:
         field = FormField(xml=fieldXML)
         fields[field['var']] = field
     return fields
Exemplo n.º 5
0
    def add_field(self,
                  var='',
                  ftype=None,
                  label='',
                  desc='',
                  required=False,
                  value=None,
                  options=None,
                  **kwargs):
        kwtype = kwargs.get('type', None)
        if kwtype is None:
            kwtype = ftype

        field = FormField(parent=self)
        field['var'] = var
        field['type'] = kwtype
        field['value'] = value
        if self['type'] in ('form', 'result'):
            field['label'] = label
            field['desc'] = desc
            field['required'] = required
            if options is not None:
                field['options'] = options
        else:
            del field['type']
        return field
Exemplo n.º 6
0
 def get_reported(self):
     fields = {}
     xml = self.xml.findall('{%s}reported/{%s}field' % (self.namespace,
                                  FormField.namespace))
     for field in xml:
         field = FormField(xml=field)
         fields[field['var']] = field
     return fields
Exemplo n.º 7
0
 def get_items(self):
     items = []
     itemsXML = self.xml.findall('{%s}item' % self.namespace)
     for itemXML in itemsXML:
         item = {}
         fieldsXML = itemXML.findall('{%s}field' % FormField.namespace)
         for fieldXML in fieldsXML:
             field = FormField(xml=fieldXML)
             item[field['var']] = field['value']
         items.append(item)
     return items
Exemplo n.º 8
0
    def add_field(self, var='', ftype=None, label='', desc='',
                  required=False, value=None, options=None, **kwargs):
        kwtype = kwargs.get('type', None)
        if kwtype is None:
            kwtype = ftype

        field = FormField()
        field['var'] = var
        field['type'] = kwtype
        field['value'] = value
        if self['type'] in ('form', 'result'):
            field['label'] = label
            field['desc'] = desc
            field['required'] = required
            if options is not None:
                for option in options:
                    field.add_option(**option)
        else:
            del field['type']
        self.append(field)
        return field
Exemplo n.º 9
0
    def set_reported(self, reported):
        """
        This either needs a dictionary or dictionaries or a dictionary of form fields.
        :param reported:
        :return:
        """
        for var in reported:
            field = reported[var]

            if isinstance(field, dict):
                self.add_reported(**field)
            else:
                reported = self.xml.find('{%s}reported' % self.namespace)
                if reported is None:
                    reported = ET.Element('{%s}reported' % self.namespace)
                    self.xml.append(reported)

                fieldXML = ET.Element('{%s}field' % FormField.namespace)
                reported.append(fieldXML)
                new_field = FormField(xml=fieldXML)
                new_field.values = field.values
Exemplo n.º 10
0
    def set_reported(self, reported):
        """
        This either needs a dictionary or dictionaries or a dictionary of form fields.
        :param reported:
        :return:
        """
        for var in reported:
            field = reported[var]

            if isinstance(field, dict):
                self.add_reported(**field)
            else:
                reported = self.xml.find('{%s}reported' % self.namespace)
                if reported is None:
                    reported = ET.Element('{%s}reported' % self.namespace)
                    self.xml.append(reported)

                fieldXML = ET.Element('{%s}field' % FormField.namespace)
                reported.append(fieldXML)
                new_field = FormField(xml=fieldXML)
                new_field.values = field.values
Exemplo n.º 11
0
 def add_reported(self, var, ftype=None, label='', desc='', **kwargs):
     kwtype = kwargs.get('type', None)
     if kwtype is None:
         kwtype = ftype
     reported = self.xml.find('{%s}reported' % self.namespace)
     if reported is None:
         reported = ET.Element('{%s}reported' % self.namespace)
         self.xml.append(reported)
     fieldXML = ET.Element('{%s}field' % FormField.namespace)
     reported.append(fieldXML)
     field = FormField(xml=fieldXML)
     field['var'] = var
     field['type'] = kwtype
     field['label'] = label
     field['desc'] = desc
     return field