From 587a94e8c4ddaa245fc61d912a6bf5fb57996911 Mon Sep 17 00:00:00 2001 From: Johan Lundberg Date: Wed, 2 Apr 2014 12:31:00 +0200 Subject: Catch IntegrityError when doing a full import. --- meetingtools/apps/content/models.py | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) (limited to 'meetingtools/apps/content/models.py') diff --git a/meetingtools/apps/content/models.py b/meetingtools/apps/content/models.py index 58233ac..5b076b3 100644 --- a/meetingtools/apps/content/models.py +++ b/meetingtools/apps/content/models.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- __author__ = 'lundberg' -from django.db import models +from django.db import models, IntegrityError from django.db.models.fields import CharField, BigIntegerField, IntegerField from django.db.models.fields.related import ForeignKey from django.contrib.auth.models import User @@ -71,20 +71,23 @@ class Content(models.Model): datecreated = row.findtext('date-created') if not datecreated: datecreated = row.findtext('date-modified') - - content, created = Content.objects.get_or_create( - sco=get_sco(acc, sco_id), - creator=user, - name=row.findtext('name'), - folder_sco=get_sco(acc, sco_element.get('folder-id')), - type=row.get('icon'), - urlpath=row.findtext('url'), - bytecount=byte_count, - created=datecreated, - modified=row.findtext('date-modified'), - views=views['views'], - lastviewed=views['last-viewed-date'] - ) + try: + content, created = Content.objects.get_or_create( + sco=get_sco(acc, sco_id), + creator=user, + name=row.findtext('name'), + folder_sco=get_sco(acc, sco_element.get('folder-id')), + type=row.get('icon'), + urlpath=row.findtext('url'), + bytecount=byte_count, + created=datecreated, + modified=row.findtext('date-modified'), + views=views['views'], + lastviewed=views['last-viewed-date'] + ) + except IntegrityError: + content = Content.objects.get(sco=get_sco(acc, sco_id)) + created = False if not created: Content.objects.filter(sco=content.sco).update( creator=user, -- cgit v1.1