J'essaye de faire une certaine personnalisation d'un site Web de gestion de projet de Trac et ai rencontré un problème intéressant. Le projet a un ensemble d'images qui sont à la fois SVG et PNG. Les images SVG ont de nombreux avantages, y compris de multiples liens hypertexte et une plus petite taille transmise par rapport à PNG qui est plus grande et ne peut que lier à un seul document.Comment obtenir l'agent utilisateur distant dans un modèle Genshi lors de l'utilisation de Trac et de WSGI?
Je me rends compte qu'il est possible d'utiliser jQuery pour détecter l'agent utilisateur après le chargement de la page et remplacer le fichier PNG par la version SVG de l'image, mais le PNG est envoyé à tous les clients. Je peux aussi avoir Genshi remplacer le PNG avec SVG pour tous les clients, puis utiliser jQuery pour remettre le PNG, mais le même problème se produit. Je pourrais utiliser jQuery pour insérer les images appropriées pour tous les clients, mais cela semble stupide d'exiger que le client fasse ce que le serveur devrait faire.
Y a-t-il un moyen d'obtenir des informations de navigateur à l'intérieur d'un modèle Genshi? C'est un peu plus difficile que de simplement appeler des variables d'environnement parce que j'utilise Trac avec WSGI. J'ai regardé à travers la sortie de repr(locals())
et n'a pas vu quelque chose qui semblait avoir résolu mon problème. Je voudrais également éviter de modifier le code source Trac.
Eh oui, dans un environnement de CGI ou à l'intérieur d'une application WSGI que je pouvais faire ceux-ci, mais 'environ' est vide à l'intérieur Genshi et je ne peux pas savoir où/si l'objet de la demande est transmise à Genshi de Trac/WSGI. En outre, HTTP_ACCEPT est probablement un non aller parce que certains navigateurs mentent et disent qu'ils peuvent accepter SVG mais le font mal - je vous regarde Chrome! Ce qui donne avec les boîtes blanches géantes pour les arrière-plans‽ – Pridkett
@Pridkett: grep votre source trac pour le nom du modèle et passez les variables requises dans le code de rendu. – jfs
J'essaie d'éviter de changer le code source Trac. Je suis allé trop souvent dans ce sens et je ne veux pas vraiment m'inquiéter de la gestion d'une variété de patchs - même très simples. – Pridkett