From 08703e196d343f946b81c7946e394971c5633fca Mon Sep 17 00:00:00 2001 From: Benjamin Dauvergne Date: Thu, 24 Sep 2015 11:17:11 +0200 Subject: [PATCH] load-pratic-ldif: handle partial loading --- .../management/commands/load-pratic-ldif.py | 9 ++++++++- src/authentic2_pratic/models.py | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/authentic2_pratic/management/commands/load-pratic-ldif.py b/src/authentic2_pratic/management/commands/load-pratic-ldif.py index f1fab45..54d9891 100644 --- a/src/authentic2_pratic/management/commands/load-pratic-ldif.py +++ b/src/authentic2_pratic/management/commands/load-pratic-ldif.py @@ -20,8 +20,12 @@ class PraticLDIFParser(ldif.LDIFParser): def __init__(self, *args, **kwargs): self.services = {} self.service_instances = {} + for si in ServiceInstance.objects.all(): + self.service_instances[(si.collectivity.slug, si.slug)] = si self.accesses = [] self.collectivities = {} + for col in Collectivity.objects.all(): + self.collectivities['ou=%s,dc=pratic59,dc=fr' % col.slug] = col self.users = [] self.log = logging.getLogger(__name__) ldif.LDIFParser.__init__(self, *args, **kwargs) @@ -205,6 +209,8 @@ class Command(BaseCommand): # set fk if not obj: return + if obj.pk: + return for attr in ('collectivity', 'service', 'service_instance', 'user'): if hasattr(obj, attr): setattr(obj, attr, getattr(obj, attr)) @@ -229,7 +235,8 @@ class Command(BaseCommand): print '', '-', len(parser.service_instances), 'service instances' print '', '-', len(parser.accesses), 'accesses' for key in parser.service_instances: - parser.service_instances[key] = parser.service_instances[key]() + if callable(parser.service_instances[key]): + parser.service_instances[key] = parser.service_instances[key]() parser.accesses = [resolve() for resolve in parser.accesses] with transaction.atomic(): with defer_update_transitive_closure(): diff --git a/src/authentic2_pratic/models.py b/src/authentic2_pratic/models.py index 4e3e02b..c286709 100644 --- a/src/authentic2_pratic/models.py +++ b/src/authentic2_pratic/models.py @@ -31,7 +31,7 @@ class User(BaseUser): # ou -> collectivity # username = uid + '@' + collectivity.slug USER_PROFILE = ['uid', 'first_name', 'last_name', 'email', 'collectivity', - 'is_admin', 'sirh_code', 'sirh_label', 'direction', + 'is_admin', 'sirh_code', 'direction', 'postal_address', 'fax', 'mobile', 'phone', 'certificate_issuer_dn', 'certificate_subject_dn']