From e7b8ddb63110f3ab46c1bac908e61cb6f2295597 Mon Sep 17 00:00:00 2001 From: Bartuccio Antoine Date: Tue, 18 Jun 2019 16:15:30 +0200 Subject: [PATCH 1/4] pedagogy: importation from old uv guide --- migrate.py | 79 ++++++++++++++++++++++++++++- pedagogy/migrations/0001_initial.py | 4 +- pedagogy/models.py | 2 +- 3 files changed, 81 insertions(+), 4 deletions(-) diff --git a/migrate.py b/migrate.py index 8abe62e8..cc7ed4ac 100644 --- a/migrate.py +++ b/migrate.py @@ -77,6 +77,7 @@ from forum.models import ( ForumMessageMeta, ForumUserInfo, ) +from pedagogy.models import UV, UVComment db = MySQLdb.connect(**settings.OLD_MYSQL_INFOS) start = datetime.datetime.now() @@ -1568,6 +1569,81 @@ def migrate_club_again(): pass +def migrate_pedagogy(): + cur = db.cursor(MySQLdb.cursors.SSDictCursor) + + print("Migrating UVs") + root = User.objects.get(id=0) + semester_conversion = { + "closed": "CLOSED", + "A": "AUTUMN", + "P": "SPRING", + "AP": "AUTOMN_AND_SPRING", + } + + def convert_number(num, default=0): + if not num: + return default + return num + + def convert_text(text): + if not text: + return "" + return doku_to_markdown(to_unicode(text)) + + cur.execute( + """ + SELECT * FROM pedag_uv + LEFT JOIN pedag_uv_dept dept + ON dept.id_uv = pedag_uv.id_uv + """ + ) + for uv in cur: + UV( + id=uv["id_uv"], + code=uv["code"], + author=root, + credit_type=uv["type"], + semester=semester_conversion[uv["semestre"]], + language="FR", # No infos in previous guide about that + credits=convert_number(uv["guide_credits"]), + department=convert_text(uv["departement"]), + title=convert_text(uv["intitule"]), + manager=convert_text(uv["responsable"]), + objectives=convert_text(uv["guide_objectifs"]), + program=convert_text(uv["guide_programme"]), + skills="", # No info in previous guide about that + key_concepts="", # No info either + hours_CM=convert_number(uv["guide_c"]), + hours_TD=convert_number(uv["guide_td"]), + hours_TP=convert_number(uv["guide_tp"]), + hours_THE=convert_number(uv["guide_the"]), + hours_TE=0, # No info either + ).save() + + print("Migrating UV Comments") + + cur.execute("SELECT * FROM pedag_uv_commentaire") + + for comment in cur: + author = User.objects.filter(id=comment["id_utilisateur"]).first() + uv = UV.objects.filter(id=comment["id_uv"]).first() + if not author or not uv: + continue + UVComment( + id=comment["id_commentaire"], + author=author, + uv=uv, + comment=convert_text(comment["content"]), + grade_global=convert_number(comment["note_generale"], -1), + grade_utility=convert_number(comment["note_utilite"], -1), + grade_interest=convert_number(comment["note_interet"], -1), + grade_teaching=convert_number(comment["note_enseignement"], -1), + grade_work_load=convert_number(comment["note_travail"], -1), + publish_date=comment["date"], + ).save() + + def main(): print("Start at %s" % start) # Core @@ -1590,7 +1666,8 @@ def main(): # migrate_forum() # reset_index('forum') # migrate_mailings() - migrate_club_again() + # migrate_club_again() + migrate_pedagogy() end = datetime.datetime.now() print("End at %s" % end) print("Running time: %s" % (end - start)) diff --git a/pedagogy/migrations/0001_initial.py b/pedagogy/migrations/0001_initial.py index 37c7f044..5cf26d43 100644 --- a/pedagogy/migrations/0001_initial.py +++ b/pedagogy/migrations/0001_initial.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Generated by Django 1.11.20 on 2019-06-18 08:52 +# Generated by Django 1.11.20 on 2019-06-18 15:02 from __future__ import unicode_literals from django.conf import settings @@ -248,7 +248,7 @@ class Migration(migrations.Migration): ), ( "publish_date", - models.DateField(auto_now=True, verbose_name="publish date"), + models.DateTimeField(auto_now=True, verbose_name="publish date"), ), ( "author", diff --git a/pedagogy/models.py b/pedagogy/models.py index 616d1129..bb03c13e 100644 --- a/pedagogy/models.py +++ b/pedagogy/models.py @@ -211,7 +211,7 @@ class UVComment(models.Model): null=False, default=-1, ) - publish_date = models.DateField(_("publish date"), auto_now=True) + publish_date = models.DateTimeField(_("publish date"), auto_now=True) class UVResult(models.Model): From d18f0aa829eba24def4021744a02587a90509f77 Mon Sep 17 00:00:00 2001 From: Bartuccio Antoine Date: Tue, 18 Jun 2019 17:43:13 +0200 Subject: [PATCH 2/4] pedagogy: import results from old uv guide --- migrate.py | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/migrate.py b/migrate.py index cc7ed4ac..14f8d092 100644 --- a/migrate.py +++ b/migrate.py @@ -77,7 +77,7 @@ from forum.models import ( ForumMessageMeta, ForumUserInfo, ) -from pedagogy.models import UV, UVComment +from pedagogy.models import UV, UVComment, UVResult db = MySQLdb.connect(**settings.OLD_MYSQL_INFOS) start = datetime.datetime.now() @@ -1643,6 +1643,22 @@ def migrate_pedagogy(): publish_date=comment["date"], ).save() + print("Migrating UV Results") + cur.execute("SELECT * FROM pedag_resultat") + + for result in cur: + author = User.objects.filter(id=comment["id_utilisateur"]).first() + uv = UV.objects.filter(id=comment["id_uv"]).first() + if not author or not uv: + continue + UVResult( + id=result["id_resultat"], + uv=uv, + user=author, + grade=result["note"], + semester=result["semestre"], + ).save() + def main(): print("Start at %s" % start) From 2aa465b138fd16c1bde55c7c84fb8020b2bbaa49 Mon Sep 17 00:00:00 2001 From: Bartuccio Antoine Date: Tue, 18 Jun 2019 21:55:12 +0200 Subject: [PATCH 3/4] pedagogy: don't update uv comment publish date at each save --- migrate.py | 2 +- pedagogy/migrations/0001_initial.py | 4 ++-- pedagogy/models.py | 8 +++++++- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/migrate.py b/migrate.py index 14f8d092..fc19b89a 100644 --- a/migrate.py +++ b/migrate.py @@ -1640,7 +1640,7 @@ def migrate_pedagogy(): grade_interest=convert_number(comment["note_interet"], -1), grade_teaching=convert_number(comment["note_enseignement"], -1), grade_work_load=convert_number(comment["note_travail"], -1), - publish_date=comment["date"], + publish_date=comment["date"].replace(tzinfo=timezone("Europe/Paris")), ).save() print("Migrating UV Results") diff --git a/pedagogy/migrations/0001_initial.py b/pedagogy/migrations/0001_initial.py index 5cf26d43..9b4133f8 100644 --- a/pedagogy/migrations/0001_initial.py +++ b/pedagogy/migrations/0001_initial.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Generated by Django 1.11.20 on 2019-06-18 15:02 +# Generated by Django 1.11.20 on 2019-06-18 20:07 from __future__ import unicode_literals from django.conf import settings @@ -248,7 +248,7 @@ class Migration(migrations.Migration): ), ( "publish_date", - models.DateTimeField(auto_now=True, verbose_name="publish date"), + models.DateTimeField(blank=True, verbose_name="publish date"), ), ( "author", diff --git a/pedagogy/models.py b/pedagogy/models.py index bb03c13e..30b3076b 100644 --- a/pedagogy/models.py +++ b/pedagogy/models.py @@ -24,6 +24,7 @@ from django.db import models from django.utils.translation import ugettext_lazy as _ +from django.utils import timezone from django.core import validators from django.conf import settings @@ -211,7 +212,12 @@ class UVComment(models.Model): null=False, default=-1, ) - publish_date = models.DateTimeField(_("publish date"), auto_now=True) + publish_date = models.DateTimeField(_("publish date"), blank=True) + + def save(self, *args, **kwargs): + if self.publish_date is None: + self.publish_date = timezone.now() + super(UVComment, self).save(*args, **kwargs) class UVResult(models.Model): From f0560f0d2a2ca3b7cfd3bbdef499ac2fcf617175 Mon Sep 17 00:00:00 2001 From: Bartuccio Antoine Date: Wed, 19 Jun 2019 01:37:06 +0200 Subject: [PATCH 4/4] pedagogy: fix import for HUMA on old database --- migrate.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/migrate.py b/migrate.py index fc19b89a..8d2dcee8 100644 --- a/migrate.py +++ b/migrate.py @@ -1581,6 +1581,12 @@ def migrate_pedagogy(): "AP": "AUTOMN_AND_SPRING", } + def department_conversion(department): + # Default of this enum is HUMA + if not department or department == "Humas": + return "HUMA" + return department + def convert_number(num, default=0): if not num: return default @@ -1607,7 +1613,7 @@ def migrate_pedagogy(): semester=semester_conversion[uv["semestre"]], language="FR", # No infos in previous guide about that credits=convert_number(uv["guide_credits"]), - department=convert_text(uv["departement"]), + department=department_conversion(uv["departement"]), title=convert_text(uv["intitule"]), manager=convert_text(uv["responsable"]), objectives=convert_text(uv["guide_objectifs"]),