Browse Source

feat: cria script para remocao de proposicoes de um autor

cria-script-remove-proposicoes-por-autor
joao 11 months ago
parent
commit
42bf7cea1c
  1. 57
      scripts/remove_proposicoes_de_autor.py

57
scripts/remove_proposicoes_de_autor.py

@ -0,0 +1,57 @@
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.")
Loading…
Cancel
Save