<commit_before>import datetime
import time
from pprint import pprint

from django import forms
from django.contrib.auth.models import User
from django.db import connections
from django.shortcuts import render
from django.urls import reverse
from django.views import View

import base.models

import persona.forms
import persona.queries as queries


class CriaUsuario(View):

    def __init__(self):
        self.Form_class = persona.forms.CriaUsuarioForm
        self.template_name = 'persona/cria_usuario.html'
        self.context = {'titulo': 'Criar usuário'}

    def mount_context(self):
        self.erro = False
        self.sucesso = False
        cursor = connections['so'].cursor()
        pcursor = connections['persona'].cursor()

        try:
            usuario = base.models.Colaborador.objects.get(
                matricula=self.context['codigo'])
            self.context.update({
                'erro': 'Usuário com essa matrícula já cadastrado como '
                        'colaborador',
                'login': usuario.user,
            })
            self.erro = True
            return
        except base.models.Colaborador.DoesNotExist:
            pass

        try:
            matricula_em_sobrenome = f"({self.context['codigo'].lstrip('0')})"
            usuario = User.objects.get(
                last_name__contains=matricula_em_sobrenome)
            self.context.update({
                'erro': 'Usuário com essa matrícula já cadastrado como '
                        'usuário',
                'login': usuario.username,
            })
            self.erro = True
            return
        except User.DoesNotExist:
            pass

        data = queries.trabalhadores(
            pcursor,
            **{f: self.context[f] for f in ['codigo']})
        if len(data) != 1:
            self.context.update({
                'erro': 'Trabalhador com esse código não encontrado',
            })
            self.erro = True
            return
        trabalhador = data[0]
        self.context.update({
            'trabalhador': trabalhador,
            'ultimo_sobrenome': trabalhador['nome'].title().split()[-1],
        })

        if 'verifica' in self.context:
            cpf_ok = trabalhador['cpf'] == self.context['cpf']
            nascimento_ok = (
                trabalhador['nascimento'] == self.context['nascimento'])
            if not cpf_ok or not nascimento_ok:
                self.context.update({
                    'erro': 'Dados informados não compatíveis com o '
                            'cadastrado.',
                })
                self.erro = True
                return

        if 'cria' in self.context:
            matricula = self.context['codigo']
            nome_completo = trabalhador['nome'].title()
            nomes = nome_completo.split()
            first_name = nomes[0]
            last_name = ' '.join(nomes[1:])
            password = (
                f"{self.context['cpf'][:4]}"
                f"{first_name[0].lower()}"
                f"{str(round(time.time() * 1000))[-3:]}"
                )
            usuario = User.objects.create_user(
                username=matricula,
                first_name=first_name,
                last_name=last_name,
                password=password)

            colab = base.models.Colaborador()
            colab.user = usuario
            colab.matricula = matricula
            colab.nome = nome_completo
            colab.nascimento = trabalhador['nascimento']
            colab.cpf = self.context['cpf']
            colab.save()

            self.context.update({<commit_msg>data digitada<commit_after>import datetime
import time
from pprint import pprint

from django import forms
from django.contrib.auth.models import User
from django.db import connections
from django.shortcuts import render
from django.urls import reverse
from django.views import View

import base.models

import persona.forms
import persona.queries as queries


class CriaUsuario(View):

    def __init__(self):
        self.Form_class = persona.forms.CriaUsuarioForm
        self.template_name = 'persona/cria_usuario.html'
        self.context = {'titulo': 'Criar usuário'}

    def mount_context(self):
        self.erro = False
        self.sucesso = False
        cursor = connections['so'].cursor()
        pcursor = connections['persona'].cursor()

        try:
            usuario = base.models.Colaborador.objects.get(
                matricula=self.context['codigo'])
            self.context.update({
                'erro': 'Usuário com essa matrícula já cadastrado como '
                        'colaborador',
                'login': usuario.user,
            })
            self.erro = True
            return
        except base.models.Colaborador.DoesNotExist:
            pass

        try:
            matricula_em_sobrenome = f"({self.context['codigo'].lstrip('0')})"
            usuario = User.objects.get(
                last_name__contains=matricula_em_sobrenome)
            self.context.update({
                'erro': 'Usuário com essa matrícula já cadastrado como '
                        'usuário',
                'login': usuario.username,
            })
            self.erro = True
            return
        except User.DoesNotExist:
            pass

        data = queries.trabalhadores(
            pcursor,
            **{f: self.context[f] for f in ['codigo']})
        if len(data) != 1:
            self.context.update({
                'erro': 'Trabalhador com esse código não encontrado',
            })
            self.erro = True
            return
        trabalhador = data[0]
        self.context.update({
            'trabalhador': trabalhador,
            'ultimo_sobrenome': trabalhador['nome'].title().split()[-1],
        })

        if 'verifica' in self.context:
            cpf_ok = trabalhador['cpf'] == self.context['cpf']
            nascimento_ok = (
                trabalhador['nascimento'] == self.context['nascimento'])
            if not cpf_ok or not nascimento_ok:
                self.context.update({
                    'erro': 'Dados informados não compatíveis com o '
                            'cadastrado.',
                })
                self.erro = True
                return

        if 'cria' in self.context:
            matricula = self.context['codigo']
            nome_completo = trabalhador['nome'].title()
            nomes = nome_completo.split()
            first_name = nomes[0]
            last_name = ' '.join(nomes[1:])
            password = (
                f"{self.context['cpf'][:4]}"
                f"{first_name[0].lower()}"
                f"{str(round(time.time() * 1000))[-3:]}"
                )
            usuario = User.objects.create_user(
                username=matricula,
                first_name=first_name,
                last_name=last_name,
                password=password)

            colab = base.models.Colaborador()
            colab.user = usuario
            colab.matricula = matricula
            colab.nome = nome_completo
            colab.nascimento = self.context['nascimento']
            colab.cpf = self.context['cpf']
            colab.save()

            self.context.update({
{'fraction_non_alphanumeric': 0.10448585231193927, 'fraction_numerical': 0.0035886818495514147, 'mean_word_length': 1.6187206360679436, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5429742', 'n_tokens_mistral': 2140, 'n_tokens_neox': 2062, 'n_words': 410}