load-pratic-ldif: report validation errors

This commit is contained in:
Benjamin Dauvergne 2015-09-24 12:11:15 +02:00
parent 08703e196d
commit 20200c0216
1 changed files with 19 additions and 3 deletions

View File

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
import logging
from optparse import make_option
from datetime import datetime
@ -6,6 +7,7 @@ from itertools import chain
import ldif
from django.core.management.base import BaseCommand
from django.core.exceptions import ValidationError
from django.db import transaction
from django.utils.timezone import get_default_timezone, make_aware
@ -19,6 +21,8 @@ from authentic2_pratic.models import (Service, Collectivity, ServiceInstance,
class PraticLDIFParser(ldif.LDIFParser):
def __init__(self, *args, **kwargs):
self.services = {}
for s in Service.objects.all():
self.services[s.slug] = s
self.service_instances = {}
for si in ServiceInstance.objects.all():
self.service_instances[(si.collectivity.slug, si.slug)] = si
@ -90,7 +94,11 @@ class PraticLDIFParser(ldif.LDIFParser):
}
others = self.resolve_mapping(mapping, entry)
collectivity = Collectivity(name=name, slug=slug, **others)
collectivity.clean()
try:
collectivity.clean()
except ValidationError, e:
print 'Impossible de charger la collectivité', dn, ':', e
raise SystemExit
self.collectivities[dn] = collectivity
def handle_service(self, dn, entry):
@ -120,7 +128,11 @@ class PraticLDIFParser(ldif.LDIFParser):
is_global=is_global,
service_url=service_url,
metadata_url=metadata_url)
service.clean()
try:
service.clean()
except ValidationError, e:
print 'Impossible de charger le service', dn, ':', e
raise SystemExit
self.services[slug] = service
def handle_service_instance(self, dn, entry):
@ -140,7 +152,11 @@ class PraticLDIFParser(ldif.LDIFParser):
collectivity=collectivity,
service=service,
**others)
service_instance.clean()
try:
service_instance.clean()
except ValidationError, e:
print 'Impossible de charger l\'instance de service', dn, ':', e
raise SystemExit
return service_instance
self.service_instances[(collectivity.slug, others['slug'])] = resolve