import logging import requests from django.core.management.base import BaseCommand from django.conf import settings from dpp.models import MemberFederated logger = logging.getLogger('django') class Command(BaseCommand): help = "Synchronize members of DLT" def handle(self, *args, **kwargs): api = settings.API_RESOLVER if not api: logger.error("you need set the var API_RESOLVER") return api = api.strip("/") url = api + '/getAll' res = requests.get(url) if res.status_code != 200: return "Error, {}".format(res.text) response = res.json() members = response['url'] counter = members.pop('counter') if counter <= MemberFederated.objects.count(): logger.info("Synchronize members of DLT -> All Ok") return "All ok" for k, v in members.items(): id = self.clean_id(k) member = MemberFederated.objects.filter(dlt_id_provider=id).first() if member: if member.domain != v: member.domain = v member.save() continue MemberFederated.objects.create(dlt_id_provider=id, domain=v) return res.text def clean_id(self, id): return int(id.split('DH')[-1])