Cette page présente l'étude du logiciel w.c.s.
w.c.s. est un serveur de téléformulaires, d'abord développé pour des administrations locales (pour des besoins de formulaires du type "inscription médiathèque"), il a depuis évolué pour également convenir à d'autres tâches, par exemple comme système de suivi de bugs, ou encore comme site de vote pour la dernière assemblée générale de l'April.
w.c.s. est codé en Python grâce au framework Quixote.
w.c.s. est développé par Entr'ouvert, une SCOP (coopérative) travaillant principalement autour de l'« administration électronique », bien engagée, en elle-même et par ses travailleurs, dans les logiciels libres. Il est rarement évident de marier « développement d'entreprise » et développement communautaire, mais une base de travail commune a été posée en choisissant de développer publiquement (Subversion) et d'utiliser une licence claire (GNU GPL).
site officiel : http://wcs.labs.libre-entreprise.org/
Objectifs
L'objectif est de proposer un système w.c.s. qui permettent au personnel AUF de créer des formulaires pour les appels d'offres, appels à candidatures, etc.
Réalisations actuelles
Les formulaires de l'AUF : https://formulaires.auf.org/ (mise en place lors du projet /Bourses2010) (procédure de bascule en production)
Il existe également une mini documentation de l'usage des classes mises en place dans le thème AUF.
À Dakar, le BAO utilise ce système pour les réservations de visioconférences http://form.sn.auf.org/
Le DakarLUG utilise w.c.s. (http://wcs.dakarlug.org) avec succès depuis fin avril 2009. Zéro pannes, aucun problème qui ne soit pas résolu en 10 minutes via la liste de discussion du logiciel.
Installation
Vous pouvez lire http://wcs.labs.libre-entreprise.org/doc/fr/admin-guide.html
Le paquet proposé par Entr'Ouvert et présenté dans la documentation indiquée ci-dessus est une ancienne version de wcs, la 1.0, qui est assez boguée.
Heureusement, il est très simple de faire un paquet de wcs, tout est déjà prévu pour. Vous avons donc un paquet wcs dans le DépôtAPT de l'AUF :
# source des paquets AUF pour Debian Lenny deb http://apt.auf.org/ lenny auf
L'installation se passe en deux étapes :
- Installation du paquet :
# aptitude install wcs
- Connexion avec le serveur Apache, par exemple en ajoutant un serveur virtuel :
<VirtualHost *> ServerName wcs.mondomaine.org DocumentRoot /usr/share/wcs/web/ Alias /qo/ /usr/share/wcs/qommon/ # connexion avec le serveur wcs local SCGIMount / 127.0.0.1:3001 <LocationMatch "^/(css|images|js|qo)/.*"> SCGIHandler off </LocationMatch> CustomLog /var/log/apache2/wcs-access.log combined ErrorLog /var/log/apache2/wcs-error.log </VirtualHost>
ou bien en s'insérant à un serveur virtuel existant, ici sous /form/ :
# formulaires via le web avec w.c.s Alias /form/css/ /usr/share/wcs/web/css/ Alias /form/images/ /usr/share/wcs/web/images/ Alias /form/js/ /usr/share/wcs/web/js/ Alias /form/qo/ /usr/share/wcs/qommon/ # connexion avec le serveur wcs local SCGIMount /form 127.0.0.1:3001 <LocationMatch "^/form/(css|images|js|qo)/.*"> SCGIHandler off </LocationMatch>
attention cependant, dans ce dernier cas, à ajouter également la ligne suivante à /etc/default/wcs :
OPTIONS="--script-name=/form"
Correctifs
Voici quelques correctifs appliqués à la version 1959 que nous utilisons actuellement.
- correction du problème de lien symbolique pour un formulaire nouvellement créé :
- la correction a été apportée à la révision 1964 mais n'est pas triviale
une bidouille temporaire consiste à lancer régulièrement la reconstruction des indexes :
# fichier /etc/cron.d/wcs 0 * * * * wcs /usr/sbin/wcsctl rebuild_indexes 2>&1 | grep -v "^Missing Lasso module"
correction des droits d'accès avec un workflow générique :
Index: wcs/formdef.py =================================================================== --- wcs/formdef.py (révision 2046) +++ wcs/formdef.py (copie de travail) @@ -645,8 +645,17 @@ for item in wf_status.items or []: if not hasattr(item, 'by'): continue - status_action_roles.extend( - [x for x in item.by if not (type(x) is str and x.startswith('_'))]) + for role in item.by: + if role == '_submitter': + # action for submitter + if formdata and formdata.user_id == user.id: + return True + elif role == '_receiver': + # action for receiver + status_action_roles.append(self.receiver_id) + elif not (type(role) is str and role.startswith('_')): + # action for another group + status_action_roles.append(role) if user_roles.intersection(status_action_roles or []): return True else:
Accès en Python
Voir http://lists.labs.libre-entreprise.org/pipermail/wcs-devel/2009-June/000067.html : ça marche très bien. -- ThomasNoël
- Quelques outils internes à l'AuF :
outils divers et export JSON : http://git.auf.org/?p=progfou.git;a=tree;f=wcs
import dans Sigma depuis WCS : http://git.auf.org/?p=sigmawcs.git;a=tree
Une bidouille bien bourrin et totalement inacceptable, mais qui dépanne bien en cas de coup dur : /ImportCSV -- ProgFou
Autres infos
La 1.13 apporte des améliorations de CSS (attention, élargissement du padding des champs d'entrée) et l'unification de l'interface admin dans le backoffice. La migration de 1.12 (version AUF depuis fin 2014) à 1.13 devrait être triviale.
Une version en Django à venir : https://git.entrouvert.org/wcs.git/log/?h=wip/django
- Sous pages