예제 #1
0
    def importXML(xml):
        obj = xmltodict.parse(xml, process_namespaces=True)

        #pessoa = Pessoa.objects.create(nome=obj['CURRICULO-VITAE']['DADOS-GERAIS']['@NOME-COMPLETO'])
        pessoa = Pessoa()
        try:
            with transaction.atomic():
                pessoa.nome = obj['CURRICULO-VITAE']['DADOS-GERAIS']['@NOME-COMPLETO']
                pessoa.sexo = 'M'
                pessoa.data_nascimento = date(1977,3,3)
                pessoa.numero_documento = '07758079741'
                pessoa.email = '*****@*****.**'

                # Tratamento de país
                paises = Pais.objects.filter(Q(nome_pais=obj['CURRICULO-VITAE']['DADOS-GERAIS']['@PAIS-DE-NACIONALIDADE']))
                if paises.exists():
                    print(paises[0])
                    pessoa.nacionalidade = paises[0]

                pessoa.save()
                # tratamento de abreviação
                abrevs = obj['CURRICULO-VITAE']['DADOS-GERAIS']['@NOME-EM-CITACOES-BIBLIOGRAFICAS']
                if abrevs:
                    first = True
                    items = abrevs.split(';')
                    print(items)
                    for item in items:
                        Abreviatura.objects.create(pessoa=pessoa,
                                                   desc_abreviatura=item,
                                                   flg_principal= first if 1 else 0)

            return pessoa
        except:
            return None
예제 #2
0
def save_docente(request, id=0, template_name='pessoa/docente_form.html'):
    if id > 0:
        docente = get_object_or_404(Docente, pk=id)
        pessoa = docente.pessoa
    else:
        docente = Docente()
        pessoa = Pessoa()

    # tramento para importar xml lates
    dict_abrevs = []
    if request.method == 'POST' and "import_xml" in request.POST and bool(
            request.FILES.get('myfile', False)):
        myfile = request.FILES['myfile']

        if myfile.name.endswith('.xml'):
            data = myfile.read()
            pessoa_xml = LattesService.import_xml_memory(data)
            request.session["docente_pessoa_xml"] = pessoa_xml
        else:
            pessoa_xml = "Erro"

        return redirect("docente_new")

    pessoa_xml = request.session.get("docente_pessoa_xml", None)
    if pessoa_xml:
        if pessoa_xml is not "Erro":
            messages.success(
                request, 'Currículo de(a), %s importado com sucesso.' %
                pessoa_xml["nome"])
            LattesService.fill_pessoa(pessoa, pessoa_xml, dict_abrevs)
            request.session["docente_pessoa_xml"] = None
        else:
            messages.success(
                request,
                'Arquivo não é XML. Apenas arquivos XML podem ser importados!')
            request.session["docente_pessoa_xml"] = None

    # FIM tramento para importar xml lates

    # Preparação dos forms
    pessoa_form = PessoaForm(request.POST or None, instance=pessoa)
    docente_form = DocenteForm(request.POST or None, instance=docente)
    AbreviaturaFormSet = inlineformset_factory(Pessoa,
                                               Abreviatura,
                                               form=AbreviaturaForm,
                                               extra=1)
    abreviatura_form = AbreviaturaFormSet(instance=pessoa)

    # inicializa o form com as abreviaturas do xml latters
    for subform, data in zip(abreviatura_form.forms, dict_abrevs):
        subform.initial = data

    if request.method == 'POST' and pessoa_form.is_valid(
    ) and docente_form.is_valid():
        # transação
        with transaction.atomic():

            pessoa = pessoa_form.save()
            docente = docente_form.save(False)

            docente.pessoa = pessoa
            docente.save()

            abreviatura_form = AbreviaturaFormSet(request.POST,
                                                  instance=pessoa)
            print(abreviatura_form.is_valid())
            if abreviatura_form.is_valid():
                abreviatura_form.save()

        return redirect('docente_list')

    args = {}
    args.update(csrf(request))
    args['pessoa_form'] = pessoa_form
    args['docente_form'] = docente_form
    args['abreviatura_form'] = abreviatura_form
    args['is_new'] = id <= 0

    return render(request, template_name, args)