Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: cria script para remocao de proposicoes de um autor #3703

Open
wants to merge 1 commit into
base: 3.1.x
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
57 changes: 57 additions & 0 deletions scripts/remove_proposicoes_de_autor.py
Original file line number Diff line number Diff line change
@@ -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.")