mirror of https://github.com/interlegis/sigi.git
Sesostris Vieira
2 years ago
10 changed files with 51 additions and 10 deletions
@ -0,0 +1,41 @@ |
|||||
|
from django.db.models import Q |
||||
|
from django.contrib.auth.models import User |
||||
|
from django_extensions.management.jobs import DailyJob |
||||
|
from sigi.apps.casas.models import Orgao, Funcionario |
||||
|
|
||||
|
|
||||
|
class Job(DailyJob): |
||||
|
help = "Ativa / desativa usuários para os Contatos Interlegis" |
||||
|
|
||||
|
def execute(self): |
||||
|
# Seleciona contatos interlegis com mínimo de informações |
||||
|
# (nome, cpf, email). Elegíveis para fazer login no sistema |
||||
|
contatos = Funcionario.objects.filter( |
||||
|
setor="contato_interlegis" |
||||
|
).exclude(Q(nome="") | Q(cpf="") | Q(email="")) |
||||
|
|
||||
|
# Ativa / atualiza usuários para os contatos interlegis elegíveis |
||||
|
for contato in contatos: |
||||
|
email = contato.email |
||||
|
first, *__, last = f"{contato.nome} ".split(" ") |
||||
|
user, created = User.objects.update_or_create( |
||||
|
defaults={ |
||||
|
"email": email, |
||||
|
"first_name": first, |
||||
|
"last_name": last, |
||||
|
"is_active": True, |
||||
|
"is_staff": False, |
||||
|
"is_superuser": False, |
||||
|
}, |
||||
|
username=email, |
||||
|
) |
||||
|
print( |
||||
|
f"{['Updated', 'Created'][created]} user {user.username} for contato {contato.id}" |
||||
|
) |
||||
|
# Desativa usuários de contatos que não estão na lista de elegíveis |
||||
|
qtd_desativados = ( |
||||
|
User.objects.filter(username__contains="@", is_active=True) |
||||
|
.exclude(username__in=contatos.values_list("email", flat=True)) |
||||
|
.update(is_active=False) |
||||
|
) |
||||
|
print(f"{qtd_desativados} usuários desativados") |
@ -1,9 +0,0 @@ |
|||||
from django_extensions.management.jobs import BaseJob |
|
||||
|
|
||||
|
|
||||
class Job(BaseJob): |
|
||||
help = "My sample job." |
|
||||
|
|
||||
def execute(self): |
|
||||
# executing empty sample job |
|
||||
pass |
|
Loading…
Reference in new issue