IdHub/idhub/management/commands/open_service.py
2025-01-30 13:01:28 +01:00

43 lines
1.2 KiB
Python

import logging
from nacl.exceptions import CryptoError
from django.core.management.base import BaseCommand
from django.core.management import call_command
from django.core.cache import cache
from idhub.models import DID
logger = logging.getLogger(__name__)
class Command(BaseCommand):
help = "Command for open de service"
def add_arguments(self, parser):
parser.add_argument('key', nargs='?', default='', type=str, help='key')
parser.add_argument('ip_port', nargs='?', default='', type=str, help='ip_port')
def handle(self, *args, **kwargs):
self._key = kwargs["key"]
self.ip_port = kwargs["ip_port"]
cache.set("KEY_DIDS", self._key, None)
if not DID.objects.exists():
cache.set("KEY_DIDS", self._key, None)
call_command('runserver', self.ip_port)
return
did = DID.objects.first()
cache.set("KEY_DIDS", self._key, None)
try:
did.get_key_material()
except CryptoError:
cache.set("KEY_DIDS", None)
txt = "Key no valid!"
logger.error(txt)
return
cache.set("KEY_DIDS", self._key, None)
call_command('runserver', self.ip_port)