diff --git a/dandiapi/api/management/commands/revalidate.py b/dandiapi/api/management/commands/revalidate.py new file mode 100644 index 000000000..9a4d46722 --- /dev/null +++ b/dandiapi/api/management/commands/revalidate.py @@ -0,0 +1,25 @@ +import djclick as click + +from dandiapi.api.models import Asset, Version +from dandiapi.api.tasks import validate_asset_metadata, validate_version_metadata + + +@click.command() +@click.option('--assets', is_flag=True, default=False) +@click.option('--versions', is_flag=True, default=False) +def revalidate(assets: bool, versions: bool): + """ + Revalidate all Versions and Assets. + + This script will run the validation immediately in band without dispatching tasks to the queue. + """ + if assets: + click.echo('Revalidating assets') + for asset in Asset.objects.values('id'): + validate_asset_metadata(asset['id']) + + if versions: + click.echo('Revalidating versions') + # Only revalidate draft versions + for version in Version.objects.filter(version='draft').values('id'): + validate_version_metadata(version['id'])