[Python/Django] patch pour le logiciel de traduction Pootle

@ainslied J’essaye de tester ton patch mais j’ai des soucis (je suis cette doc : http://docs.translatehouse.org/projects/pootle/en/stable-2.7.3final/developers/hacking.html) :

  • ./manage.py webpack => ERROR in Entry module not found: Error: Cannot resolve 'file' or 'directory' /home/luc/pootle in /home/luc/pootle/pootle/static/js
  • quand j’essaye de créer un superuser, j’ai django.core.exceptions.ImproperlyConfigured: Requested setting RQ_SHOW_ADMIN_LINK, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.

Tu aurais une idée de comment faire ? Comment tu as installé ton pootle pour faire ton patch ?

@ainslied je me permets de te pinguer sur les questions de @Framasky , si tu es par là :wink:

Bonjour,

Oups, je me rends compte que je n’ai pas vu vos messages, désolé.
Par contre, j’ai vu que Framapoulpe était toujours sur la feuille de route 2016, ok pour vous aider à le mettre en ligne avant noël, j’essaierai d’être plus attentif aux prochaines réponses !

Donc concernant ton erreur, je dirais à première vue que ton environnement Django est mal configuré.
Est ce que tu as déjà développé en Django? Si ce n’est pas le cas, je peux te détailler un peu plus les étapes d’installation de Pootle avec Django.

Tiens moi au courant !
Ainslie

Super !

Alors non, je n’ai jamais développé en django (j’ai joué avec à un moment, mais j’ai juste bidouillé le tuto de base).

Mais bon, je suis parti d’une machine vierge, et j’ai suivi http://docs.translatehouse.org/projects/pootle/en/stable-2.7.3final/developers/hacking.html, donc ça aurait du fonctionner, non ?

Du coup, je veux bien de l’aide :slight_smile:

Ok parfait.
Je vais te donner dans les prochains jours les commandes pour tout faire fonctionner à partir d’une machine vierge type Debian. En version développement pour l’instant.
Django ayant pas mal évolué ces dernières années, il est possible que leur tuto ne soit pas totalement à jour.
A suivre !

Bonjour,

Voici les étapes d’installation pour Pootle.
Ce n’est pas avec cette méthode par contre que tu vas pouvoir tester mon code je pense. Je vais regarder comment tu peux lancer pootle directement à partir des sources.

##################################################
### Installation de pootle pour une pré - prod avec postgres sql
##################################################

#utilitaires classiques pour python / pip
sudo apt-get install build-essential libxml2-dev libxslt-dev python-dev python-pip

#requirement pour l'installation de pootle
sudo apt-get install redis-server
sudo service redis-server start

#installation et configuration de postgres sql (facultatif car on peut laisser par défaut sqlite pour de simples tests)
sudo apt-get install postgresql postgresql-client
#gui (optionnel)
sudo apt-get install pgadmin3
sudo apt-get install libpq-dev python-dev

sudo su postgres
  createuser -P pootle
  createdb -O pootle pootle_db
  exit

#requirement pour l'installation de pootle, peut être facultatif à ce stade?
sudo apt-get install nodejs npm
sudo update-alternatives --install /usr/bin/node node /usr/bin/nodejs 99

#installation et activation de l'environnement virtuel python pour notre version de pootle
sudo pip install virtualenv
python -m virtualenv pyenv_pootle
source pyenv_pootle/bin/activate


pip install psycopg2 # driver pour postgres
pip install Pootle
pootle --version
#-> Pootle 2.7.6 (Django 1.7.11, Translate Toolkit 1.13.0)
pootle init
nano ~/.pootle/pootle.conf
TIME_ZONE = 'Europe/Paris'
DATABASES = {
    'default': {
        'ENGINE': 'transaction_hooks.backends.postgresql_psycopg2',
        'NAME': 'pootle_db',
        'USER': 'pootle',
        'PASSWORD': 'pootle_pw',
        'HOST': 'localhost',
#a ajouter à la fin du fichier sinon UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 30: ordinal not in range(128) lors de l'initialisation de la base
import sys
reload(sys)  
sys.setdefaultencoding('utf8')

#dans un autre terminal ?
pootle rqworker &

pootle migrate
pootle initdb
#c'est long : pour info il y a environ 68000 opérations

#ajout d'un administrateur
pootle createsuperuser
pootle verify_user admin

pootle start

#accéder à localhost:8000

Je viens d’essayer de suivre la doc pour la version 2.8 de Pootle et j’ai réussi à faire fonctionner le brol. Par contre, du coup, ton patch ne fonctionne plus.

Je vais réessayer la v2.7 cette semaine.

Effectivement, comme tu le dis : « Ce n’est pas avec cette méthode par contre que tu vas pouvoir tester mon code ». Ta méthode (pip install Pootle) ne fonctionnera clairement pas pour tester ton patch. On en reparle une fois que j’aurais re-testé l’installation de la 2.7 en environnement de développement.

Bien, la version 2.7.6 s’installe bien. Maintenant, le problème est que ton patch ne passe plus :frowning:

Il y a 2 conflits quand je git cherry-pick ton commit : pootle/apps/pootle_project/urls.py et pootle/apps/pootle_project/views.py. Pour urls.py, ce n’est vraiment rien de compliqué, par contre, le views.py

Est-ce que je pourrais te demander de jeter un œil s’il-te-plaît ?

Bonjour,

Ok, effectivement.
Je vais regarder cela et te proposer un nouveau patch.

En attendant, voici les étapes pour installer une version de développement :slight_smile:

# pour lxml
sudo apt-get install python-lxml
sudo apt-get install libxml2-dev libxslt-dev python-dev

virtualenv venvdev
source venvdev/bin/activate
pip install --upgrade pip

git clone https://github.com/translate/pootle.git
#ou pour tester ma version en attendant le patch : git clone https://github.com/ainslied/pootle.git
cd pootle
pip install -r requirements/dev.txt

pip install --upgrade setuptools
pip install -e .

cp pootle/settings/90-dev-local.conf.sample pootle/settings/90-dev-local.conf
python manage.py migrate
python manage.py initdb
python manage.py runserver

Tu ne recompilais pas les assets ? (js, css, etc) C’est ce qui, de mémoire me posait souci.

Bonjour à tous,
@framasky Suite à notre discussion au fosdem (stand lfs) j’ai crée un dépôt git avec un docker compose qui installe tout automatiquement. Il y a 3 branche avec la version issue de pip, le zip du master ainsi que la version modifiée qui malheureusement ne marche pas pour l’instant.

J’espère que ça peut être utile.


(j’ai conscience que c’est pas super bien écris c’est une PoC)

Les assets (contenu statique) sont généré dans les branches utilisant le zip issu de git, il manque juste djangojs.js :’( je sais pas trop pourquoi, à investiguer plus profondément (on ne peut se logger que à partir du moment ou on le copie manuellement :slight_smile: )

@ainslied tu as un import de pootle_store.filetypes dans ton patch createProject or ce package semble avoir été supprimé dans la version 2.8 (peut-être même avant j’ai pas regardé) ça provoque donc une erreur chez moi.

Bonjour,

Suite aux évolutions de pootle,le patch que j ai testé initialement ne marchera surement qu’avec la version de l epoque.
Depuis j’ai fait une tentative d évolution du patch sur le github (et effacé mes travaux initiaux donc il ne faut pas aller chercher de patch fonctionnel là bas).
Concernant le pb de l import filetypes, il me semble que j avais également buté sur ce problème en décembre.
Il me semble maintenant qu’il serait plus aisée de repartir de 0 plutôt que de faire évoluer mon code.

Dispo pour programmer une séance de travail!

Bonjour @ainslied @amj & co.
Comme ce patch commence à devenir urgent pour nous, et que nous ne pouvons y consacrer du temps, et bien conscient qu’il n’est jamais bien fun de devoir refaire un travail déjà fait (ici en reprenant le patch d’Ainslied pour le réadapter à Pootle), Framasoft a pris la décision d’expérimenter un nouveau champ de financement : le bounty.

Ainsi, sur la page https://www.bountysource.com/issues/42027191-add-user-permission-to-allow-projects-creation-in-pootle vous aurez la possibilité de gagner (un peu d’argent) en proposant un tel patch.

Le montant défini est de 400$ (c’est peut être noté 15$ actuellement, mais je viens d’abonder de 385$ à l’instant).

Le principe est simple :

  1. vous cliquez sur le lien “Get Started” de la page ci-dessus
  2. vous indiquez que vous bossez dessus
  3. quand vous avez terminé, vous indiquez l’adresse de la Pull Request
  4. si la PR est intégré et l’issue close, vous empochez les 400$ (moins les frais de BountySource)

Partants ?

Bonjour !

Je débute complètement sur Framacolibri et Pootle mais il se trouve que je travaille pas mal sur Django dans mon temps libre. Je serais donc intéressé (en plus s’il y a une bounty mais ce n’est pas nécessaire). Par contre, je n’ai pas la moindre idée du temps que cela va pouvoir prendre de se former à Pootle pour proposer quelque chose d’acceptable par la communauté. Est-ce que vous pensez que ça vaut la peine que je m’y penche ou je me recentre sur d’autres projets ?

Cordialement,
Emedege

Merci @emedege :slight_smile:

Je ne vais sûrement pas te dire que ça ne vaut pas la peine de te pencher dessus, vu qu’on a “misé” 400€ dessus :slight_smile:

A mon avis, le plus simple serait que tu vois avec @ainslied qui avait déjà travaillé sur un précédent patch.
@ainslied : tu pourrais mettre @emedege sur la voie ?

Je lui ai envoyé un petit message je vous tiens au courant !

Bien reçu.
Peut être pourrait-on travailler ensemble. Si tu es en région parisienne nous pourrions nous voir une demie journée, sinon en visio… qu’est ce que tu en penses? On discute de nos dispos en MP si tu le veux bien!

Bonjour tout le monde,

Bonne nouvelle, j’ai tant bien que mal réussi à installer Pootle sur mon PC et à faire tourner notre version modifiée. Globalement, tout a l’air de fonctionner sauf l’ajout de la permission de gérer le projet à la personne qui l’a créé. Je n’ai pas non plus vérifier que tout était bien protégé. Donc, encore un peu de boulot (qui aura du mal à avancer avant le week-end prochain malheureusement, ma semaine étant un peu chargée) mais de toute façon, mon répertoire est public et n’importe qui peut s’en inspirer !

Bonne journée !

D’accord, c’est super, si je peux tester cette semaine je te fais un retour,
Bonne journée et bonne semaine !

1 « J'aime »

Finalement, j’ai eu un peu de temps ce soir.
J’ai tenté quelque chose pour les permissions sur la création. Ça fonctionne (utilisateur avec le droit peut, admin peut mais utilisateur sans la permission ne peut pas) mais je ne sais pas si c’est correct au point de vue logique pootle (mais j’imagine qu’on découvrira ça en faisant la pull request).

Je n’ai pas encore eu le temps de tester l’édition par contre mais ça vient !

1 « J'aime »