2011-05-09 4 views
1

Je travaille sur une nouvelle version de collective.imagetags dans laquelle toutes les fonctionnalités qui ont été portées par une vue de navigateur (imagetags-manage) sont maintenant déplacées vers un nouvel adaptateur (pas encore engagé) qui fournit presque la même interface que la vue du navigateur ::Fourniture de compatibilité descendante pour un composant Zope

class IManageTags(Interface): 
    """ 
    imagetags-manage view interface 
    Tag management browser view 
    """ 

    def get_tag(id, create_on_fail=True): 
     """ Gets/creates a specific tag """ 

    def get_tags(): 
     """ Gets all the tags for the object """ 

    def get_sorted_tags(): 
     """ Sorted list of tags 
     """ 

    def save_tag(data): 
     """ Saves a tag with the passed data """ 

Je ne sais vraiment pas si quelqu'un utilise ce produit dans un projet, cependant, je pense que ce serait une idée raisonnable de prévoir un mécanisme de compatibilité ascendante, en Si quelqu'un utilise les méthodes d'affichage du navigateur en dehors des fonctionnalités prêtes à l'emploi.

Que dois-je faire? Conserver l'interface de la vue du navigateur avec les méthodes de remplacement qui relaient sur la nouvelle carte? Une suggestion?

+0

Cette La question peut être mieux adaptée à la liste des développeurs de produits: http://plone.org/support/forums/addons. – aclark

+0

@aclark, si vous pensez que je devrais fermer cette question, s'il vous plaît faites le moi savoir et fermez-le vous aussi, s'il vous plaît. – marcosfromero

+0

Ce sujet est suivi dans un autre forum (http://plone.293351.n2.nabble.com/Providing-backward-compatibility-for-a-zope-component-td6345399.html) comme suggéré par @aclark. Editeurs: veuillez fermer cette question. Ne pas le supprimer pour conserver l'historique et le suivi. – marcosfromero

Répondre

1

Ce genre de changement est assez difficile! Ce n'est pas une question d'API mais de design.

  • Les vues de navigateur sont un composant où vous mélangez utilisation/demande avec le contexte.
  • Les adaptateurs sont des composants où vous ne vous souciez pas de l'utilisateur ou de sa requête.
  • utilitaire sont des composants où vous ne vous souciez pas du contexte.

Donc, vous devriez garder votre navigateur et l'utiliser, il devrait être suffisant pour garder la compatibilité.

Les mises à niveau sont utilisées lorsque vous modifiez le profil par défaut. Tout d'abord la version metadata.xml doit être un entier (1000 est souvent utilisé comme première version stable) Ensuite, tous les changements au profil devraient suivre une augmentation de ce numéro de version et vous devez ajouter une étape de mise à niveau:

<gs:upgradeStep 
    title="Upgrade collective.myaddon from 1000 to 1010" 
    description="" 
    source="1000" 
    destination="1010" 
    handler=".upgrades.upgrade_1000_1010" 
    profile="collective.myaddon:default"/> 


upgrades.py 
def upgrade_1000_1010(context): 
    """documentation 
    """ 
    context.runImportStepFromProfile(default_profile, 'viewlets') 
    portal_javascripts = getToolByName(context, 'portal_javascripts') 
    portal_javascripts.cookResources() 
Questions connexes