def cria_subprefeituras():
    # Possui FK e M2M
    dict_lote = le_dados(data_lotes, 'iniciais')
    dict_dre = le_dados(data_diretorias_regionais, 'codigo_eol')
    for item in progressbar(data_subprefeituras, 'Subprefeitura'):
        # Não tem lote nos dados originais.
        lote = get_modelo(
            modelo=Lote,
            modelo_id=item.get('lote'),
            dicionario=dict_lote,
            campo_unico='iniciais'
        )
        subprefeitura, created = Subprefeitura.objects.get_or_create(
            nome=item['nome'],
            lote=lote
        )
        if not created:
            ja_existe('Subprefeitura', item['nome'])

        adiciona_m2m_items(
            campo_m2m=subprefeitura.diretoria_regional,
            dicionario_m2m=item.get('diretoria_regional'),
            modelo=DiretoriaRegional,
            dicionario=dict_dre,
            campo_unico='codigo_eol'
        )
def cria_motivo_alteracao_ue():
    for item in progressbar(data_motivo_alteracao_ue,
                            'Motivo Alteração de UE'):
        _, created = MotivoAlteracaoUE.objects.get_or_create(
            nome=item, descricao='Lorem ipsum.')
        if not created:
            ja_existe('MotivoAlteracaoUE', item)
Ejemplo n.º 3
0
def cria_tipo_informacao_nutricional():
    for item in progressbar(data_tipo_informacao_nutricional,
                            'Tipo de Informacao Nutricional'):  # noqa
        _, created = TipoDeInformacaoNutricional.objects.get_or_create(
            nome=item['nome'])
        if not created:
            ja_existe('TipoDeInformacaoNutricional', item['nome'])
def escreve_xlsx_dados_sigpae(items, arquivo_saida):  # noqa C901
    wb = openpyxl.load_workbook(arquivo_saida)
    ws = wb.create_sheet('Dados do SIGPAE para as escolas da planilha')
    ws['A1'] = 'codigo_eol_escola'
    ws['B1'] = 'nome_da_escola'
    ws['C1'] = 'nome_dre'
    ws['D1'] = 'lote'
    ws['E1'] = 'tipo_gestao'
    ws['F1'] = 'contato_email'
    ws['G1'] = 'contato_telefone'
    ws['H1'] = 'contato_telefone2'
    ws['I1'] = 'contato_celular'
    i = 0  # indice criado manualmente pra não inserir linhas em branco na planilha.
    for item in progressbar(items, 'Escrevendo...'):
        escola = Escola.objects.filter(codigo_eol=item).first()
        if escola:
            ws[f'A{i+2}'] = escola.codigo_eol
            ws[f'B{i+2}'] = escola.nome
            if escola.diretoria_regional:
                ws[f'C{i+2}'] = escola.diretoria_regional.nome
            if escola.lote:
                ws[f'D{i+2}'] = escola.lote.nome
            if escola.tipo_gestao:
                ws[f'E{i+2}'] = escola.tipo_gestao.nome
            if escola.contato:
                ws[f'F{i+2}'] = escola.contato.email
                ws[f'G{i+2}'] = escola.contato.telefone
                ws[f'H{i+2}'] = escola.contato.telefone2
                ws[f'I{i+2}'] = escola.contato.celular
            i += 1
    wb.save(arquivo_saida)
def cria_escola(arquivo, legenda):
    lista_auxiliar = []

    arquivo = f'{ROOT_DIR}/{arquivo}'
    items = csv_to_list(arquivo)

    # Padroniza os dados
    items = padroniza_dados(items)

    items_codigo_eol = [item['EOL'] for item in items]

    # Procura por todos os itens repetidos no banco,
    # e retorna uma lista de codigo_eol...
    escolas = Escola.objects\
        .filter(codigo_eol__in=items_codigo_eol)\
        .values_list('codigo_eol', flat=True)

    # E insere somente os itens faltantes.
    escolas_faltantes = [item for item in items if item['EOL'] not in escolas]
    if escolas_faltantes:
        for item in progressbar(escolas_faltantes, legenda):  # noqa
            # Corrige o nome da DRE
            dre_nome = f"DIRETORIA REGIONAL DE EDUCACAO {item.get('DRE')}"
            tipo_ue_iniciais = item.get('TIPO DE U.E')
            lote_sigla = item.get('SIGLA/LOTE')
            email = item.get('E-MAIL').strip().lower() or ''
            telefone1 = somente_digitos(item.get('TELEFONE'))
            telefone2 = somente_digitos(item.get('TELEFONE2'))

            dre_obj, created_dre = DiretoriaRegional.objects.get_or_create(nome=dre_nome)  # noqa
            tipo_ue_obj, created_ue = TipoUnidadeEscolar.objects.get_or_create(iniciais=tipo_ue_iniciais)  # noqa
            tipo_gestao = TipoGestao.objects.get(nome='TERC TOTAL')
            lote_obj = Lote.objects.filter(iniciais=lote_sigla).first() or None
            if telefone1 or telefone2 or email:
                contato_obj = Contato.objects.filter(
                    Q(telefone=telefone1) |
                    Q(telefone2=telefone2) |
                    Q(email=email)
                ).first()

            tipo_ue = item.get('TIPO DE U.E')
            nome = item.get('NOME')
            # Instancia o objeto Escola.
            data = dict(
                nome=f'{tipo_ue} {nome}',
                codigo_eol=item.get('EOL'),
                diretoria_regional=dre_obj,
                tipo_unidade=tipo_ue_obj,
                tipo_gestao=tipo_gestao,
            )
            if lote_obj:
                data['lote'] = lote_obj
            if contato_obj:
                data['contato'] = contato_obj

            escola_obj = Escola(**data)
            lista_auxiliar.append(escola_obj)

        Escola.objects.bulk_create(lista_auxiliar)
def cria_alimento_proprio():
    marcas = Marca.objects.all()
    for item in progressbar(data_alimentos_proprios_codae, 'Alimento próprio'):
        marca = choice(marcas)
        _, created = AlimentoProprio.objects.get_or_create(nome=item,
                                                           marca=marca)
        if not created:
            ja_existe('Alimento próprio', item)
def cria_classificacoes_dieta():
    for item in progressbar(data_classificacoes_dieta, 'Classificacao Dieta'):
        _, created = ClassificacaoDieta.objects.get_or_create(
            nome=item['nome'],
            descricao=item['descricao'],
        )
        if not created:
            ja_existe('ClassificacaoDieta', item)
Ejemplo n.º 8
0
def cria_marca():
    # Deleta produtos e marcas.
    Produto.objects.all().delete()
    Marca.objects.all().delete()
    # Cria marcas novas.
    for item in progressbar(data_marcas, 'Marca'):
        nome = item
        Marca.objects.create(nome=nome)
def escreve_xlsx_codescola_nao_existentes(codescola_nao_existentes,
                                          arquivo_saida):
    wb = openpyxl.load_workbook(arquivo_saida)
    ws = wb.create_sheet('CodEscola não existentes em unidades_da_rede...')
    ws['A1'] = 'CodEscola'
    for i, item in enumerate(
            progressbar(list(codescola_nao_existentes), 'Escrevendo...')):
        ws[f'A{i+2}'] = str(item)
    wb.save(arquivo_saida)
def escreve_xlsx_protocolo_dieta_inexistentes(protocolo_dieta_inexistentes,
                                              arquivo_saida):
    wb = openpyxl.load_workbook(arquivo_saida)
    ws = wb.create_sheet('ProtocoloDieta inexistentes')
    ws['A1'] = 'protocolo_dieta'
    for i, item in enumerate(
            progressbar(list(protocolo_dieta_inexistentes), 'Escrevendo...')):
        ws[f'A{i+2}'] = str(item)
    wb.save(arquivo_saida)
def escreve_xlsx_cod_diagnostico_inexistentes(cod_diagnostico_inexistentes,
                                              arquivo_saida):
    wb = openpyxl.load_workbook(arquivo_saida)
    ws = wb.create_sheet('CodDiagnostico inexistentes')
    ws['A1'] = 'cod_diagnostico'
    for i, item in enumerate(
            progressbar(list(cod_diagnostico_inexistentes), 'Escrevendo...')):
        ws[f'A{i+2}'] = str(item)
    wb.save(arquivo_saida)
Ejemplo n.º 12
0
def cria_perfis():
    for item in progressbar(data_perfis, 'Perfil'):
        _, created = Perfil.objects.get_or_create(
            nome=item['nome'],
            ativo=item['ativo'],
            super_usuario=item['super_usuario'],
        )
        if not created:
            ja_existe('Perfil', item['nome'])
def escreve_xlsx_alunos_com_nascimento_diferente(lista, arquivo_saida):
    wb = openpyxl.load_workbook(arquivo_saida)
    ws = wb.create_sheet('Alunos com nascimento diferente do EOL')
    ws['A1'] = 'nascimento_planilha'
    ws['B1'] = 'nascimento_eol'
    for i, item in enumerate(progressbar(lista, 'Escrevendo...')):
        ws[f'A{i+2}'] = str(item[0])
        ws[f'B{i+2}'] = str(item[1])
    wb.save(arquivo_saida)
Ejemplo n.º 14
0
def cria_kit_lanche():
    # Valores randomicos
    items = list(ItemKitLanche.objects.all())
    # Deleta kits existentes
    KitLanche.objects.all().delete()
    for i in progressbar(range(1, 11), 'Kit Lanche'):
        kit_amostra = sample(items, 3)
        kit_lanche = KitLanche.objects.create(nome=f'Kit {i}')
        for kit in kit_amostra:
            kit_lanche.itens.add(kit)
Ejemplo n.º 15
0
def cria_edital():
    for item in progressbar(data_editais, 'Edital'):
        _, created = Edital.objects.get_or_create(
            numero=item['numero'],
            tipo_contratacao=item['tipo_contratacao'],
            processo=item['processo'],
            objeto=item['objeto'],
        )
        if not created:
            ja_existe('Edital', item['numero'])
Ejemplo n.º 16
0
def cria_alergia_intolerancias():
    for item in progressbar(data_alergia_intolerancias,
                            'Alergia Intolerancia'):  # noqa
        obj = AlergiaIntolerancia.objects.filter(descricao=item).first()
        if not obj:
            AlergiaIntolerancia.objects.create(descricao=item)
        else:
            nome = item
            print(
                f'{bcolors.FAIL}Aviso: AlergiaIntolerancia: "{nome}" já existe!{bcolors.ENDC}'
            )  # noqa
Ejemplo n.º 17
0
def cria_terceirizadas():
    for item in progressbar(data_terceirizadas, 'Terceirizada'):
        terceirizada, created = Terceirizada.objects.get_or_create(
            cnpj=item['cnpj'],
            nome_fantasia=item['nome_fantasia'],
            razao_social=item['razao_social'],
            representante_legal=item['representante_legal'],
            representante_telefone=item['representante_telefone'],
            representante_email=item['representante_email'],
        )
        if not created:
            ja_existe('Terceirizada', item['cnpj'])
Ejemplo n.º 18
0
def cria_diretorias_regionais():
    for item in progressbar(data_diretorias_regionais, 'Diretoria Regional'):
        obj = DiretoriaRegional.objects.filter(codigo_eol=item['codigo_eol']).first()  # noqa
        if not obj:
            DiretoriaRegional.objects.create(
                nome=item['nome'],
                iniciais=item['iniciais'],
                codigo_eol=item['codigo_eol'],
            )
        else:
            nome = item['nome']
            print(f'{bcolors.FAIL}Aviso: DiretoriaRegional: "{nome}" já existe!{bcolors.ENDC}')  # noqa
Ejemplo n.º 19
0
def cria_diagnosticos():
    # Protocolo de Dieta Especial
    usuario_codae = Usuario.objects.get(email='*****@*****.**')
    for item in progressbar(data_protocolo_de_dieta_especial, 'Protocolo de Dieta Especial'):  # noqa
        obj = ProtocoloDeDietaEspecial.objects.filter(nome=item).first()
        if not obj:
            ProtocoloDeDietaEspecial.objects.create(
                nome=item,
                criado_por=usuario_codae
            )
        else:
            nome = item
            print(f'{bcolors.FAIL}Aviso: ProtocoloDeDietaEspecial: "{nome}" já existe!{bcolors.ENDC}')  # noqa
def escreve_xlsx(codigo_eol_escola_nao_existentes):
    wb = openpyxl.Workbook()
    with NamedTemporaryFile() as tmp:
        ws = wb.create_sheet(
            'Código EOL das Escolas não identificadas no SIGPAE')
        ws['A1'] = 'codigo_eol_escola'
        for i, item in enumerate(
                progressbar(list(codigo_eol_escola_nao_existentes),
                            'Escrevendo...')):
            ws[f'A{i+2}'] = str(item)
        nome_excel_tempfile = f'{tmp.name}.xlsx'
        wb.save(nome_excel_tempfile)
        output = BytesIO(save_virtual_workbook(wb))
    return output, nome_excel_tempfile
Ejemplo n.º 21
0
def cria_vinculo_tipo_alimentacao_com_periodo_escolar_e_tipo_unidade_escolar():
    # Percorre todos os tipos de unidade escolar e todos os periodos escolares.
    VinculoTipoAlimentacaoComPeriodoEscolarETipoUnidadeEscolar.objects.all().delete()  # noqa
    tipo_unidade_escolares = TipoUnidadeEscolar.objects.all()
    periodo_escolares = PeriodoEscolar.objects.all()
    aux = []
    for tipo_unidade_escolar in progressbar(tipo_unidade_escolares, 'VinculoTipoAlimentacaoComPeriodoEscolarETipoUnidadeEscolar'):  # noqa
        for periodo_escolar in periodo_escolares:
            obj = VinculoTipoAlimentacaoComPeriodoEscolarETipoUnidadeEscolar(
                tipo_unidade_escolar=tipo_unidade_escolar,
                periodo_escolar=periodo_escolar,
            )
            aux.append(obj)
    VinculoTipoAlimentacaoComPeriodoEscolarETipoUnidadeEscolar.objects.bulk_create(aux)  # noqa
Ejemplo n.º 22
0
def cria_informacao_nutricional():
    dict_tipo_nutricional = le_dados(data_tipo_informacao_nutricional)
    for item in progressbar(data_informacao_nutricional,
                            'Informacao Nutricional'):  # noqa
        tipo_nutricional = get_modelo(modelo=TipoDeInformacaoNutricional,
                                      modelo_id=item.get('tipo_nutricional'),
                                      dicionario=dict_tipo_nutricional,
                                      campo_unico='nome')

        data = dict(nome=item.get('nome'),
                    tipo_nutricional=tipo_nutricional,
                    medida=item.get('medida'))
        _, created = InformacaoNutricional.objects.get_or_create(**data)
        if not created:
            ja_existe('InformacaoNutricional', item['nome'])
def escreve_xlsx_alunos_nao_matriculados_na_escola(
        alunos_nao_matriculados_na_escola_lista, arquivo_saida):
    wb = openpyxl.load_workbook(arquivo_saida)
    ws = wb.create_sheet('Código EOL dos Alunos não matriculados na escola')
    ws['A1'] = 'codigo_eol_aluno'
    ws['B1'] = 'nome_aluno'
    ws['C1'] = 'codigo_eol_escola'
    for i, item in enumerate(
            progressbar(list(alunos_nao_matriculados_na_escola_lista),
                        'Escrevendo...')):
        ws[f'A{i+2}'] = str(item[0])
        ws[f'B{i+2}'] = str(item[1])
        ws[f'C{i+2}'] = str(item[2])
    wb.save(arquivo_saida)
    return arquivo_saida
Ejemplo n.º 24
0
def cria_combo_do_vinculo_tipo_alimentacao_periodo_tipo_ue():
    ComboDoVinculoTipoAlimentacaoPeriodoTipoUE.objects.all().delete()
    vinculos = VinculoTipoAlimentacaoComPeriodoEscolarETipoUnidadeEscolar.objects.all()
    tipos_alimentacoes = list(TipoAlimentacao.objects.all())
    for vinculo in progressbar(vinculos, 'ComboDoVinculoTipoAlimentacaoPeriodoTipoUE'):
        # Cria vários combos para cada vinculo.
        for _ in range(randint(5, 10)):
            obj = ComboDoVinculoTipoAlimentacaoPeriodoTipoUE.objects.create(vinculo=vinculo)
            tipos_amostra = sample(tipos_alimentacoes, randint(1, 3))
            for item in tipos_amostra:
                obj.tipos_alimentacao.add(item)
        # Cria um combo específico para lanche e outro para refeição.
        tipos_alimentacoes2 = list(TipoAlimentacao.objects.filter(nome__in=('lanche', 'refeição')))
        for tipo in tipos_alimentacoes2:
            obj = ComboDoVinculoTipoAlimentacaoPeriodoTipoUE.objects.create(vinculo=vinculo)
            obj.tipos_alimentacao.add(tipo)
Ejemplo n.º 25
0
def cria_substituicao_do_combo_do_vinculo_tipo_alimentacao_periodo_tipo_ue():
    SubstituicaoDoComboDoVinculoTipoAlimentacaoPeriodoTipoUE.objects.all().delete()
    combos = ComboDoVinculoTipoAlimentacaoPeriodoTipoUE.objects.all()
    tipos_alimentacoes = list(TipoAlimentacao.objects.exclude(nome__in=('lanche', 'refeição')))
    for combo in progressbar(combos, 'SubstituicaoDoComboDoVinculoTipoAlimentacaoPeriodoTipoUE'):
        obj = SubstituicaoDoComboDoVinculoTipoAlimentacaoPeriodoTipoUE.objects.create(combo=combo)
        tipos_amostra = sample(tipos_alimentacoes, randint(1, 3))
        tipos_alimentacao_list = [item[1] for item in combo.tipos_alimentacao.values_list()]
        for item in tipos_amostra:
            if len(tipos_alimentacao_list) == 1 and 'lanche' in tipos_alimentacao_list:
                refeicao = TipoAlimentacao.objects.filter(nome='refeição').first()
                obj.tipos_alimentacao.add(refeicao)
            elif len(tipos_alimentacao_list) == 1 and 'refeição' in tipos_alimentacao_list:
                lanche = TipoAlimentacao.objects.filter(nome='lanche').first()
                obj.tipos_alimentacao.add(lanche)
            else:
                obj.tipos_alimentacao.add(item)
Ejemplo n.º 26
0
def cria_escola_com_periodo_escolar():
    # Percorre todas as escolas e todos os períodos.
    # Deleta tudo antes
    EscolaPeriodoEscolar.objects.all().delete()
    escolas = Escola.objects.all()
    periodos_escolares = PeriodoEscolar.objects.all()
    aux = []
    for escola in progressbar(escolas, 'Escola Periodo Escolar'):
        for periodo_escolar in periodos_escolares:
            obj = EscolaPeriodoEscolar(
                escola=escola,
                periodo_escolar=periodo_escolar,
                quantidade_alunos=randint(100, 500),
                horas_atendimento=choice([4, 8, 12]),
            )
            aux.append(obj)
    EscolaPeriodoEscolar.objects.bulk_create(aux)
Ejemplo n.º 27
0
def cria_tipo_unidade_escolar(arquivo):
    # Pega somente a coluna 'TIPO DE U.E'
    iniciais = 'TIPO DE U.E'
    arquivo = f'{ROOT_DIR}/{arquivo}'
    items = csv_to_list(arquivo)
    items_iniciais = [item[iniciais] for item in items]

    # Procura por todos os itens repetidos no banco,
    # e retorna uma lista de iniciais...
    tipo_unidade_escolares = TipoUnidadeEscolar.objects\
        .filter(iniciais__in=items_iniciais)\
        .values_list('iniciais', flat=True)

    # E insere somente os itens faltantes.
    itens_faltantes = set(items_iniciais) - set(tipo_unidade_escolares)
    if itens_faltantes:
        for iniciais in progressbar(itens_faltantes, 'Tipo Unidade Escolar'):
            TipoUnidadeEscolar.objects.create(iniciais=iniciais)
Ejemplo n.º 28
0
def cria_usuarios():
    for usuario in progressbar(USUARIOS, 'Usuario'):
        if Usuario.objects.filter(email=usuario['email']).first():
            print(f"{bcolors.FAIL}Usuário {usuario['email']} já existe!{bcolors.ENDC}")  # noqa
        else:
            Usuario.objects.create_superuser(
                email=usuario['email'],
                password=usuario['password'],
                cpf=usuario['cpf'],
                registro_funcional=usuario['registro_funcional'],
                nome=usuario['nome'],
                crn_numero=usuario.get('crn_numero'),
                cargo=usuario.get('cargo'),
            )

    try:
        user = Usuario.objects.get(email='*****@*****.**')
        Token.objects.get_or_create(user=user)
    except ObjectDoesNotExist:
        print(f"{bcolors.FAIL}Usuário [email protected]' não existe!{bcolors.ENDC}")  # noqa
Ejemplo n.º 29
0
    def _atualiza_alunos_da_escola(self,
                                   escola,
                                   dados_escola,
                                   progress_bar=None):
        novos_alunos = []
        # Remove dicionários duplicados da lista.
        # Aconteceu na escola codigo_eol 012874.
        registros = [
            dict(t)
            for t in {tuple(d.items())
                      for d in dados_escola['results']}
        ]

        if progress_bar:
            registros = progressbar(registros, 'Alunos')

        for registro in registros:
            aluno = Aluno.objects.filter(
                codigo_eol=registro['cd_aluno']).first()
            data_nascimento = registro['dt_nascimento_aluno'].split('T')[0]
            periodo = self.PERIODOS[registro['dc_tipo_turno'].strip()]
            periodo_escolar = PeriodoEscolar.objects.get(nome=periodo)
            serie = registro['dc_turma_escola'].strip()

            if aluno:
                aluno.nome = registro['nm_aluno'].strip()
                aluno.codigo_eol = registro['cd_aluno']
                aluno.data_nascimento = data_nascimento
                aluno.escola = escola
                aluno.periodo_escolar = periodo_escolar
                aluno.serie = serie
                aluno.save()
            else:
                obj_aluno = Aluno(nome=registro['nm_aluno'].strip(),
                                  codigo_eol=registro['cd_aluno'],
                                  data_nascimento=data_nascimento,
                                  escola=escola,
                                  periodo_escolar=periodo_escolar,
                                  serie=serie)
                novos_alunos.append(obj_aluno)
        Aluno.objects.bulk_create(novos_alunos)
Ejemplo n.º 30
0
def cria_contatos_escola(arquivo):
    arquivo = f'{ROOT_DIR}/{arquivo}'
    items = csv_to_list(arquivo)

    for item in progressbar(items, 'Contatos Escola'):
        _email = item.get('E-MAIL').strip().lower() or ''
        email = _email if email_valido(_email) else ''

        telefone1 = somente_digitos(item.get('TELEFONE'))
        if 8 < len(telefone1) > 10:
            telefone1 = None
        telefone2 = somente_digitos(item.get('TELEFONE2'))
        if 8 < len(telefone2) > 10:
            telefone2 = None

        if telefone1 or telefone2 or email:
            Contato.objects.get_or_create(
                telefone=telefone1,
                telefone2=telefone2,
                email=email,
            )