123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- from django.core.management import BaseCommand, CommandError
- from django.db.models import Q
- from api import settings
- from desecapi.models import RRset, Domain, User
- from desecapi.pdns_change_tracker import PDNSChangeTracker
- class Command(BaseCommand):
- help = "Sets/updates limits for users and domains."
- def add_arguments(self, parser):
- parser.add_argument(
- "kind",
- help="Identifies which limit should be updated. Possible values: domains, ttl",
- )
- parser.add_argument(
- "id",
- help="Identifies the entity to be updated. Users are identified by email address; "
- "domains by their name.",
- )
- parser.add_argument("new_limit", help="New value for the limit.")
- def handle(self, *args, **options):
- if options["kind"] == "domains":
- try:
- user = User.objects.get(email=options["id"])
- except User.DoesNotExist:
- raise CommandError(
- f'User with email address "{options["id"]}" could not be found.'
- )
- user.limit_domains = options["new_limit"]
- user.save()
- print(
- f"Updated {user.email}: set max number of domains to {user.limit_domains}."
- )
- elif options["kind"] == "ttl":
- try:
- domain = Domain.objects.get(name=options["id"])
- except Domain.DoesNotExist:
- raise CommandError(
- f'Domain with name "{options["id"]}" could not be found.'
- )
- domain.minimum_ttl = options["new_limit"]
- domain.save()
- print(f"Updated {domain.name}: set minimum TTL to {domain.minimum_ttl}.")
- else:
- raise CommandError(f'Unknown limit "{options["kind"]}" specified.')
|