[Scodoc-devel] [SVN] Scolar : [1527] Export Apo: interface utilisateur

eviennet at lipn.univ-paris13.fr eviennet at lipn.univ-paris13.fr
Mer 13 Juil 17:21:19 CEST 2016


Une pièce jointe HTML a été nettoyée...
URL: <https://www-rt.iutv.univ-paris13.fr/pipermail/scodoc-devel/attachments/20160713/122477ef/attachment.html>
-------------- section suivante --------------
Modified: branches/ScoDoc7/ZNotes.py
===================================================================
--- branches/ScoDoc7/ZNotes.py	2016-07-13 11:05:10 UTC (rev 1526)
+++ branches/ScoDoc7/ZNotes.py	2016-07-13 15:21:19 UTC (rev 1527)
@@ -2703,18 +2703,21 @@
     apo_csv_export_results = sco_etape_apogee_view.apo_csv_export_results
 
     # sco_semset
-    security.declareProtected(ScoEditApo, 'semset_status')
-    semset_status = sco_semset.semset_status
-    
     security.declareProtected(ScoEditApo, 'semset_page')
     semset_page = sco_semset.semset_page
     
     security.declareProtected(ScoEditApo, 'do_semset_create')
     do_semset_create = sco_semset.do_semset_create
 
+    security.declareProtected(ScoEditApo, 'do_semset_delete')
+    do_semset_delete = sco_semset.do_semset_delete
+    
+    security.declareProtected(ScoEditApo, 'edit_semset_set_title')
+    edit_semset_set_title = sco_semset.edit_semset_set_title
+    
     security.declareProtected(ScoEditApo, 'do_semset_add_sem')
     do_semset_add_sem = sco_semset.do_semset_add_sem
-
+    
     security.declareProtected(ScoEditApo, 'do_semset_remove_sem')
     do_semset_remove_sem = sco_semset.do_semset_remove_sem
     

Modified: branches/ScoDoc7/sco_etape_apogee_view.py
===================================================================
--- branches/ScoDoc7/sco_etape_apogee_view.py	2016-07-13 11:05:10 UTC (rev 1526)
+++ branches/ScoDoc7/sco_etape_apogee_view.py	2016-07-13 15:21:19 UTC (rev 1527)
@@ -62,20 +62,24 @@
     ok_for_export &= semset['jury_ok']
     
     H = [ context.sco_header(REQUEST, page_title='Export Apogée' ),
-          '''<h2>Préparation export Apogée</h2>'''
+          '''<h2>Export des résultats vers Apogée</h2>'''
           '''<div class="semset_descr">''',
           semset.html_descr(),
+          semset.html_form_sems(),
           '''</div>'''
     ]
     
     # Maquettes enregistrées
-    H.append('<div class="apo_csv_list">')
+    H.append('''<div class="apo_csv_list">
+    <span class="box_title">Maquettes Apogée</span>
+    ''')
     if not tab_archives.is_empty():
         H.append( tab_archives.html() )
     else:
         H.append( '''<p><em>Aucune maquette chargée</em></p>''' )
     # Upload fichier:
     H.append('''<form id="apo_csv_add" action="view_apo_csv_store" method="post" enctype="multipart/form-data">
+        Charger votre fichier maquette Apogée: 
         <input type="file" size="30" name="csvfile"/>
         <input type="hidden" name="semset_id" value="%s"/>
         <input type="submit" value="Ajouter ce fichier"/>
@@ -114,13 +118,14 @@
     
     H.append('<div class="apo_csv_status %s">' % class_ok)
     if ok_for_export:
+        H.append('''<span class="box_title">Exportation</span>''')
         H.append('<ul>')
         if nips_no_sco: # seulement un warning
             url_list = 'view_apo_etuds?semset_id=%s&title=Etudiants%%20presents%%20dans%%20maquettes%%20Apogee%%20mais%%20pas%%20dans%%20les%%20semestres%%20ScoDoc:&nips=%s' % (semset_id, '&nips='.join(nips_no_sco) )
             H.append('<li class="apo_csv_warning">Attention: il y a <a href="%s">%d étudiant(s)</a> dans les maquettes Apogée chargées non inscrit(s) dans ce semestre ScoDoc;</li>' % (url_list, len(nips_no_sco)) )
-        H.append('<ul>')
+        H.append('</ul>')
     else:
-        H.append('''<span>Problèmes à résoudre avant export des résultats:</span>''')
+        H.append('''<span class="box_title">Problèmes à résoudre avant export des résultats:</span>''')
         H.append('<div class="apo_csv_problems"><ul>')
         
         if etapes_missing_csv:
@@ -142,7 +147,6 @@
             H.append('<li><a href="%s">%d étudiants</a> présents dans les <em>plusieurs</em> maquettes Apogée chargées</li>' % (url_list, len(apo_dups)) )
         
         H.append('</ul></div>')
-    H.append('</div>')
 
     # Decisions de jury
     if semset['jury_ok']:
@@ -170,7 +174,7 @@
     
     H.append('<div>')
     if semset and ok_for_export:        
-        H.append('''<form action="apo_csv_export_results" method="get">
+        H.append('''<form class="form_apo_export" action="apo_csv_export_results" method="get">
             <input type="submit" value="Export vers Apogée">
             <input type="hidden" name="semset_id" value="%s"/>
             </form>''' % (semset_id,))
@@ -178,8 +182,8 @@
     H.append('</div>')
 
 
+    H.append('</div>')
     
-    
     # Aide:
     H.append('''<div class="pas_help">
     <h3>Explications</h3>
@@ -446,7 +450,7 @@
                              init_qtip = True,
                              javascripts=['js/etud_info.js'] ),
           '''<h2>Etudiants dans la maquette Apogée %s</h2>''' % etape_apo,
-          '''<p>Pour l'ensemble <a class="stdlink" href="semset_status?semset_id=%(semset_id)s">%(title)s</a> (indice semestre: %(sem_id)s)</p>''' % semset
+          '''<p>Pour l'ensemble <a class="stdlink" href="apo_semset_maq_status?semset_id=%(semset_id)s">%(title)s</a> (indice semestre: %(sem_id)s)</p>''' % semset
           ]
     # Infos générales
     H.append("""

Modified: branches/ScoDoc7/sco_semset.py
===================================================================
--- branches/ScoDoc7/sco_semset.py	2016-07-13 11:05:10 UTC (rev 1526)
+++ branches/ScoDoc7/sco_semset.py	2016-07-13 15:21:19 UTC (rev 1527)
@@ -110,12 +110,11 @@
         else:
             self['date_debut'] = ''
             self['date_fin'] = ''
-        self['_title_target'] = 'semset_status?semset_id=%s' % self.semset_id
+        
         self['etapes'] = self.list_etapes()
         self['semtitles'] = [ sem['titre_num'] for sem in self.sems ]
         self['semtitles_str'] = ', '.join(self['semtitles'])
-        self['_semtitles_str_target'] = self['_title_target']
-
+    
     def fill_formsemestres(self,REQUEST):
         for sem in self.sems:
             sco_formsemestre_status.fill_formsemestre(self.context, sem, REQUEST)
@@ -196,7 +195,7 @@
     def html_descr(self):
         """Short HTML description
         """
-        H = [ '''<h3>Ensemble de semestres %(title)s</h3>''' % self ]
+        H = [ '''<span class="box_title">Ensemble de semestres %(title)s</span>''' % self ]
         if self['annee_scolaire']:
             H.append('<p>Année scolaire: %(annee_scolaire)s</p>' % self)
         else:
@@ -226,9 +225,29 @@
             H.append('</br><em>vérifier les semestres antécédents !</em>')
             H.append('</li>')
         
-        return ''.join(H)
+        return '\n'.join(H)
 
+    def html_form_sems(self):
+        """HTML form to manage sems"""
+        H = []
+        possible_sems = self.list_possible_sems()
+        if possible_sems:
+            menu_sem = """<select name="formsemestre_id">
+            <option value="" selected>(semestre)</option>"""
+            for sem in possible_sems:
+                menu_sem += """<option value="%(formsemestre_id)s">%(titreannee)s</option>\n""" % sem
+            menu_sem += """</select>"""
+            H.append('<form action="do_semset_add_sem" method="post">Ajouter un semestre:')
+            H.append(menu_sem)
+            H.append('<input type="hidden" name="semset_id" value="%s"/>' % self.semset_id)
+            H.append('<input type="submit" value="Ajouter"/>')
+            H.append('</form>')
+        else:
+            H.append('<em>pas de semestres à ajouter</em>')
+        return '\n'.join(H)
 
+            
+            
 def get_semsets_list(context):
     """Liste de tous les semsets
     Trié par date_debut, le plus récent d'abord
@@ -260,6 +279,17 @@
     s.delete()
     return REQUEST.RESPONSE.redirect('semset_page')
 
+def edit_semset_set_title(context, id=None, value=None, REQUEST=None):
+    """Change title of semset
+    """
+    title = value.strip()
+    if not id:
+        raise ScoValueError('empty semset_id')
+    s = SemSet(context, semset_id=id)
+    cnx = context.GetDBConnexion()
+    semset_edit(cnx, { 'semset_id' : id, 'title' : title })
+    return title
+
 def do_semset_add_sem(context, semset_id, formsemestre_id, REQUEST=None):
     """Add a sem to a semset"""
     if not semset_id:
@@ -270,7 +300,7 @@
     
     s.add(formsemestre_id)
 
-    return REQUEST.RESPONSE.redirect('semset_status?semset_id=%s'%semset_id)
+    return REQUEST.RESPONSE.redirect('apo_semset_maq_status?semset_id=%s'%semset_id)
 
 def do_semset_remove_sem(context, semset_id, formsemestre_id, REQUEST=None):
     """Add a sem to a semset"""
@@ -280,68 +310,38 @@
     
     s.remove(formsemestre_id)
     
-    return REQUEST.RESPONSE.redirect('semset_status?semset_id=%s'%semset_id)
+    return REQUEST.RESPONSE.redirect('apo_semset_maq_status?semset_id=%s'%semset_id)
         
 # ----------------------------------------
-    
-def semset_status(context, semset_id, REQUEST=None):
-    """Montre un semset
-    """
-    if not semset_id:
-        raise ScoValueError('empty semset_id')
-    s = SemSet(context, semset_id)
-    s.fill_formsemestres(REQUEST)
-        
-    possible_sems = s.list_possible_sems()
-    menu_sem = """<p><select name="formsemestre_id">
-        <option value="" selected>(semestre)</option>"""
-    for sem in possible_sems:
-        menu_sem += """<option value="%(formsemestre_id)s">%(titreannee)s</option>\n""" % sem
-    menu_sem += """</select>"""
-        
-    page_title = 'Ensemble de semestres ' + s['title']
-    H = [ 
-        context.sco_header(REQUEST, page_title=page_title, init_qtip = True, javascripts=[] ),
-        '''<div class="semset_descr">''',
-        s.html_descr(),
-        ]
-    
-    if possible_sems:
-        H.append('<li><form action="do_semset_add_sem" method="post">Ajouter un semestre:')
-        H.append(menu_sem)
-        H.append('<input type="hidden" name="semset_id" value="%s"/>' % semset_id)
-        H.append('<input type="submit" value="Ajouter"/>')
-        H.append('</form></li>')
-    else:
-        H.append('<li>pas de semestres à ajouter</li>')
-    H.append('</ul>')
-    H.append('</div>') # fin description semset
-    
-    # Maquettes Apogee:
-    if s['annee_scolaire']:
-        H.append('''<p><a class="stdlink" href="apo_semset_maq_status?semset_id=%s">Maquettes Apogée associées</a></p>''' % (semset_id))
-        
-    H.append('''<p><a class="stdlink" href="semset_page">retour à la liste</a></p>''')
-    
-    return '\n'.join(H) + context.sco_footer(REQUEST) 
-        
 
 def semset_page(context, format='html', REQUEST=None):
     """Page avec liste semsets:
     Table avec : date_debut date_fin titre liste des semestres
     """
+    semsets = get_semsets_list(context)
+    for s in semsets:
+        s['suppress'] = icontag('delete_small_img', border='0', alt='supprimer', title='Supprimer')
+        s['_suppress_target'] = 'do_semset_delete?semset_id=%s' % (s['semset_id'])
+        s['export_link'] = 'Export Apogée'
+        s['_export_link_target'] = 'apo_semset_maq_status?semset_id=%s' % s.semset_id
+        s['_semtitles_str_target'] = s['_export_link_target']
+        # Experimental:
+        s['_title_td_attrs'] = 'class="inplace_edit" data-url="edit_semset_set_title" id="%s"' % (s['semset_id'])
     
     tab = GenTable( 
-        rows = get_semsets_list(context),
+        rows = semsets,
         titles = { 
             'annee_scolaire' : 'Année scolaire', 
-            'sem_id' : 'S',
+            'sem_id' : 'P',
             'date_debut':'Début', 
             'date_fin':'Fin', 
-            'title':'', 
+            'title':'Titre', 
+            'export_link' : '',
             'semtitles_str': 'semestres' 
             },
-        columns_ids=['annee_scolaire', 'sem_id', 'date_debut', 'date_fin', 'title', 'semtitles_str' ],        
+        columns_ids=['suppress', 'annee_scolaire', 'sem_id', 
+                     'date_debut', 'date_fin', 'title', 'export_link', 
+                     'semtitles_str' ],        
         html_sortable=True,
         html_class='gt_table table_leftalign',
         filename='semsets',
@@ -352,8 +352,12 @@
     page_title = 'Ensembles de semestres'
     H = [ context.sco_header(REQUEST, page_title=page_title,
                              init_qtip = True,
-                             javascripts=[] ),
-          '<h2>%s</h2>' % page_title
+                             javascripts=['libjs/jinplace-1.2.1.min.js'] ),
+           '''<script>$(function() {
+           $('.inplace_edit').jinplace();
+           });
+           </script>''',
+           '<h2>%s</h2>' % page_title,
           ]
     H.append( tab.html() )
 

Modified: branches/ScoDoc7/static/css/scodoc.css
===================================================================
--- branches/ScoDoc7/static/css/scodoc.css	2016-07-13 11:05:10 UTC (rev 1526)
+++ branches/ScoDoc7/static/css/scodoc.css	2016-07-13 15:21:19 UTC (rev 1527)
@@ -2357,6 +2357,50 @@
  text-align: left;
 }
 
+div.apo_csv_list {
+  margin-top: 4px;
+  padding-left: 5px;
+  padding-bottom: 5px;
+  border: 1px dashed rgb(150,10,40);
+}
+#apo_csv_download {
+   margin-top: 5px;
+}
+
+div.semset_descr {
+  border: 1px dashed rgb(10,150,40);
+  padding-left: 5px;
+}
+
+div.semset_descr p {
+  margin: 5px;
+}
+
+ul.semset_listsems li {
+  margin-top: 10px;
+}
+ul.semset_listsems li:first-child {
+    margin-top:0;
+}
+span.box_title {
+  font-weight: bold;
+  font-size: 115%;
+}
+
+div.apo_csv_status {
+  border: 1px dashed red;
+  padding-bottom: 5px;
+}
+
+.form_apo_export input[type="submit"]
+{
+    -webkit-appearance: button;
+    font-size:150%;
+    font-weight: bold;
+    color: green;
+    margin: 10px;
+}
+
 /* Editable */
 span.span_apo_edit {
   border-bottom: 1px dashed #84ae84;


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