From 4d637db3fce35172f9c066b352d100496d067e46 Mon Sep 17 00:00:00 2001 From: Emmanuel Viennet Date: Mon, 5 Jul 2021 23:04:39 +0200 Subject: [PATCH] fix autosuggest --- app/scodoc/TrivialFormulator.py | 4 ++-- app/scodoc/sco_emails.py | 21 ++++++++++++--------- app/scodoc/sco_formsemestre_edit.py | 26 ++++++++++++++++++++------ app/views/notes.py | 13 ++++++++++--- app/views/users.py | 4 ++-- 5 files changed, 46 insertions(+), 22 deletions(-) diff --git a/app/scodoc/TrivialFormulator.py b/app/scodoc/TrivialFormulator.py index dd279afa..3934d576 100644 --- a/app/scodoc/TrivialFormulator.py +++ b/app/scodoc/TrivialFormulator.py @@ -9,7 +9,7 @@ v 1.2 """ -from types import BooleanType, StringType +from types import BooleanType, StringType, UnicodeType def TrivialFormulator( @@ -746,7 +746,7 @@ def dict2js(d): v = "true" else: v = "false" - elif type(v) == StringType: + elif type(v) == StringType or type(v) == UnicodeType: v = '"' + v + '"' r.append("%s: %s" % (k, v)) diff --git a/app/scodoc/sco_emails.py b/app/scodoc/sco_emails.py index 681d8218..2c05a96d 100644 --- a/app/scodoc/sco_emails.py +++ b/app/scodoc/sco_emails.py @@ -28,6 +28,9 @@ """Gestion des emails """ +from flask import request + + # XXX WIP: à ré-écrire pour ScoDoc 8 (étaient des méthodes de ZScoDoc) import os import time @@ -83,7 +86,7 @@ def send_debug_alert(context, txt, REQUEST=None): return if REQUEST: txt = _report_request(context, REQUEST) + txt - URL = REQUEST.get("URL", "") + URL = REQUEST.URL else: URL = "send_debug_alert" msg = MIMEMultipart() @@ -100,26 +103,26 @@ def send_debug_alert(context, txt, REQUEST=None): def _report_request(context, REQUEST, fmt="txt"): """string describing current request for bug reports""" - QUERY_STRING = REQUEST.get("QUERY_STRING", "") + QUERY_STRING = REQUEST.QUERY_STRING if QUERY_STRING: QUERY_STRING = "?" + QUERY_STRING if fmt == "txt": - REFERER = REQUEST.get("HTTP_REFERER", "") - HTTP_USER_AGENT = REQUEST.get("HTTP_USER_AGENT", "") + REFERER = request.referrer + HTTP_USER_AGENT = request.user_agent else: REFERER = "na" HTTP_USER_AGENT = "na" params = dict( - AUTHENTICATED_USER=REQUEST.get("AUTHENTICATED_USER", ""), + AUTHENTICATED_USER=REQUEST.AUTHENTICATED_USER, dt=time.asctime(), - URL=REQUEST.get("URL", ""), + URL=REQUEST.URL, QUERY_STRING=QUERY_STRING, - METHOD=REQUEST.get("REQUEST_METHOD", ""), + METHOD=request.method, REFERER=REFERER, HTTP_USER_AGENT=HTTP_USER_AGENT, - form=REQUEST.get("form", ""), - HTTP_X_FORWARDED_FOR=REQUEST.get("HTTP_X_FORWARDED_FOR", ""), + form=REQUEST.form, + HTTP_X_FORWARDED_FOR="?", svn_version=scu.get_svn_version(scu.SCO_SRC_DIR), SCOVERSION=VERSION.SCOVERSION, ) diff --git a/app/scodoc/sco_formsemestre_edit.py b/app/scodoc/sco_formsemestre_edit.py index cf5e0e15..8ce62935 100644 --- a/app/scodoc/sco_formsemestre_edit.py +++ b/app/scodoc/sco_formsemestre_edit.py @@ -27,6 +27,7 @@ """Form choix modules / responsables et creation formsemestre """ +from flask import url_for, g from app.auth.models import User import app.scodoc.notesdb as ndb @@ -102,7 +103,7 @@ def formsemestre_editwithmodules(context, REQUEST, formsemestre_id): ) else: H.append(do_formsemestre_createwithmodules(context, REQUEST=REQUEST, edit=1)) - if not REQUEST.get("tf-submitted", False): + if not REQUEST.form.get("tf-submitted", False): H.append( """

Seuls les modules cochés font partie de ce semestre. Pour les retirer, les décocher et appuyer sur le bouton "modifier".

@@ -271,7 +272,10 @@ def do_formsemestre_createwithmodules(context, REQUEST=None, edit=False): "allowed_values": allowed_user_names, "allow_null": False, # il faut au moins un responsable de semestre "text_suggest_options": { - "script": "Users/get_user_list_xml?", + "script": url_for( + "users.get_user_list_xml", scodoc_dept=g.scodoc_dept + ) + + "?", # "Users/get_user_list_xml?", "varname": "start", "json": False, "noresults": "Valeur invalide !", @@ -289,7 +293,10 @@ def do_formsemestre_createwithmodules(context, REQUEST=None, edit=False): "allowed_values": allowed_user_names, "allow_null": True, # optionnel "text_suggest_options": { - "script": "Users/get_user_list_xml?", + "script": url_for( + "users.get_user_list_xml", scodoc_dept=g.scodoc_dept + ) + + "?", "varname": "start", "json": False, "noresults": "Valeur invalide !", @@ -573,7 +580,10 @@ def do_formsemestre_createwithmodules(context, REQUEST=None, edit=False): "allowed_values": allowed_user_names, "template": itemtemplate, "text_suggest_options": { - "script": "Users/get_user_list_xml?", + "script": url_for( + "users.get_user_list_xml", scodoc_dept=g.scodoc_dept + ) + + "?", "varname": "start", "json": False, "noresults": "Valeur invalide !", @@ -728,10 +738,11 @@ def do_formsemestre_createwithmodules(context, REQUEST=None, edit=False): "responsable_id": tf[2][module_id], } _ = sco_moduleimpl.do_moduleimpl_create(context, modargs) - return REQUEST.RESPONSE.redirect( + REQUEST.RESPONSE.redirect( "formsemestre_status?formsemestre_id=%s&head_message=Nouveau%%20semestre%%20créé" % formsemestre_id ) + return "" else: # modification du semestre: # on doit creer les modules nouvellement selectionnés @@ -934,7 +945,10 @@ def formsemestre_clone(context, formsemestre_id, REQUEST=None): "allowed_values": allowed_user_names, "allow_null": False, "text_suggest_options": { - "script": "Users/get_user_list_xml?", + "script": url_for( + "users.get_user_list_xml", scodoc_dept=g.scodoc_dept + ) + + "?", "varname": "start", "json": False, "noresults": "Valeur invalide !", diff --git a/app/views/notes.py b/app/views/notes.py index 5aea9d88..a1f98dc5 100644 --- a/app/views/notes.py +++ b/app/views/notes.py @@ -36,7 +36,7 @@ import datetime import jaxml import pprint -from flask import g +from flask import url_for, g from flask import current_app from config import Config @@ -230,6 +230,7 @@ sco_publish( "/formsemestre_editwithmodules", sco_formsemestre_edit.formsemestre_editwithmodules, Permission.ScoView, + methods=["GET", "POST"], ) sco_publish( @@ -759,7 +760,10 @@ def edit_enseignants_form(context, REQUEST, moduleimpl_id): "allowed_values": allowed_user_names, "allow_null": False, "text_suggest_options": { - "script": "Users/get_user_list_xml?", + "script": url_for( + "users.get_user_list_xml", scodoc_dept=g.scodoc_dept + ) + + "?", "varname": "start", "json": False, "noresults": "Valeur invalide !", @@ -849,7 +853,10 @@ def edit_moduleimpl_resp(context, REQUEST, moduleimpl_id): "allowed_values": allowed_user_names, "allow_null": False, "text_suggest_options": { - "script": "Users/get_user_list_xml?", + "script": url_for( + "users.get_user_list_xml", scodoc_dept=g.scodoc_dept + ) + + "?", "varname": "start", "json": False, "noresults": "Valeur invalide !", diff --git a/app/views/users.py b/app/views/users.py index c7512aac..8a25a481 100644 --- a/app/views/users.py +++ b/app/views/users.py @@ -470,7 +470,7 @@ def get_user_list_xml(context, dept=None, start="", limit=25, REQUEST=None): userlist = [ user for user in userlist - if scu.suppress_accents(scu.strlower(user.nom)).startswith(start) + if scu.suppress_accents(scu.strlower(user.nom or "")).startswith(start) ] if REQUEST: REQUEST.RESPONSE.setHeader("content-type", scu.XML_MIMETYPE) @@ -478,7 +478,7 @@ def get_user_list_xml(context, dept=None, start="", limit=25, REQUEST=None): doc.results() for user in userlist[:limit]: doc._push() - doc.rs(user["nomplogin"], id=user["user_id"], info="") + doc.rs(user.get_nomplogin(), id=user.id, info="") doc._pop() return repr(doc)