[Scodoc-devel] [SVN] Scolar : [1506] Fixed harmfull constraint on notes_ue_code_apogee

eviennet at lipn.univ-paris13.fr eviennet at lipn.univ-paris13.fr
Jeu 11 Fév 20:38:37 CET 2016


Une pièce jointe HTML a été nettoyée...
URL: <https://www-rt.iutv.univ-paris13.fr/pipermail/scodoc-devel/attachments/20160211/231f29a8/attachment.html>
-------------- section suivante --------------
Modified: branches/ScoDoc7/config/postupgrade-db.py
===================================================================
--- branches/ScoDoc7/config/postupgrade-db.py	2016-02-03 13:40:01 UTC (rev 1505)
+++ branches/ScoDoc7/config/postupgrade-db.py	2016-02-11 19:38:37 UTC (rev 1506)
@@ -420,6 +420,10 @@
     check_field(cnx, 'admissions', 'classement',
                 ['alter table admissions add column classement integer default NULL',
                  ])
+    # Supprime contrainte erronée:
+    if list_constraint( cnx, constraint_name='notes_ue_code_apogee_key' ):
+        log('dropping buggy constraint on notes_ue_code_apogee')
+        cursor.execute("alter  table notes_ue drop CONSTRAINT notes_ue_code_apogee_key;")
     # Add here actions to performs after upgrades:
     
     cnx.commit()

Modified: branches/ScoDoc7/config/scodocutils.py
===================================================================
--- branches/ScoDoc7/config/scodocutils.py	2016-02-03 13:40:01 UTC (rev 1505)
+++ branches/ScoDoc7/config/scodocutils.py	2016-02-11 19:38:37 UTC (rev 1506)
@@ -46,6 +46,14 @@
     fields = [ f[0] for f in r ]
     return field in fields
 
+def list_constraint(cnx, constraint_name=''):
+    "liste la contrainte (utile surtout pour savoir si elle existe)"
+    cursor = cnx.cursor()
+    cursor.execute("SELECT * FROM information_schema.table_constraints WHERE constraint_name = %(constraint_name)s", 
+                   { 'constraint_name' : constraint_name } )
+    return cursor.fetchall()
+    
+
 def _run_sql( sql, cnx ):
     cursor = cnx.cursor()
     error = False

Modified: branches/ScoDoc7/misc/createtables.sql
===================================================================
--- branches/ScoDoc7/misc/createtables.sql	2016-02-03 13:40:01 UTC (rev 1505)
+++ branches/ScoDoc7/misc/createtables.sql	2016-02-11 19:38:37 UTC (rev 1506)
@@ -280,7 +280,7 @@
 	ue_code text default notes_newid_fcod('UCOD') NOT NULL,
     ects real, -- nombre de credits ECTS
     is_external integer default 0, -- si UE effectuee dans le cursus d'un autre etablissement
-    code_apogee text UNIQUE -- id de l'element pedagogique Apogee correspondant
+    code_apogee text  -- id de l'element pedagogique Apogee correspondant
 ) WITH OIDS;
 
 CREATE TABLE notes_matieres (

Modified: branches/ScoDoc7/notes_table.py
===================================================================
--- branches/ScoDoc7/notes_table.py	2016-02-03 13:40:01 UTC (rev 1505)
+++ branches/ScoDoc7/notes_table.py	2016-02-11 19:38:37 UTC (rev 1506)
@@ -898,6 +898,8 @@
         ne regarde pas les décisions d'UE (todo: à voir ?)
         """
         for etudid in self.get_etudids():
+            if self.inscrdict[etudid]['etat'] == 'D':
+                continue # skip demissionnaires
             if self.get_etud_decision_sem(etudid) is None:
                 return False
         return True


Plus d'informations sur la liste de diffusion Scodoc-devel