Installation de Crème CRM 2.0
#1
Introduction

Il s'agira ici d'installer Creme 2.0 soit depuis zéro, soit depuis une installation de Creme1.8 (notez que vous ne devriez migrer que d'une version à la fois -- donc si vous êtes en 1.7, vous devez migrer vers 1.8 avant de pouvoir migrer vers 2.0 par exemple).

Ce tutoriel d'installation parle des plateformes suivantes :
  • GNU/Linux en se concentrant sur debian/ & Ubuntu ; lorsque des noms de paquets sont donnés, ce sont les noms dans ces 2 distributions, et il vous faudra chercher les équivalents sur votre propre distribution (n'hésitez pas pas à nous indiquer si vous avez installé sur une autre distribution avec d'autres noms afin que nous puissions améliorer ce tutoriel).
  •  Windows ; attention l'installation sous Windows est un peu plus complexe à cause du manque par défaut d'un gestionnaire de paquets. En plus ce n'est pas la plateforme la plus testée (mais si vous avez des problèmes/retours/patches vous pouvez en parler dans les commentaires notamment)

Le code de Creme ne faisant pas spécialement de "linuxeries", l'installer sur d'autres Unix (comme FreeBSD ou MacOSX) ne devrait pas dans l'absolu poser de souci particulier. Il nous est cependant difficile pour le moment de vous indiquer une marche à suivre précise n'utilisant pas (encore) ces systèmes. Là encore tout retour de personnes ayant essayé est le bienvenu.

Pour ce tutoriel d'installation de Crème CRM on va faire les choses du mieux possible. On va donc installer des choses qui pourraient vous sembler inutiles mais qui à terme permettront d'avoir une installation pérenne et qui ne rentrera pas en collision avec d'autres logiciels que vous pourriez vouloir installer.

Ce tutoriel vous permet d'installer tout le nécessaire pour faire fonctionner Crème avec le serveur de développement intégré dans Django. Le serveur de développement n'est pas une façon pérenne de faire fonctionner une application Django. Mais c'est un moyen simple de vérifier que tout fonctionne et vous pouvez faire quelques tests avec pour vérifier que Crème vous convient.  Le tutoriel vous permettant d'utiliser Apache avec Crème (plus compliqué à faire fonctionner, mais c'est une façon pérenne de faire les choses) est le sujet d'un autre billet indiqué à la fin.

Une remarque très importante : si l'utilisation du serveur de développement est déconseillé pour une utilisation sur du long terme dans le cadre d'une machine personnelle, elle est par contre totalement interdite dans le cadre d'un hébergement sur un serveur. Si vous comptez installer Crème  tout de suite sur un serveur, il ne faut pas, pas une seule seconde, utiliser le serveur de développement. En effet celui-ci est fait pour le test et rien d'autre. Il n'est pas prévu, ni en terme de performance ni en terme de sécurité, pour être utilisé dans un vrai contexte de production.

Avant propos

Notre objectif est d'installer & configurer un environnement Virtualenv. Virtualenv vous permet en effet d'avoir plusieurs environnements virtuels Python. L’intérêt est de pouvoir cloisonner les dépendances par projet. Vous êtes ainsi sûr que votre Crème n’arrêtera pas de fonctionner juste parce que vous avez dû mettre à jour une librairie Python pour pouvoir installer un autre logiciel. On ne va pas se contenter d'installer Virtualenv et on va installer aussi Virtualenvwrapper qui est une surcouche à Virtualenv et qui vous simplifiera les choses.

À propos des migrations : nous allons installer Creme 2.0 en parallèle de votre installation de Creme 1.8, en dupliquant les données. Ainsi en cas de gros problèmes vous pourrez revenir à votre installation précédente, que nous n'aurons pas détruite ; les éventuelles nouvelles données rentrées dans Creme 2.0 seront évidemment absentes de votre vieille installation, mais il s'agit ici plutôt de détecter les gros dysfonctionnements que vous auriez immédiatement.

Installation de Python

Pour commencer, il vous faut avoir Python 3 sur votre système (notez bien que Creme 2.0 ne fonctionnera pas avec Python 2 -- python 2.7 étant la dernière version de la branche 2) ainsi que l'installeur 'pip' qui permet de télécharger & installer des paquets python.

Sous Windows :
Il faut vous rendre ici : https://www.python.org/downloads/windows/
L'installeur pour Windows contient l'interpréteur Python ainsi que 'pip'.
Note: il est important que vous partiez d'une installation vide de Python ; si vous avez déjà des paquets externes pour Python qui ne sont pas installés dans un Virtual Env, ces derniers prendront le pas sur les paquets du Virtual Env (et donc de mauvaises versions de paquets pourront être utilisées empêchant Creme de fonctionner) (ce problème étant spécifique à Windows).

Sous Linux :
Utilisez le gestionnaire de paquet de votre distribution ; si vous êtes sous Debian ou Ubuntu il vous suffit de faire :
Code :
sudo apt-get install python3
sudo apt-get install python-setuptools
sudo apt-get install python-pip

Installation des logiciels externes

En plus de Python il va vous falloir installer :
  • Un serveur web compatible avec Python. Il y a le choix mais le grand classique reste Apache (version 2.4 actuellement). Comme indiqué plus haut vous pouvez aussi dans un premier temps utiliser le serveur de développement (inclus avec Django) avant de passer à un serveur de production comme Apache ou NginX.
  • Un serveur de base de données: MySQL (5.7 ou plus) ou PostGreSQL (9.5 ou plus) ; dans un premier temps vous pouvez aussi tester avec une base SQLite (rien besoin d'installer c'est fourni avec Python).
  • Redis ; ça fonctionne avec des versions anciennes (3.X) ou récentes (4.X +) donc cela ne devrait pas être un problème (préférez les versions plus récentes évidemment): https://redis.io/download
  • Java 1.4 ou plus (on peut techniquement s'en passer si on désactive la minification de JavaScript/CSS, mais ça ne devrait pas être une dépendance compliqué à installer).
  •  Un client Mercurial (sous Windows TortoiseHg est très bien) pour récupérer les sources de Creme.

Sous Windows, wampserver vous facilitera sûrement la vie si vous comptez installer Apache et MySQL.

Sous Linux, vérifiez que vous avez les paquets suivants (ce sont les noms sous Ubuntu ; ils peuvent être différents sous une autre distribution évidemment) :
  • mercurial
  • mysql_config (si vous utilisez MySQL -- n'existe plus et n'est plus nécessaire sous les versions récentes d'Ubuntu)
  • mysql-client (si vous utilisez MySQL)
  • mysql-server (si vous utilisez MySQL)
  • postgresql (si vous utilisez PostGreSQL)
  • postgresql-client-common (si vous utilisez PostGreSQL)
  • redis-server
  • default-jre
  • graphviz

Si vous comptez exporter des factures/devis en PDF, il vous faudra aussi Latex ; notez que c'est juste nécessaire exporter les factures en PDF, et que vous pouvez quand même vous servir de la partie facturation de Creme sans ça.
Le site contient bien de quoi installer pour Windows, mais ce n'est pas forcément facile d'avoir tout les modules Latex qu'il faut ; une prochaine version de Creme devrait proposer d'autres backends ne nécessitant que python ce qui simplifiera tout ça
Sous Ubuntu18.04 voici la liste des paquets nécessaire pour exporter correctement le template de base :
  • texlive-latex-recommended
  • textlive-fonts-extra
  • textlive-lang-french
  • textlive-latex-extra

(Linux) Installation des bibliothèques "système"

Pour pouvoir installer certains paquets dans votre environnement Python, il vous faudra certaines bibliothèques de développement afin de pouvoir compiler certains paquets.

Avant d'aller plus loin, il faut que vous vérifiez que les packages suivants sont bien installés, sinon, installez les :
  • python3-dev
  • libmysqlclient-dev (si vous utilisez MySQL)
  • libxslt1-dev
  • libjpeg-dev (et potentiellement les autres bibliothèques de gestion d'images selon vos besoins, comme libpng*-dev)
  • libgraphviz-dev (ce paquet s'appelle "graphviz-dev " avec Ubuntu 16.04)

Installation de l'environnement virtuel

Ensuite, vous allez installer Virtualenvwrapper qui installera automatiquement Virtualenv en même temps.
Pour cela il vous suffit de taper :
Code :
sudo pip install virtualenvwrapper

Sous Windows, installez aussi la version Windows de virtualenvwrapper :
Code :
sudo pip install virtualenvwrapper-win

Nous allons va pouvoir créer le Virtualenv pour Crème.
À propos des migrations : créez un nouveau Virtualenv pour Creme 2.0, et gardez donc intact celui de de votre Creme 1.8.

Il reste une dernière petite config à faire, à savoir indiquer où vous allez stocker vos différents Virtualenv (Note: Ubuntu 18.04 fait cette partie toute seule et vous pouvez l'ignorer -- les autres systèmes en ont besoin en revanche). Je vais partir du principe que vous utilisez le répertoire Envs à la racine de votre home. Il va falloir que dans le fichier de configuration de votre shell (.bashrc si vous utilisez le bash) vous configuriez la variable WORKON_HOME. Cela se fait de la manière suivante (pour bash) :
Code :
export WORKON_HOME=~/Envs

Une fois cela fait et après avoir rechargé votre configuration, vous pouvez créer votre Virtualenv en tapant la commande :
Code :
mkvirtualenv creme_2_0 -p chemin/vers/python3

Par exemple, sous Ubuntu 18.04, le chemin vers python 3 est "/usr/bin/python3.6".

Une fois que votre Virtualenv est créé, il faut l'activer pour votre console. Vous allez en effet installer de nouveaux packages Python et faire des commandes Django et tout doit se faire dans votre Virtualenv. L'activation d'un Virtualenv se fait avec la commande "workon". Si vous la lancez sans argument elle vous donnera la liste des Virtualenv possibles. Avec un nom de Virtualenv, elle l'active.

Ici, vous devez donc taper
Code :
workon creme_2_0

Il y a d'autre commandes intéressantes dans Virtualenvwrapper. Vous les trouverez dans le man. Une commande qui vous sera utile est la commande "deactivate" qui permet de sortir d'un Virtualenv pour revenir à votre environnement système classique.

Maintenant que vous avez activé votre Virtualenv, il vous faut récupérer Crème. Pour cela il suffit d'utiliser mercurial. taper simplement à l'endroit où vous voulez déposer le code source de Crème :
Code :
hg clone https://bitbucket.org/hybird/creme_crm-2.0

Vous remarquerez que les sources de Crème contiennent (dans le répertoire 'creme/)' un petit fichier 'requirements.txt'. C'est ce fichier qui va servir à installer de manière automatique les dépendances.

Il vous suffit donc de taper (suivant l'endroit d'où vous vous trouvez)
Code :
pip install -r creme/requirements.txt
ou
Code :
pip install -r requirements.txt

Notes pour Windows:
  • Vous devriez installer aussi le paquet "pywin32":
    pip install pywin32
  • Certains paquets (comme mysqlclient ou graphviz) peuvent être retords à s'installer, et le site suivant, qui contient des paquets pré-compilés, pourrait grandement vous aider: https://www.lfd.uci.edu/~gohlke/pythonlibs/

Copie des fichiers uploadés par les utilisateurs

Cette partie ne concerne que les migrations depuis Creme 1.8 (passez à la suite si vous installez depuis 0).
Dans votre installation de Creme 1.8, allez dans le répertoire creme/media/upload. Si vous avez utilisé des Documents dans Creme, ou bien exporté des factures/Devis en PDF, vous devriez des sous-répertoires ("documents", "billing" etc...). Si c'est bien le cas, copier ces répertoires (et leur contenu évidemment) dans le répertoire creme/media/upload de votre installation de Creme 2.0

Note: il est important de le faire avant la commande "migrate" (voir plus bas), car celle-ci en plus de modifier la base de données SQL pourrait tout à fait modifier les fichiers uploadés (leur nom en interne ou leur emplacement, pas leur contenu évidemment) ; ce n'est pas le cas dans la migration 1.8 vers 2.0, mais c'est déjà arrivé (migration 1.6 vers 1.7). Aussi nous préconisons cette approche.

Configuration de la base de données

Django utilise un système de configuration qui utilise un fichier python stockant des valeurs ; ce fichier s'appelle de base 'settings.py' (vous le trouverez dans le répertoire 'creme/'). Mais afin de ne pas modifier un fichier "appartenant " à Creme (ce qui vous obligerez à gérer des conflits lors de mise-à-jour du code de Creme), nous allons mettre la configuration spécifique à votre serveur dans un fichier qui vous appartient.

Rendez-vous dans le répertoire 'creme/' et créez un fichier de configuration propre à votre machine:  local_settings.py
(attention le nom est important, puisque settings.py importe explicitement ce fichier s'il existe).

À propos des migrations : copiez le fichier local_settings.py de votre vieille installation plutôt que d'en créer un depuis zéro. Il se pourrait que certaines variables soient devenues obsolètes (nous parlons ici de variables un peu pointues, pas les basiques vues ici) ; dans ce cas des messages d'erreurs vous l'indiqueront dans votre terminal au lancement du serveur.
Attention:  Comme nous l'avons dit en introduction, nous allons dupliquer la base de données plutôt que d'en créer une nouvelle, donc n'oublier pas de mettre le nom de votre nouvelle base dans ce fichier local_settings.py copié. En effet comme il contient le nom de votre ancienne base, c'est celle-ci qui serait migrée (mas de panique si vous avez bien dupliqué au préalable, au pire votre ancienne base n'est pas perdu elle a juste un nouveau nom).

Pour le moment, Il doit contenir les lignes suivantes (que nous allons compléter par la suite) :

Code :
# -*- coding: utf-8 -*-

DATABASES = {
   'default': {
       'ENGINE':   '',
       'NAME':     '',
       'USER':     '',
       'PASSWORD': '',
       'HOST':     '',    # Une chaîne vide pour le localhost.
       'PORT':     '',    # Une chaîne vide pour le port par défaut.
   },
}

SECRET_KEY = 'valeur_temporaire'

Avant de passer au déploiement de Crème proprement dit, on va devoir configurer la base de données. Creme est testé avec trois systèmes de gestion de base de données: SQLite, MySQL & PostgreSQL. Django permet aussi d'utiliser une base Oracle, mais nous n'avons jamais eu l'occasion de tester une telle configuration (mais pourquoi utiliser un SGBDR propriétaire quand l'offre libre est aussi bonne ?). Il existe aussi des backends pour d'autres SGBDR (firebird, sqlserver ...) qui sont distribués à part de Django ; là encore nous ne les avons pas testé, et ne pouvons garantir leur fonctionnement (mais si vous avez essayé, vos retours sont évidemment les bienvenus, ne serait-ce que par curiosité technique).

SQLite

SQLite est surtout utile si vous êtes un développeur, afin de tester rapidement votre travail. C'est aussi envisageable si vous comptez utiliser Creme
en tant qu'application monoposte et avec peu de données (c'est sûrement une mauvaise idée pour des dizaines de milliers de fiches). Si vous n'êtes pas dans ces 2 cas, nous vous déconseillons vivement une telle configuration.

Si vous choisissez SQLite, la configuration est très simple (pas d'utilisateur ou de mot de passe) ; éditez la variable DATABASES de votre local_settings.py ainsi :

Code :
DATABASES = {
   'default': {
       'ENGINE':   'django.db.backends.sqlite3',
       'NAME':     '/chemin/absolu/vers/un/fichier.db',
       'HOST':     '',
       'PORT':     '',
   },
}

Vous devez évidemment mettre une chemin valide en tant que NAME (le fichier sera créé s'il n'existe pas, mais faites attention que Creme ait bien les permissions d'écrire dans le répertoire choisi).

À propos des migrations : pour dupliquer une base SQLite il suffit de copier l'ancien fichier.

MySQL

MySQL est un choix classique pour un serveur de production ; il est très répandu et facile à configurer. En revanche, il n'est pas toujours possible de le configurer aussi finement qu'on le voudrait, et a tendance à voir ses performances varier étrangement au grès des versions (la plupart du temps dans le bon sens, mais pas toujours) . C'est donc un bon choix si vous le connaissez déjà, et que vous ne visez pas des volumes importants de données (pour quelques centaines de milliers de fiches ça devrait être satisfaisant -- ça dépend de votre matériel évidemment).

Pour que Crème puisse utiliser MySQL, il faut créer une base de données et un utilisateur qui a les droits sur celle-ci. Vous pouvez bien entendu le faire en graphique grâce à un outil d'administration de BD.

Voici comment le faire en console. Notez qu'en fonction de la version de MySQL les commandes peuvent changer ; les instructions suivantes fonctionnent avec MySQL 5.7 (des Ubuntu LTS 16.04 & 18.04) ; référez vous à la documentation de votre version de MySQL les commandes ne fonctionnent pas.

À propos des migrations : il ne faut pas créer pas une base depuis 0, il faut dupliquer l'ancienne, et mettre les mêmes privilèges sur la nouvelle base. Par exemple dans PHPMyadmin, si vous allez sur votre ancienne base, il y  a un onglet "Opérations" qui contient une section "Copier la base de données vers" (qui permet de conserver les privilèges -- normalement la case pour les conserver est cochée par défaut). N'oubliez pas plus bas de mettre le nouveau nom dans la variable 'NAME'.

D'abord logguez vous dans MySQL avec la commande suivante :
Code :
mysql -u root -p

Puis passez sur la base de configuration avec la commande :
Code :
use mysql;

Ajoutez maintenant votre utilisateur (en remplaçant les valeurs d'exemple par vos propres valeurs) avec la commande :
Code :
CREATE USER 'cremeuser'@'localhost' IDENTIFIED BY '34jkfue1dioaA';

Puis nous créons la base de données :
Code :
CREATE DATABASE bdcremecrm;

et enfin nous donnons à votre l'utilisateur toutes les permissions sur la base de données de Creme :
Code :
GRANT ALL PRIVILEGES ON bdcremecrm.* TO 'cremeuser'@'localhost' WITH GRANT OPTION;

Éditez la variable DATABASES de votre local_settings.py ainsi (vous devrez si nécessaire remplacer les noms de la base, de l'utilisateur et son mot de passe par les valeurs que vous avez défini précédemment)  :

Code :
DATABASES = {
   'default': {
       'ENGINE':   'django.db.backends.mysql',
       'NAME':     'bdcremecrm',
       'USER':     'cremeuser',
       'PASSWORD': '34jkfue1dioaA',
       'HOST':     '',    # Une chaîne vide pour le localhost.
       'PORT':     '',    # Une chaîne vide pour le port par défaut.
   },

PostgreSQL

PostgreSQL est sûrement le meilleur choix pour les volumes de données importants ; non seulement ses performances sont excellentes, mais c'est aussi le SGBDR le plus rigoureux en terme de cohérence des données.

Les instructions du début de ce tutoriel étaient plutôt faites pour un déploiement avec MySQL ; aussi il va falloir installer des paquets supplémentaires si vous souhaitez utiliser PostgreSQL.

Dans votre virtualenv, il faudra installer le paquet permettant à python de faire ses requêtes à PGSQL:
Code :
pip install psycopg2

Comme pour MySQL, il vous faut maintenant créer un utilisateur dédié à Creme, ainsi qu'une base sur lequel l'utilisateur a tous les droits. Là encore c'est possible en console comme en graphique (en graphique, le programme "pgAdmin III" fait un très bon travail).

À propos des migrations : comme déjà dit, il ne faut pas créer pas une base depuis 0, il faut dupliquer l'ancienne, et mettre les mêmes privilèges sur la nouvelle base. N'oubliez pas ci-dessous de mettre le nouveau nom dans la variable 'NAME'.

Lorsque c'est fait, éditez la variable DATABASES de votre local_settings.py ainsi (vous devrez remplacer les noms de la base de l'utilisateur et son mot de passe par les valeurs que vous avez choisies juste avant)  :

Code :
DATABASES = {
   'default': {
       'ENGINE':   'django.db.backends.postgresql',
       'NAME':     'nom_de_la_base',
       'USER':     'nom_de_l_utilisateur',
       'PASSWORD': 'm0t_de_p4$$',
       'HOST':     '',    # Une chaîne vide pour le localhost.
       'PORT':     '',    # Une chaîne vide pour le port par défaut.
   },

Remplissage de la base de données

Vous devez revenir dans le répertoire 'cremecrm/' (et ne pas rester dans le répertoire 'creme/') ; il vous suffit de taper :
Code :
cd ..

Avec la commande suivante, vous allez générer votre clé secrète ; il faudra mettre la valeur retournée dans votre local_settings.py, dans la variable SECRET_KEY (entre les '', à la place de "valeur_temporaire"; exemple: SECRET_KEY = 'abcd123'):
Code :
python manage.py build_secret_key

Avec la commande suivante, on va créer les tables de la base :
Code :
python manage.py migrate

Puis on remplit la base avec les données initiales (utilisateur administrateur, société initiale, configuration par défaut etc…) :
Code :
python manage.py creme_populate
Ne vous inquiétez pas des messages du genre , ils indiquent juste que certaines apps n'ont pas besoin de créer des données initiales.

À propos des migrations :
Même si ce n'est pas indispensable, il peut être bien de supprimer les sessions existantes (elles peuvent contenir des informations obsolètes) :

Code :
python manage.py shell
>> from django.contrib.sessions.models import Session
>> Session.objects.all().delete()

Génération des bundles d'assets statiques

Il s'agit de créer des fichiers optimisés pour le CSS et le JavaScript, ainsi que des images avec des noms pensés pour être mises en cache intelligemment :
Code :
python manage.py generatemedia

Voici la sortie que vous devriez avoir :
Code :
Generating l10n.js with variation {'language': 'en'}
Generating l10n.js with variation {'language': 'fr'}
Generating lib.js with variation {}
Generating main.js with variation {}
Generating testlib.js with variation {}
Generating testcore.js with variation {}
Generating icecreammain.css with variation {}
Generating chantillymain.css with variation {}

Lancement du serveur

Une fois cela fait il ne nous reste plus qu'à lancer le serveur de test en faisant :
Code :
python manage.py runserver

Vous pouvez maintenant vous connecter sur http://localhost:8000 pour voir que votre Crème fonctionne. La commande 'creme_populate' vous a indiqué qu'elle a créé un utilisateur "root" (mot de passe "root") ; utilisez cet utilisateur pour vous connecter. Vous êtes très vivement encouragé à changer immédiatement le mot de passe  (dans le menu en haut > icône rouage > Utilisateurs).

Mais, et je vais le répéter, ce serveur de développement n'est pas fait pour être utiliser dans un contexte de production. Par exemple, pour mettre en production avec Apache et mod_wsgi, vous pouvez suivre cet autre billet: https://www.cremecrm.com/forum/showthread.php?tid=110

Lancement du gestionnaire de jobs

Depuis Creme1.7 certaines fonctionnalités (import des fichiers CSV/XLS, envoi des campagnes d'e-mails...) sont effectuées par des jobs tournant en parallèle du serveur Web. Ces jobs sont gérés par un gestionnaire qui s'occupent de créer ces processus lorsque c'est nécessaire.

Ce gestionnaire doit être lancé à part, et tourner en permanence  ; si ce n'est pas le cas, la majorité de Creme fonctionnera parfaitement, mais pas les fonctionnalités basées sur les jobs. Si vous allez sur la liste des jobs (menu > Outils > Jobs) un message d'erreur vous indiquera si le gestionnaire est injoignable. Pour lancer le gestionnaire :
Code :
python manage.py creme_job_manager
  Répondre
#2
La page pour mettre en production avec Apache et mod_wsgi:
http://www.cremecrm.com/forum/viewtopic.php?f=14&t=660

N'exite plus.

Pouvez-vous la réactiver ?
Merci
  Répondre
#3
Bonjour,
C'est corrigé, voici le bon lien : https://www.cremecrm.com/forum/showthread.php?tid=110.
  Répondre
#4
Rebonjour, Merci pour la réponse.
J'ai installé creme version 2.0 avec mysql.
localenv est actif.
Il fonctionne parfaitement avec le serveur local python:8000
Toutefois, quand j'essaye de le lancer avec wsgi et apache sur port 80 ou 8000, j'ai une erreur dans les logs d'erreurs apache:
No module name "creme"
Et la page indique erreur 500
  Répondre
#5
Bonjour,

Il me faudrait plus d'informations pour pouvoir vous répondre.
Pourriez-vous m'envoyer vos fichiers de configuration ? Je vous envoie mon e-mail par message privé du forum.
  Répondre
#6
Merci pour votre réponse rapide.
Je vais vous transmettre mes fichiers de config dès que j'aurai complètement testé le serveur local
A ce propos, j'ai un message d'erreur en fin de job d'import en masse sur un fichier .xlsx:

datetime.datetime(2015, 11, 1, 0, 0) is not JSON serializable.

Sur le web, on préconise de faire des modifs dans les sources.
Je ne suis pas chaud pour commencer par bricoler votre source.
Je pense que l'explication est plus simple, et je préfère commencer par vous poser la question:

Où faut-il donner de la tête ?
  Répondre
#7
J'ai voulu tester la version mobile. Pour cela j'ai décommenté creme.mobile dans INSTALLED_CREME_APPS de creme/settings.py, puis j'ai relancé un migrate puis un generatemedia, mais le site ne se positionne pas automatiquement via la connexion à partir de smartphone. Il faut ajouter à la main /mobile/ pour y accéder. Je pensais que le test de la plateforme client était fait plus tôt . Est-ce voulu ?
  Répondre
#8
(désolé de mon temps de réponse je n'ai pas reçu de notification je m'aperçois à peine de votre question)


Citation :A ce propos, j'ai un message d'erreur en fin de job d'import en masse sur un fichier .xlsx:

datetime.datetime(2015, 11, 1, 0, 0) is not JSON serializable.

Sur le web, on préconise de faire des modifs dans les sources.
Je ne suis pas chaud pour commencer par bricoler votre source.
Je pense que l'explication est plus simple, et je préfère commencer par vous poser la question:

Où faut-il donner de la tête ?

Non il n'est évidemment pas question que vous modifiez le code en toute occasion ; nous remonter le bug est très bien. La modification du code c'est surtout si vous voulez adapter Creme à des besoins très spécifiques, ou bien si vous devez faire une correction urgente et que vous ne voulez pas attendre la correction officielle (vous pouvez aussi nous soumette un patch de correction évidemment).

Pour les bugs il y a une section pour ça dans le forum : https://www.cremecrm.com/forum/forumdisplay.php?fid=9
Ensuite veillez à donner toutes les informations utiles pour qu'on reproduise, ou du moins comprenne votre bug. Par exemple dans ce cas ou ce message est-il affiché : dans le terminal ou le bloc des erreurs du jobs ? Si c'est le terminal y  a t-il une stacktrace d'erreur qui nous permet de trouver la ligne qui cause l'erreur (si vous postez une stack, copiez-collez le texte plutôt que de faire une capture d'écran). Vous dites à la fin du job, donc le job s'est bien exécuté, ou bien plante-t-il sans importer une quelconque ligne ? etc...



Citation :J'ai voulu tester la version mobile. Pour cela j'ai décommenté creme.mobile dans INSTALLED_CREME_APPS de creme/settings.py, puis j'ai relancé un migrate puis un generatemedia, mais le site ne se positionne pas automatiquement via la connexion à partir de smartphone. Il faut ajouter à la main /mobile/ pour y accéder. Je pensais que le test de la plateforme client était fait plus tôt . Est-ce voulu ?

(de même il y a une section "Questions"  ici pour ce genre de choses, histoire qu'elles ne soient pas noyées au milieu d'autres commentaires n'ayant rien à voir)

Oui c'est voulu ; l'app 'mobile' définit juste un sous ensemble du site qui est très adapté à un usage simple depuis un téléphone (gestion simple des contacts/sociétés/activités), mais le reste de l'application reste accessible (et vice versa on peut utiliser l'interface mobile sur un PC). Si les vues mobile font quelques petits ajustements selon qu'on soit sur iOS ou Android, il n'y a pas de détection de la plateforme qui décide de quelle interface vous utilisez. Vous pouvez mettre "/mobile/" en bookmark tout simplement.

Bonne soirée !
  Répondre
#9
Bonjour,

Je viens d'essayer une installation sous Windows et je suis face à une erreur lors de la génération des média.

Code :
Generating l10n.js with variation {'language': 'en'}
Generating l10n.js with variation {'language': 'fr'}
Generating lib.js with variation {}
Traceback (most recent call last):
 File "C:\wamp64\creme_crm-2.0\mediagenerator\filters\yuicompressor.py", line 26, in get_output
   output, error = cmd.communicate(smart_str(input))
 File "C:\python_3.7.3\lib\subprocess.py", line 939, in communicate
   stdout, stderr = self._communicate(input, endtime, timeout)
 File "C:\python_3.7.3\lib\subprocess.py", line 1261, in _communicate
   self._stdin_write(input)
 File "C:\python_3.7.3\lib\subprocess.py", line 873, in _stdin_write
   self.stdin.write(input)
 File "C:\python_3.7.3\lib\encodings\cp1252.py", line 19, in encode
   return codecs.charmap_encode(input,self.errors,encoding_table)[0]
UnicodeEncodeError: 'charmap' codec can't encode characters in position 1343144-1343149: character maps to <undefined>

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
 File "manage.py", line 10, in <module>
   execute_from_command_line(sys.argv)
 File "C:\python_3.7.3\lib\site-packages\django\core\management\__init__.py", line 364, in execute_from_command_line
   utility.execute()
 File "C:\python_3.7.3\lib\site-packages\django\core\management\__init__.py", line 356, in execute
   self.fetch_command(subcommand).run_from_argv(self.argv)
 File "C:\python_3.7.3\lib\site-packages\django\core\management\base.py", line 283, in run_from_argv
   self.execute(*args, **cmd_options)
 File "C:\python_3.7.3\lib\site-packages\django\core\management\base.py", line 330, in execute
   output = self.handle(*args, **options)
 File "C:\wamp64\creme_crm-2.0\mediagenerator\management\commands\generatemedia.py", line 12, in handle
   generate_media()
 File "C:\wamp64\creme_crm-2.0\mediagenerator\api.py", line 31, in generate_media
   for key, url, content in backend.get_output():
 File "C:\wamp64\creme_crm-2.0\mediagenerator\generators\bundles\bundles.py", line 27, in get_output
   name, content = self.generate_file(backend, bundle, {})
 File "C:\wamp64\creme_crm-2.0\mediagenerator\generators\bundles\bundles.py", line 79, in generate_file
   output = list(backend.get_output(variation))
 File "C:\wamp64\creme_crm-2.0\mediagenerator\filters\yuicompressor.py", line 38, in get_output
   "Error was: {}".format(e)
ValueError: Failed to execute Java VM or yuicompressor. Please make sure that you have installed Java and that it's in your PATH and that you've configured YUICOMPRESSOR_PATH in your settings correctly.
Error was: 'charmap' codec can't encode characters in position 1343144-1343149: character maps to <undefined>

Est-ce que ça parle à quelqu'un ? :p
  Répondre
#10
EDIT: voyez ma réponse page suivante plutôt.

Citation :Je viens d'essayer une installation sous Windows et je suis face à une erreur lors de la génération des média.

Bonjour

(désolé du délai de réponse, j'étais en vacances et je n'ai pas regardé les nouveaux messages à mon retour).

Est-ce que "java " est bien installé sur votre système ? (en gros si vous tapez la commande "java" dans une invite de commande, l'exécutable est-il bien trouvé ?)

Au pire, si Java est bien installé mais que vous avez quand même une erreur (et que vous ne pouvez pas remonter un correctif) vous pouvez dans votre fichier "local_settings.py" mettre la ligne suivant:

 
Code :
ROOT_MEDIA_FILTERS = {}


Les fichiers CSS et JS ne seront alors pas minifiés (ce qui n'est pas optimal), mais vous permettra au moins de temporairement éviter ce problème.

Bonne chance pour la suite !
  Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)