# HG changeset patch # User bellierp # Date 1492093226 -7200 # Node ID ff3b847c14a292a53d07540c3c4aa5a111c39077 # Parent c7a01f03c19cb36c516a0256c28b7f52d216ce7c set contents order in title + add edition tag diff -r c7a01f03c19c -r ff3b847c14a2 src/ldtplatform/management/commands/importamateur.py --- a/src/ldtplatform/management/commands/importamateur.py Thu Apr 06 12:52:56 2017 +0200 +++ b/src/ldtplatform/management/commands/importamateur.py Thu Apr 13 16:20:26 2017 +0200 @@ -2,9 +2,10 @@ Imports amateur.iri.centrepompidou.fr/nouveaumonde files to ldt.iri ''' import csv +import re import sys +import requests -import requests from django.core.management.base import BaseCommand from django.core import management from lxml import etree @@ -23,7 +24,47 @@ ''' return "http://amateur.iri.centrepompidou.fr" + iri_url +def create_title(edition, day, name, order, session): + ''' + create title + ''' + if re.match(r'....\_1', edition) or edition == '2009': + event = "Prepa ENMI " + else: + event = "ENMI " + session += 1 + return event + edition[0:4] + " - " + str(day) + "." + str(session) + "." + str(order) + " - " + name +def create_name(fname, lname): + ''' + create name + ''' + if fname is None: + if lname is None: + return "" + return lname + if lname is None: + return fname + return fname + " " + lname +def create_tmp(edition, title): + ''' + create temp to check medias with two authors + ''' + if re.match(r'....\_1', edition) or edition == '2009': + length = 24 + else: + length = 18 + return title[0:length] + +def create_tag(edition): + ''' + create name + ''' + if re.match(r'....\_1', edition) or edition == '2009': + event = "prepaenmi" + else: + event = "enmi" + return event + edition[0:4] class Command(BaseCommand): ''' command @@ -90,11 +131,22 @@ return cursor = connections['default2'].cursor() - cursor.execute('SELECT ct.iri_id, ct.iriurl, ct.creation_date, ct.title, ct.description,\ - pj.ldt_id, pj.ldt\ - FROM ldt_content AS ct INNER JOIN ldt_ldtproject_contents\ - AS ctpj ON ct.id = ctpj.content_id\ - INNER JOIN ldt_ldtproject AS pj ON ctpj.ldtproject_id = pj.id;' + cursor.execute('SELECT ct.iri_id, ct.iriurl, ct.creation_date, ct.description,\ + pj.ldt,\ + day._order,\ + edit.code,\ + pers.firstname, pers.lastname,\ + speak.order,\ + sess._order\ + FROM ldt_content AS ct\ + LEFT JOIN ldt_ldtproject_contents AS ctpj ON ct.id = ctpj.content_id\ + LEFT JOIN ldt_ldtproject AS pj ON ctpj.ldtproject_id = pj.id\ + LEFT JOIN conf_speak AS speak ON ct.id=speak.content_id\ + LEFT JOIN conf_session AS sess ON sess.event_ptr_id=speak.session_id\ + LEFT JOIN conf_day AS day ON sess.day_id=day.event_ptr_id\ + LEFT JOIN conf_edition AS edit ON day.edition_id=edit.event_ptr_id\ + LEFT JOIN conf_speak_speakers AS spkr ON speak.event_ptr_id=spkr.speak_id\ + LEFT JOIN conf_person AS pers ON spkr.person_id=pers.id;' ) amateurdata = cursor.fetchall() reload(sys) @@ -103,23 +155,57 @@ self.myfile = csv.reader(csvfile) self.writefile = csv.writer(csvfile2) self.mylist = list(self.myfile) + titletmp = '' for mediaproj in amateurdata: iri_id = mediaproj[0] + mysource = create_source(iri_id) + dayorder = mediaproj[5] + edition = mediaproj[6] + sessionorder = mediaproj[10] + speakorder = mediaproj[9] + firstname = mediaproj[7] + lastname = mediaproj[8] + if dayorder is None and edition is None: + title = iri_id + fullname = '' + tag = iri_id + else: + tag = create_tag(edition) + fullname = create_name(firstname, lastname) + title = create_title(edition, dayorder + 1, fullname, speakorder, sessionorder) try: - models.Project.objects.get(title='front project : %s' % iri_id) + mymedia = models.Media.objects.get(src=mysource) + mycontent = models.Content.objects.get(media_obj_id=mymedia.id) + thisregex = r"front project : " + titletmp + r".*" + myproject = models.Project.objects.get(title__iregex=thisregex) + myregex = r".*" + re.escape(fullname) + r".*" + if not re.match(myregex, mycontent.title): + mycontent.title += " & " + mycontent.title += fullname + mycontent.save() + myproject.title += " & " + myproject.title += fullname + myproject.save() continue - except models.Project.MultipleObjectsReturned: + except (models.Media.MultipleObjectsReturned, + models.Content.MultipleObjectsReturned, + models.Project.MultipleObjectsReturned + ): continue - except models.Project.DoesNotExist: - self.stdout.write('Media %s will be created'%iri_id) + except (models.Media.DoesNotExist, + models.Content.DoesNotExist, + models.Project.DoesNotExist + ): + self.stdout.write('Media %s and Content %s will be created'%(iri_id, title)) iriurl = mediaproj[1] - #TODO set creationdate, title... - # creationdate = mediaproj[2] - # title = mediaproj[3] - description = mediaproj[4] - # ldt_id = mediaproj[5] - # ldt = mediaproj[6] - mysource = create_source(iri_id) + if dayorder is None and edition is None: + titletmp = '' + else: + titletmp = create_tmp(edition, title) + #TODO set creationdate + #creationdate = mediaproj[2] + description = mediaproj[3] + # ldt = mediaproj[4] myiriurl = create_iri_url(iriurl) myiri = requests.get(myiriurl)._content duration = self.get_duration(mysource) @@ -127,20 +213,22 @@ management.call_command( 'createmediacontent', source=mysource, - title=iri_id, + title=title, videopath='', description=description, duration=duration, public=True, creator='admin', - update=True + update=True, + tags=tag ) - myfrontproj = models.Project.objects.get(title='front project : %s' % iri_id) + myfrontproj = models.Project.objects.get(title='front project : %s' % title) myfrontproj.ldt = self.change_annotations(myiri, myfrontproj.ldt) self.writefile.writerow([mysource, iri_id, - models.Content.objects.get(title=iri_id).iri_id, - myfrontproj.ldt_id + models.Content.objects.get(title=title).iri_id, + title, + myfrontproj.ldt_id, ]) self.stdout.write("Project changed") myfrontproj.save()