mirror of
https://github.com/peeringdb/peeringdb.git
synced 2024-05-11 05:55:09 +00:00
72 lines
2.4 KiB
Python
72 lines
2.4 KiB
Python
from django.core.management.base import BaseCommand
|
|
from peeringdb_server.models import REFTAG_MAP, NetworkContact, User, Sponsorship, Partnership
|
|
from django.core.management import call_command
|
|
from django.contrib.auth.models import Group
|
|
from django.conf import settings
|
|
|
|
class Command(BaseCommand):
|
|
help = "Wipe all peering data, including users - superusers will be kept - cannot be used in production environments"
|
|
|
|
def add_arguments(self, parser):
|
|
parser.add_argument('--commit', action='store_true',
|
|
help="will commit the changes")
|
|
|
|
parser.add_argument('--keep-users', action='store_true',
|
|
help="do not delete users")
|
|
|
|
parser.add_argument('--load-data', action='store_true',
|
|
help="load data after wipe")
|
|
|
|
parser.add_argument('--load-data-url', type=str, default="https://www.peeringdb.com/api",
|
|
help="load data from here")
|
|
|
|
|
|
|
|
def log(self, msg):
|
|
if self.commit:
|
|
self.stdout.write(msg)
|
|
else:
|
|
self.stdout.write("[pretend] {}".format(msg))
|
|
|
|
def handle(self, *args, **options):
|
|
self.commit = options.get("commit", False)
|
|
self.keep_users = options.get("keep_users", False)
|
|
self.load_data = options.get("load_data", False)
|
|
self.load_data_url = options.get("load_data_url")
|
|
|
|
if not settings.TUTORIAL_MODE:
|
|
self.log("Command can only be run with tutorial mode enabled")
|
|
return
|
|
|
|
self.log("Wiping peeringdb data")
|
|
|
|
if not self.keep_users:
|
|
if self.commit:
|
|
User.objects.filter(is_superuser=False).delete()
|
|
self.log("Deleted users")
|
|
|
|
if self.commit:
|
|
REFTAG_MAP["org"].objects.all().delete()
|
|
|
|
self.log("Deleted peering entities")
|
|
|
|
if self.commit:
|
|
Sponsorship.objects.all().delete()
|
|
Partnership.objects.all().delete()
|
|
|
|
self.log("Deleted sponsorships and partnerships")
|
|
|
|
if self.commit:
|
|
call_command("deleterevisions")
|
|
|
|
self.log("Deleted reversion data")
|
|
|
|
if self.commit:
|
|
call_command("clearsessions", stdout=self.stdout)
|
|
|
|
self.log("Cleared seassions")
|
|
|
|
if self.load_data:
|
|
call_command("pdb_load_data", commit=self.commit,
|
|
url=self.load_data_url, stdout=self.stdout)
|