Flask command for clearing chain dependent db state
This commit is contained in:
parent
a8d941d539
commit
06ae67f1db
|
@ -158,6 +158,7 @@ def register_commands(app):
|
||||||
app.cli.add_command(commands.lint)
|
app.cli.add_command(commands.lint)
|
||||||
app.cli.add_command(commands.clean)
|
app.cli.add_command(commands.clean)
|
||||||
app.cli.add_command(commands.urls)
|
app.cli.add_command(commands.urls)
|
||||||
|
app.cli.add_command(commands.reset_db_chain_data)
|
||||||
app.cli.add_command(proposal.commands.create_proposal)
|
app.cli.add_command(proposal.commands.create_proposal)
|
||||||
app.cli.add_command(proposal.commands.create_proposals)
|
app.cli.add_command(proposal.commands.create_proposals)
|
||||||
app.cli.add_command(user.commands.set_admin)
|
app.cli.add_command(user.commands.set_admin)
|
||||||
|
|
|
@ -137,3 +137,37 @@ def urls(url, order):
|
||||||
|
|
||||||
for row in rows:
|
for row in rows:
|
||||||
click.echo(str_template.format(*row[:column_length]))
|
click.echo(str_template.format(*row[:column_length]))
|
||||||
|
|
||||||
|
|
||||||
|
@click.command()
|
||||||
|
@with_appcontext
|
||||||
|
def reset_db_chain_data():
|
||||||
|
"""Removes chain-state dependent entities from the database. Cannot be undone!"""
|
||||||
|
from grant.extensions import db
|
||||||
|
from grant.proposal.models import Proposal
|
||||||
|
from grant.user.models import UserSettings
|
||||||
|
from grant.task.models import Task
|
||||||
|
|
||||||
|
# Delete all proposals. Should cascade to contributions, comments etc.
|
||||||
|
p_count = 0
|
||||||
|
for proposal in Proposal.query.all():
|
||||||
|
db.session.delete(proposal)
|
||||||
|
p_count = p_count + 1
|
||||||
|
|
||||||
|
# Delete all outstanding tasks
|
||||||
|
t_count = Task.query.delete()
|
||||||
|
|
||||||
|
# Delete refund address from settings
|
||||||
|
s_count = 0
|
||||||
|
for settings in UserSettings.query.all():
|
||||||
|
if settings.refund_address:
|
||||||
|
settings.refund_address = None
|
||||||
|
db.session.add(settings)
|
||||||
|
s_count = s_count + 1
|
||||||
|
|
||||||
|
# Commit state
|
||||||
|
db.session.commit()
|
||||||
|
print('Successfully wiped chain-dependent db state!')
|
||||||
|
print(f'* Deleted {p_count} proposals and their linked entities')
|
||||||
|
print(f'* Deleted {t_count} tasks')
|
||||||
|
print(f'* Removed refund address from {s_count} user settings')
|
||||||
|
|
Loading…
Reference in New Issue