Projet

Général

Profil

Development #14622

Permettre des variables de substitution dans les URLs de redirection

Ajouté par Benjamin Dauvergne il y a plus de 7 ans. Mis à jour il y a plus de 5 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
16 janvier 2017
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:

Description

Certaines pages sont des URLs de redirection vers des pages d'autres briques Publik, il serait pratique de pouvoir utiliser des variables comme [wcs_url] dans ces URLs.

Surtout pour permettre l'export/import de sites.


Fichiers

Révisions associées

Révision e7915bd4 (diff)
Ajouté par Frédéric Péters il y a environ 7 ans

general: add support for substitution variables in URLs (#14622)

Historique

#1

Mis à jour par Benjamin Dauvergne il y a plus de 7 ans

  • Description mis à jour (diff)
#2

Mis à jour par Thomas Noël il y a plus de 7 ans

J'imagine plutôt au format Django, {{truc}} ?

#3

Mis à jour par Benjamin Dauvergne il y a plus de 7 ans

J'aurai dit oui avant mais ce serait vraiment mieux ergonomiquement d'avoir la même syntaxe que dans w.c.s. mais ça voudrait dire copier ezt_template dans combo...

#4

Mis à jour par Frédéric Péters il y a plus de 7 ans

Pas fan de copier ezt.py, juste une mini "réimplémentation" qui gère juste la substitution ça m'irait.

#5

Mis à jour par Thomas Noël il y a plus de 7 ans

(moi c'est l'inverse, c'est la syntaxe django que je voudrais avoir dans wcs, j'écris ça juste pour faire chier)

#6

Mis à jour par Benjamin Dauvergne il y a plus de 7 ans

Mouais je trouve celle d'ezt plus lisible dans les cas simples, le fait est qu'on ne devrait avoir que des cas simples pour ce genre d'usages, de la même manière qu'il faut éviter trop de logique dans les templates, c'est aux vue de préparer les données pour le rendu.

Si on veut juste de l'interpolation de variable, ça peut être assez court:

import re

_item = r'(?:"(?:[^\\"]|\\.)*"|[-\w.]+)'
_re_parse = re.compile(r'\[(%s(?: +%s)*)\]|(\[\[\])|\[#[^\]]*\]' % (_item, _item))

_re_args = re.compile(r'"(?:[^\\"]|\\.)*"|[-\w.]+')

def ezt_template(template, **ctx):
    result = []
    parts = _re_parse.split(template)
    for i in range(0, len(parts) // 3):
        text, directive, bracket = parts[i * 3:i * 3 + 3]
        if text:
            result.append(text)
        if directive:
            result.append(ctx.get(directive.strip(), ''))
        if bracket:
            result.append('[')
    result.append(parts[-1])
    return ''.join(result)

if __name__ == '__main__':
    assert ezt_template('[url]', url='toto') == 'toto'
#7

Mis à jour par Frédéric Péters il y a environ 7 ans

  • Assigné à mis à Frédéric Péters

Je vais m'occuper de ça.

#8

Mis à jour par Frédéric Péters il y a environ 7 ans

Voilà, en plus des redirections j'ai aussi ajouté ça aux URL définies dans les cellules de fil rss et de lien, et dans le connecteur newsletters.

#9

Mis à jour par Thomas Noël il y a environ 7 ans

Ack

#10

Mis à jour par Thomas Noël il y a environ 7 ans

Est-ce qu'on s'autorise des .strip() comme dans wcs ? (bof...)

#11

Mis à jour par Frédéric Péters il y a environ 7 ans

  • Statut changé de En cours à Résolu (à déployer)

Pour le redirect_url, on fait déjà un strip() dans combo/manager/forms.py.

commit e7915bd4062d2758ff1e96fb04c88cd22e283ab1
Author: Frédéric Péters <fpeters@entrouvert.com>
Date:   Fri Feb 3 15:12:17 2017 +0100

    general: add support for substitution variables in URLs (#14622)
#12

Mis à jour par Frédéric Péters il y a plus de 5 ans

  • Statut changé de Résolu (à déployer) à Solution déployée

Formats disponibles : Atom PDF