Ejemplo n.º 1
0
    def update(self):
        id_form = int(self.context.forms_id)
        form = self.request.form
        self.errors = {}
        self.dados = []
        self.configuracao = ModelsConfigImport().get_Config_byIdForm(int(id_form))

        FIELD_BLACKLIST = ['form.config.save','form.importar',]
        configura = form.get('form.config.save',False)
        importacao = form.get('form.importar',False)

        if configura:

            for field in form.keys():
                if not field in FIELD_BLACKLIST:
                    D = {}
                    D['forms_id'] = id_form
                    D['fields'] = self.Convert_utf8(field)
                    D['campo_csv'] = self.Convert_utf8(form.get(field,0))

                    if self.configuracao:
                        ModelsConfigImport().update_ConfigImport(D['forms_id'],D['fields'],D['campo_csv'])

                    else:
                        ModelsConfigImport().set_ConfigImport(**D)

                    if 'form.config.save' in form.keys():
                        form.pop('form.config.save')

        elif importacao:
            if 'arquivo' in form.keys():
                file = form.get('arquivo').read().splitlines()

                for linha in file[1:]:
                    colunas = linha.split(';')
                    dados = {}

                    for campo in self.configuracao:
                        dados[self.Convert_utf8(campo.fields)] = self.Convert_utf8(colunas[int(campo.campo_csv)-1])

                    chave_form = self.context.campo_chave
                    result = ModelsFormValues().get_FormValues_byForm_and_Field_and_Value(id_form,chave_form,dados[chave_form])

                    if result.count():
                        result = result[0]
                        id_instance = result.instance_id
                        for i in dados:
                            ModelsFormValues().update_form_value(id_form,id_instance,dados[i],i)

                    else:
                        id_instance = ModelsFormInstance().set_FormInstance(id_form)
                        for i in dados:
                            valor = dados[i]
                            if valor:
                                ModelsFormValues().set_form_value(id_form,id_instance,valor,i)

                    self.dados.append(dados)
Ejemplo n.º 2
0
 def get_values_filter(self):
     filter = ModelsFormFields().get_Fields_ByField(self.context.campo_filtro, int(self.context.forms_id))
     if filter:
         self.filter = [filter.title, filter.name_field]
         
         if self.filter:
             result = ModelsFormValues().get_FormValues_byForm_and_Field(int(self.context.forms_id),self.filter[1])
             if result.count() > 0:
                 L = []
                 for i in result:
                     if i.value not in L:
                         L.append(i.value)
             return L
Ejemplo n.º 3
0
    def update(self):
        form = self.request.form
        instance = 0

        formulario = form.get('form','0')
        field = form.get('field','')
        self.name_field = field
        value = form.get('value','')

        self.formulario = formulario
        self.campos = ModelsFormFields().get_Fields_ByIdForm(int(formulario))

        campo_busca = ModelsFormValues().store.find(ModelsFormValues, ModelsFormValues.fields==unicode(field),
                                                                      ModelsFormValues.forms_id==int(formulario),
                                                                      ModelsFormValues.value==unicode(value)
                                                    )
        if campo_busca.count():
            instance = campo_busca[0].instance_id

        self.valores = ModelsFormValues().get_FormValues_byForm_and_Instance(int(formulario),instance)
Ejemplo n.º 4
0
    def update(self):
        form = self.request.form
        instance = 0

        formulario = form.get('form', '0')
        field = form.get('field', '')
        self.name_field = field
        value = form.get('value', '')

        self.formulario = formulario
        self.campos = ModelsFormFields().get_Fields_ByIdForm(int(formulario))

        campo_busca = ModelsFormValues().store.find(
            ModelsFormValues, ModelsFormValues.fields == unicode(field),
            ModelsFormValues.forms_id == int(formulario),
            ModelsFormValues.value == unicode(value))
        if campo_busca.count():
            instance = campo_busca[0].instance_id

        self.valores = ModelsFormValues().get_FormValues_byForm_and_Instance(
            int(formulario), instance)
Ejemplo n.º 5
0
    def geraHTMLContent(self, id, tipo, valor, full_text=False):
        if tipo == 'list':
            txt = ''
            for i in self.decodePickle(valor):
                txt += i + ', '

            return txt

        elif tipo == 'img':

            if id:
                return '<img width="100px" src="../form-image?id=%s">' % id
            else:
                return ''

        elif tipo == 'file':
            if id:
                arquivo = self.decodePickle(valor)
                if arquivo != '':
                    name = arquivo.get('filename', '')
                    return '<a href="../form-file?id=%s" target="_blank">%s</a><br />' % (
                        id, name)
                else:
                    return ''
            else:
                return ''

        elif tipo == 'date':
            data = self.decodePickle(valor)
            try:
                return data.strftime('%d/%m/%Y')

            except:
                return ''

        elif tipo == 'choice':
            if id:
                valor_campo = ModelsFormValues().get_Values_byID(id)
                id_form = int(self.context.forms_id)

                if valor_campo:
                    campo = ModelsFormFields().get_Fields_ByField(
                        valor_campo.fields, id_form)

                    items = campo.list_values.splitlines()
                    D = []
                    for i in items:
                        L = i.split(' | ')

                        if len(L) >= 2:
                            if L[0] == valor:
                                return L[1]

            return valor

        elif tipo == 'foreign_key':
            if id:
                valor_campo = ModelsFormValues().get_Values_byID(id)
                id_form = int(self.context.forms_id)

                if valor_campo:
                    campo = ModelsFormFields().get_Fields_ByField(
                        valor_campo.fields, id_form)

                    if campo:
                        form_ref = campo.ref_form

                        form_ref_id = form_ref.id
                        label = form_ref.campo_label
                        key = form_ref.campo_chave

                        if full_text:
                            instance = 0
                            txt = ''

                            v_campos = form_ref.fields
                            campo_busca = ModelsFormValues().store.find(
                                ModelsFormValues,
                                ModelsFormValues.fields == key,
                                ModelsFormValues.forms_id == form_ref_id,
                                ModelsFormValues.value == valor)
                            if campo_busca.count():
                                instance = campo_busca[0].instance_id

                                valores = ModelsFormValues(
                                ).get_FormValues_byForm_and_Instance(
                                    form_ref_id, instance)

                                txt = '<br/>'
                                for v_campo in v_campos:
                                    v_valor = valores.find(
                                        fields=v_campo.name_field).one()
                                    txt += '<b> %s : </b><span> %s </span><br/>' % (
                                        v_campo.title, v_valor.value)

                            return txt

                        else:
                            dados = ModelsFormValues(
                            ).get_FormValues_byForm_and_Field(
                                form_ref_id, key)
                            for item in dados:
                                if item.value == valor:
                                    dados_label = ModelsFormValues(
                                    ).get_FormValues_byForm_and_Instance_and_Field(
                                        form_ref_id, item.instance_id, label)

                                    return dados_label.value

        return valor
Ejemplo n.º 6
0
    def update(self):
        id_form = int(self.context.forms_id)
        form = self.request.form
        self.errors = {}
        self.dados = []
        self.configuracao = ModelsConfigImport().get_Config_byIdForm(
            int(id_form))

        FIELD_BLACKLIST = [
            'form.config.save',
            'form.importar',
        ]
        configura = form.get('form.config.save', False)
        importacao = form.get('form.importar', False)

        if configura:

            for field in form.keys():
                if not field in FIELD_BLACKLIST:
                    D = {}
                    D['forms_id'] = id_form
                    D['fields'] = self.Convert_utf8(field)
                    D['campo_csv'] = self.Convert_utf8(form.get(field, 0))

                    if self.configuracao:
                        ModelsConfigImport().update_ConfigImport(
                            D['forms_id'], D['fields'], D['campo_csv'])

                    else:
                        ModelsConfigImport().set_ConfigImport(**D)

                    if 'form.config.save' in form.keys():
                        form.pop('form.config.save')

        elif importacao:
            if 'arquivo' in form.keys():
                file = form.get('arquivo').read().splitlines()

                for linha in file[1:]:
                    colunas = linha.split(';')
                    dados = {}

                    for campo in self.configuracao:
                        dados[self.Convert_utf8(
                            campo.fields)] = self.Convert_utf8(
                                colunas[int(campo.campo_csv) - 1])

                    chave_form = self.context.campo_chave
                    result = ModelsFormValues(
                    ).get_FormValues_byForm_and_Field_and_Value(
                        id_form, chave_form, dados[chave_form])

                    if result.count():
                        result = result[0]
                        id_instance = result.instance_id
                        for i in dados:
                            ModelsFormValues().update_form_value(
                                id_form, id_instance, dados[i], i)

                    else:
                        id_instance = ModelsFormInstance().set_FormInstance(
                            id_form)
                        for i in dados:
                            valor = dados[i]
                            if valor:
                                ModelsFormValues().set_form_value(
                                    id_form, id_instance, valor, i)

                    self.dados.append(dados)
Ejemplo n.º 7
0
    def geraHTMLContent(self,id,tipo,valor,full_text=False):
        if tipo == 'list':
            txt = ''
            for i in self.decodePickle(valor):
                txt += i +', '

            return txt

        elif tipo == 'img':

            if id:
                return '<img width="100px" src="../form-image?id=%s">' % id
            else:
                return ''

        elif tipo == 'file':
            if id:
                arquivo = self.decodePickle(valor)
                if arquivo != '':
                    name = arquivo.get('filename','')
                    return '<a href="../form-file?id=%s" target="_blank">%s</a><br />'%(id,name)
                else:
                    return ''
            else:
                return ''

        elif tipo == 'date':
            data = self.decodePickle(valor)
            try:
                return data.strftime('%d/%m/%Y')

            except:
                return ''


        elif tipo == 'choice':
            if id:
                valor_campo = ModelsFormValues().get_Values_byID(id)
                id_form = int(self.context.forms_id)

                if valor_campo:
                    campo = ModelsFormFields().get_Fields_ByField(valor_campo.fields,id_form)
    
                    items = campo.list_values.splitlines()
                    D=[]
                    for i in items:
                        L = i.split(' | ')
    
                        if len(L) >= 2:
                            if L[0] == valor:
                                return L[1]

            return valor

        elif tipo == 'foreign_key':
            if id:
                valor_campo = ModelsFormValues().get_Values_byID(id)
                id_form = int(self.context.forms_id)







                if valor_campo:
                    campo = ModelsFormFields().get_Fields_ByField(valor_campo.fields,id_form)

                    if campo:
                        form_ref = campo.ref_form

                        form_ref_id = form_ref.id
                        label = form_ref.campo_label
                        key = form_ref.campo_chave

                        if full_text:
                            instance = 0
                            txt = ''

                            v_campos = form_ref.fields 
                            campo_busca = ModelsFormValues().store.find(ModelsFormValues, ModelsFormValues.fields==key,
                                                                                          ModelsFormValues.forms_id==form_ref_id,
                                                                                          ModelsFormValues.value==valor
                                                                        )
                            if campo_busca.count():
                                instance = campo_busca[0].instance_id

                                valores = ModelsFormValues().get_FormValues_byForm_and_Instance(form_ref_id,instance)

                                txt = '<br/>'
                                for v_campo in v_campos:
                                    v_valor = valores.find(fields=v_campo.name_field).one()
                                    txt += '<b> %s : </b><span> %s </span><br/>' %(v_campo.title,v_valor.value)

                            return txt

                        else:
                            dados = ModelsFormValues().get_FormValues_byForm_and_Field(form_ref_id,key)
                            for item in dados:
                                if item.value == valor:
                                    dados_label = ModelsFormValues().get_FormValues_byForm_and_Instance_and_Field(form_ref_id, item.instance_id, label)

                                    return dados_label.value

        return valor