mirror of
https://github.com/peeringdb/peeringdb.git
synced 2024-05-11 05:55:09 +00:00
88 lines
2.5 KiB
Python
88 lines
2.5 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,
|
|
)
|