48 lines
1.3 KiB
Python
48 lines
1.3 KiB
Python
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])
|