Problème annotation PDF dans devoirs (convertisseur)

Problème annotation PDF dans devoirs (convertisseur)

par Éric Bugnet,
Nombre de réponses : 7
Avatar Développeurs de plugins Avatar Documentation writers Avatar Traducteurs

Bonjour,

Je rencontre une difficulté de config sur la partie convertisseur (génération du pdf) de l'outil devoir.

Je suis sur un serveur Ubuntu 18.04 et Moodle 3.9. Cet outil fonctionnait bien à un moment, mais j'ai du recréer le compte associé à Google Drive, et j'ai l'impression que ça déconne depuis.

De ce que j'en sors pour l'instant :

  • les documents pdf passent sans soucis dans la partie annotation.
  • les documents word /excel non, j'ai donc un soucis dans la conversion des fichiers : en fait l'outil d'annotation s'affiche et tourne sans fin (spinning wheel)

Convertisseur Google
  • j'ai bien configuré mon compte Google Apps OAuth 2, avec l'identifiant, et il fonctionne (testé accès drive).

  • j'ai bien activé le convertisseur de doc de Google

  • J'ai bien paramétré le convertisseur, et testé le convertisseur. Il fonctionne : il me génère bien un fichier pdf.


Unoconv (je préférerais en fait)


Fonctionnement
  • j'ai découverte que la génération passait par une tache lancée toutes les 15 minutes par le cron à la dépose du devoir
  • j'imagine que d'ancien rendus sont donc dans l'échec... est-il possible de « réinitialiser » celà ?
  • Je ne sais pas ou sont situés ces pdf générés ou en erreur, et si je peux les supprimer pour qu'ils soient régénérés
  • j'ai testé en déposant un nouveau devoir, puis lançant la tache manuellement, mais ça ne fonctionne toujours pas... (ni avec Google, ni avec unoconv) j'ai toujours cette spinning wheel
  • je ne constate pas d'erreur coté log apache

Quand je lance ma tache avec unoconv, j'obtiens :
... started 12:16:21. Current memory use 12.6Mo.
Convert 1 submission attempt(s) for assignment 866 Conversion failed with error:Could not find readonly pages for grade 10974 ... used 249 dbqueries ... used 6.5281050205231 seconds

Je crée un nouveau devoir, passe Google en premier et j'obtein :

... started 12:35:08. Current memory use 12.6Mo.
Convert 1 submission attempt(s) for assignment 1618
... used 189 dbqueries
... used 4.7296149730682 seconds

Note : c'est bizarre, l'id du devoir dans la base de donnée, n'est pas la même que celle indiquée ici..., c'est l'idée de quoi, la tentative ?


Au stade ou j'en suis, je me moque de savoir lequel va fonctionner en premier... donc si vous avez des pistes...

Éric


Moyenne des évaluations  -
En réponse à Éric Bugnet

Re: Problème annotation PDF dans devoirs (convertisseur)

par Bruno Malaval,

Bonjour,

Installation unoconv
Nous l'utilisons depuis des années, l'installation ne m'a jamais vraiment posé problème, c'est bizarre
J'ai vu la référence au fichier ".config", personnellement je ne l'ai jamais créé, je ne vois pas l'usage non plus.

Juste un point dans la doc auquel il faut bien faire attention, que l'utilisateur "apache" ait bien un répertoire personnel, dans lequel il a le droit d'écrire.

Fichiers pour l'annotation

J'ai pas mal travailler ce point, le résultat est assez long et globalement formalisé.
J'ai utilisé les le plugin rapports personnalisés pour conserver les requêtes sur le serveur

Je joins le pdf que j'avais fait pour notre usage interne.
Attention, il faudra peut-être qq cafés avant d'arriver au bout .. 😁
Cela donne une idée des liens qui existent dans la bdd pour l'annotation pdf

Bruno

Moyenne des évaluations Utile (4)
En réponse à Bruno Malaval

Re: Problème annotation PDF dans devoirs (convertisseur)

par Éric Bugnet,
Avatar Développeurs de plugins Avatar Documentation writers Avatar Traducteurs
Merci pour ton précieux document.
Ce que je n'arrive pas à comprendre c'est que les deux convertisseurs fonctionnent d'après les tests intégrés à Moodle...
Question con... « apache doit avoir un répertoire perso. »
Pour moi, c'est www-data et son répertoire perso c'est /var/www
Il n'y a pas droit en écriture par défaut, il appartient à root.
J'ai bien mis par contre le répertoire moodle avec www-data comme proprio.



Tu me suggère de passer l'ensemble de /var/www à www-data ?

En relisant la doc, je vois même plutôt que le rep /var/www/html/moodle devrait être possédé par root... mais ça ne pose pas de problème coté mise à jour et update de plugins ?
Si j'en suis venu là, c'est que ça a du être nécessaire à un moment.

Éric
En réponse à Éric Bugnet

Re: Problème annotation PDF dans devoirs (convertisseur)

par Sébastien Mehr,
Hello Eric,

comme l'a dit Bruno, l' utilisateur d'apache doit obligatoirement avoir un home directory, par exemple :

usermod -d /tmp/ apache # ou www-data selon la distrib'

Seb
Moyenne des évaluations Utile (2)
En réponse à Sébastien Mehr

Re: Problème annotation PDF dans devoirs (convertisseur)

par Éric Bugnet,
Avatar Développeurs de plugins Avatar Documentation writers Avatar Traducteurs
Merci,
J'ai plutôt utilisé : usermod -d /tmp www-data
sans le / après tmp.
En regardant le fichier /etc/passwrd ça me semblait plus cohérent.
Éric
En réponse à Éric Bugnet

Re: Problème annotation PDF dans devoirs (convertisseur)

par Bruno Malaval,

C'est pas toujours évident unoconv, il m'a fait baver

Dans la page unoconv ( https://docs.moodle.org/3x/fr/Universal_Office_Converter )
il est écrit :
" Sur certains systèmes, le répertoire personnel de l'utilisateur apache est défini sur un dossier non existant. Cela peut entraîner l'échec de l'unoconv. Il y a 2 solutions à cela : l'une est de créer un répertoire personnel (accessible en écriture) pour l'utilisateur apache (comme /home/www-data). L'autre est d'exécuter un auditeur unoconv (décrit ci-dessous) comme un autre utilisateur que l'utilisateur apache (quelqu'un avec un répertoire personnel valide et écrit) "

De ce que j'ai compris, le listener unoconv est lancé par l'utilisateur "apache" ( ou www-data )
et il a besoin d'un répertoire pour écrire des fichiers temporaires.
Sur notre serveur, on a mis "/tmp" comme home directory pour l'utilisateur apache, tout le monde peut y écrire ...

Pour le dossier Moodle, il est préférable que ce soit root le propriétaire, question sécurité.
Mais effectivement, cela bloque la maj des plugins par l'interface.
Donc on procède comme suit pour la mise à jour des plugins :

  • chown -R apache:apache /var/www/moodle
  • maj des plugins par l'interface
  • chown -R root:root /var/www/moodle
Cela limite les risques

Autre petite astuce si nécessaire :
L'exécutable unoconv n'est en fait qu'un simple script (/usr/bin/unoconv)
Certains devoirs n'étaient pas convertis, du fait de leur extension ( .cpp / .hpp / .dev ), code source de programmation, alors qu'au final ce n'est que du texte.

J'ai donc modifié le script unoconv en ajoutant dans la section :

### TextDocument
.........
fmts.add('document', 'hpp', 'hpp', 'HPP file', 'HPP file') ### 34
fmts.add('document', 'cpp', 'cpp', 'CPP file', 'CPP file') ### 34
fmts.add('document', 'dev', 'dev', 'dev file', 'dev file') ### 34
.........
Bruno


Moyenne des évaluations Utile (2)
En réponse à Bruno Malaval

Re: Problème annotation PDF dans devoirs (convertisseur)

par Éric Bugnet,
Avatar Développeurs de plugins Avatar Documentation writers Avatar Traducteurs
Merci pour tes réponses.
Coté unoconv, j'ai donc alloué l'espace /tmp à www-data, mais je retombe toujours sur le même type d'erreur, à savoir :
Conversion failed with error:Could not find readonly pages for grade 20317
Tout en gardant en tête que le test de conversion fonctionne sur Google comme unoconv.

Merci aussi pour tes autres informations.
Curieux de savoir si les autres utilisateurs font comme toi pour les updates.

Je vais continuer de creuser un peu...

Éric
En réponse à Éric Bugnet

Re: Problème annotation PDF dans devoirs (convertisseur)

par Bruno Malaval,
Il y a cette discussion en anglais
https://moodle.org/mod/forum/discuss.php?d=371979

En survolant un peu les références, j'ai l'impression que cette erreur proviendrait plutôt de la conversion Google
A creuser ..

Sinon, pour info, l'erreur provient du fichier : /mod/assign/feedback/editpdf/classes/document_services.php

Bruno
Moyenne des évaluations Utile (1)