Skip to content
This repository has been archived by the owner on Oct 12, 2021. It is now read-only.

Structure des paramètres des plugins #54

Merged
merged 36 commits into from
Oct 31, 2017

Conversation

GregLeBarbar
Copy link
Contributor

@GregLeBarbar GregLeBarbar commented Oct 20, 2017

From issue: #52

High level changes:

  1. L'extraction des informations de configuration d'un plugin est faite de manière interactive (le script se met en attente jusqu'à ce que la configuration soit faite). Une option dump-plugin-config a été ajoutée à jahia2wp.py
  2. les commandes generate et generate-many utilisent la nouvelle structure de manière transparente pour installer et configurer les plugins

Low level changes:

  1. le fichier config.py a été éclaté en config.py, plugins.py et themes.py
  2. Les classes suivantes ont été ajoutées pour la gestion des plugins:
  • WPPluginConfigManager fourni des accès MySQL et des informations sur la structure des tables où sont stockées les informations de configuration des plugins
  • WPPluginConfigExtractor (hérite de WPPluginConfigManager) permet d'extraire les informations de configuration d'un plugin (stockées potentiellement dans X tables différentes) et de les sauver dans un fichier YAML
  • WPPluginConfigRestore (hérite de WPPluginConfigManager) permet de restaurer les informations de configuration d'un plugin à partir d'une instance de WPPluginConfigInfos (décrite ci-dessous).
  • WPPluginConfigList fourni la liste des plugins à installer/configurer pour un site web donné par un id unique (cet ID doit encore être ajouté dans la source de vérité).
  • WPPluginConfigInfos permet de reconstruire les informations de configuration d'un plugin à partir d'une configuration générique à X sites et d'une potentielle configuration spécifique pour un site donné. Ces informations sont ensuite utilisées par WPPluginConfigRestore afin d'être mises dans la DB.
  1. Du fait que l'on doit potentiellement remettre des options dans d'autres tables que la table "options" et que WPCLI ne permet que d'ajouter des informations dans cette dite-table, l'utilisation d'un package pip (PyMYSQL) pour faire les requêtes dans la DB a été faite. WPCLI n'est donc plus utilisé pour mettre les options dans la DB, tout est fait depuis le package.
  2. Pour ce qui est de la configuration spécifique des plugins, pour le moment, seule la table options est gérée par le code.
  3. Les nouvelles classes créées sont utilisées pour paramétrer les plugins lors de la génération d'un site.

Todo, pour une prochaine itération:

  1. Utiliser un ID pour les sites (DB....)

Targetted version: x.x.x

@GregLeBarbar GregLeBarbar changed the title To create PR Structure des paramètres des plugins Oct 20, 2017
@codecov
Copy link

codecov bot commented Oct 20, 2017

Codecov Report

Merging #54 into master will decrease coverage by 5.68%.
The diff coverage is 62.82%.

Impacted file tree graph

@@            Coverage Diff             @@
##           master      #54      +/-   ##
==========================================
- Coverage   88.56%   82.88%   -5.69%     
==========================================
  Files          18       20       +2     
  Lines        1006     1221     +215     
==========================================
+ Hits          891     1012     +121     
- Misses        115      209      +94
Impacted Files Coverage Δ
src/settings.py 100% <100%> (ø) ⬆️
src/wordpress/__init__.py 100% <100%> (ø) ⬆️
src/wordpress/config.py 78.21% <100%> (+0.13%) ⬆️
src/jahia2wp.py 74.71% <50%> (-1.2%) ⬇️
src/wordpress/plugins.py 57.31% <57.31%> (ø)
src/wordpress/themes.py 85% <85%> (ø)
src/wordpress/generator.py 75% <88%> (+1.5%) ⬆️

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 05f3617...6c085c4. Read the comment docs.

LuluTchab and others added 3 commits October 20, 2017 16:07
…fig-improve

* origin:
  added badges version & license
  added env vars WP_PORT_PHPMA & WP_PORT_SSHD
  updated changelog & version
@ebreton
Copy link
Contributor

ebreton commented Oct 21, 2017

Hello les guys !

J'ai vu que vous avez bien commencé le boulot. Je ne sais pas si vous avez regardé côté Django ou pas... mais la structure tend vers celle des Apps de Django, avec une "Registry" et des objets de Config.

C'est donc plutôt un bon signe 🍾

Si jamais c'est une pure coincidence, voici tout de même la doc Django: https://docs.djangoproject.com/fr/1.11/ref/applications/#application-registry

Des fois que vous y trouviez de choses à prendre... 🍰, 🍬 ou 🧀

@LuluTchab
Copy link
Collaborator

Les tests travis foirent car la génération du site de test semble être faite depuis le dossier /srv/${WP_ENV}/jahia2wp/ . Et comme quand nous on lance manuellement toutes nos commandes, on se trouve dans /srv/${WP_ENV}/jahia2wp/src/ ben tous les chemins relatifs qu'on aurait pu mettre dans le code, ils ne fonctionnent plus car y'a un niveau d'écart...
Et j'ai pas les compétences pour faire les modifs dans la procédure de check Travis...

@LuluTchab
Copy link
Collaborator

Les tests Travis ont passé car j'ai fait en sorte que le dossier courant soit dynamiquement récupéré dans le fichier Python dans lequel on utilise un chemin relatif.

Copy link
Contributor

@ebreton ebreton left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Grosse modif discutée de vive voix: utiliser le nom du site (à partir de l'URL) comme id pour l'instant. On mettra en place l'ID (surement avec une DB dans une histoire ultérieure)

cf commentaire pour les autres détails

src/jahia2wp.py Outdated
jahia2wp.py generate-many <csv_file> [--debug | --quiet]
jahia2wp.py veritas <csv_file> [--debug | --quiet]
jahia2wp.py inventory <wp_env> <path> [--debug | --quiet]
jahia2wp.py generate-many <csv_file> [--debug | --quiet]
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

modifier cette commande pour générer la config des plugins pour chaque site (plutot que de l'avoir dans WPGenerator.def generate_plugins

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

On avait dit que finalement ça on ne faisait pas non ?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

on a sauté celui-là. Mais je pense qu'on peut le supprimer effectivement...

... c'est comme le build-plugin qui est inclu dans generate. Le generate-many s'occupera de generer tous les sites et les plugins viendront avec.

src/jahia2wp.py Outdated
jahia2wp.py generate-many <csv_file> [--debug | --quiet]
jahia2wp.py veritas <csv_file> [--debug | --quiet]
jahia2wp.py inventory <wp_env> <path> [--debug | --quiet]
jahia2wp.py dump-plugin-config <wp_env> <wp_url> <output_file> [--debug | --quiet]
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nom plus explicite, en phase avec le code
jahia2wp.py extract-plugins <wp_env> <wp_url> [--debug | --quiet]

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

J'ai plutôt mis extract-plugin-config parce qu'en fait, on extrait la configuration d'un plugin et pas la liste des plugins.

src/jahia2wp.py Outdated
@@ -180,6 +182,14 @@ def veritas(csv_file, **kwargs):
validator.print_errors()


@dispatch.on('dump-plugin-config')
def dump_plugin_config(wp_env, wp_url, output_file, **kwargs):
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

extract plutot que dump

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Modifié en extract_plugin_config

src/settings.py Outdated
}
current_file_path = os.path.dirname(os.path.realpath(__file__))
PLUGINS_CONFIG_GENERIC_FOLDER = os.path.join(current_file_path, '../data/plugins/generic')
PLUGINS_CONFIG_SPECIFIC_FOLDER = os.path.join(current_file_path, '../data/plugins/specific')
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

attention au '/' qui n'est pas cross-platform. Utiliser plutot un tableau avec la fonction join sur la string os.path.sep

DATA_PATH = os.path.abspath(
    os.path.sep.join([
        os.path.dirname(__file__),
        '..',
        'data',
        'wp',
        ]
    )
)

self.plugin_name = plugin_name

# If we have to download from web,
if plugin_config['src'].lower() == 'web':
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

'web' ??

un peu de doc bienvenue ou une variable dans settings.py ?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Variable ajoutée dans settings.py

@@ -245,36 +256,33 @@ def is_installed(self):
return os.path.isdir(self.path)

@property
def is_activate(self):
def is_activated(self):
command = "plugin list --status=active --field=name --fomat=json"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

typo sur --format

@LuluTchab
Copy link
Collaborator

Me semble que j'ai fait tout ce qu'il fallait. Les tests Travis sont OK.

…fig-improve

* origin:
  ponsfrilus takes no T
  added examples. fixed readthedocs badge
  links on badge, logo
  link to readthedocs for documentation
  fixed links again
  added back simplified README for github homepage
  renamed README.md to index.md
  added logo at the end of the page to make it available on readthedocs.io
  updated links to new README location
  moved README to ./docs (for readthedocs.io)
  added 🎈
  more icons
  detailed roadmap (and added icons)
@ebreton ebreton merged commit abc73c9 into master Oct 31, 2017
ebreton added a commit that referenced this pull request Oct 31, 2017
@ebreton ebreton deleted the feature-wwp-52-plugins-config-improve branch October 31, 2017 22:37
ebreton added a commit that referenced this pull request Nov 6, 2017
…-container-wp-volumes

* origin: (23 commits)
  add same parameters for generate as for generate-one
  mention git clone over HTTPS (not only SSH)
  merged in PR #54
  do not decrease coverage
  PEP8
  declare BACKUP_PATH in .env.sample
  added doc
  generate DB dump directly in proper directory
  added $BACKUP_PATH to override BACKUP_PATH (in travis)
  added tests and command to backup one site only
  gitignore backups
  same strategy for WPBackup as for WPGenerator for constructor and config
  roll run_wp_cli back into WPConfig
  removed relative path for backups. Added WP_PATH & BACKUP_PATH in settings
  using /tmp to generate tar in tests (for travis to pass)
  added tests for generate_tar
  not using site_id quite yet. name instead
  precision in doc for content of incremental files
  change description of tar file: all files are tared, not only php ones
  do not log twice command
  ...
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants