mirror of https://github.com/interlegis/sapl.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
57 lines
1.9 KiB
57 lines
1.9 KiB
import json
|
|
from django.contrib.auth import get_user_model
|
|
from datetime import datetime
|
|
from django.core.serializers.json import DjangoJSONEncoder
|
|
|
|
|
|
# Função para tratar a serialização de objetos datetime
|
|
class CustomJSONEncoder(DjangoJSONEncoder):
|
|
def default(self, obj):
|
|
if isinstance(obj, datetime):
|
|
return obj.isoformat()
|
|
return super().default(obj)
|
|
|
|
|
|
# Receber o nome do usuário como parâmetro
|
|
nome_usuario = input("Digite o nome do usuário: ")
|
|
|
|
# Encontrar o usuário
|
|
User = get_user_model()
|
|
try:
|
|
usuario = User.objects.get(username=nome_usuario)
|
|
except User.DoesNotExist:
|
|
print(f"Usuário '{nome_usuario}' não encontrado.")
|
|
exit()
|
|
|
|
# Encontrar o autor relacionado
|
|
try:
|
|
autor = OperadorAutor.objects.get(user=usuario).autor
|
|
except OperadorAutor.DoesNotExist:
|
|
print(f"Nenhum autor encontrado para o usuário '{nome_usuario}'.")
|
|
exit()
|
|
|
|
# Buscar proposições não recebidas criadas por esse autor
|
|
proposicoes = Proposicao.objects.filter(autor=autor, data_recebimento__isnull=True)
|
|
|
|
# Exibir a quantidade de registros
|
|
print(f"Total de proposições encontradas: {proposicoes.count()}")
|
|
|
|
# Opção para imprimir todas as proposições filtradas
|
|
if input("Deseja imprimir todas as proposições? (s/n): ").lower() == 's':
|
|
for proposicao in proposicoes:
|
|
print(proposicao)
|
|
|
|
# Escolha para proceder com a deleção
|
|
if input("Deseja proceder com a deleção das proposições? (s/n): ").lower() == 's':
|
|
# Backup dos dados com a customização para datetime
|
|
dados_backup = list(proposicoes.values())
|
|
with open('backup_proposicoes.json', 'w') as file:
|
|
json.dump(dados_backup, file, cls=CustomJSONEncoder)
|
|
|
|
# Deletar as proposições
|
|
num_proposicoes = proposicoes.count()
|
|
proposicoes.delete()
|
|
|
|
print(f"{num_proposicoes} proposições foram deletadas. Backup realizado em 'backup_proposicoes.json'.")
|
|
else:
|
|
print("Deleção cancelada.")
|
|
|