load-pratic-ldif: handle partial loading

This commit is contained in:
Benjamin Dauvergne 2015-09-24 11:17:11 +02:00
parent ad48c52cb4
commit 08703e196d
2 changed files with 9 additions and 2 deletions

View File

@ -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():

View File

@ -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']