1

私はcollective.imagetagsの新しいリリースに取り組んでいます。このリリースでは、ブラウザービュー()によって実行されていたすべての機能が、ブラウザービューimagetags-manageとほぼ同じインターフェイスを提供する新しいアダプター(まだコミットされていません)に移動されています。

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 """

誰かがプロジェクトでこの製品を使用しているかどうかは本当にわかりませんが、誰かが外部のブラウザビューメソッドを使用している場合に備えて、下位互換性メカニズムを提供することは賢明なアイデアだと思います。ボックス機能。

私は何をすべきか?新しいアダプタを中継するスタブメソッドを使用して、ブラウザビューのインターフェイスを維持しますか?なにか提案を?

4

1 に答える 1

1

この種の変更は非常に困難です。API の問題ではなく、設計の問題です。

  • ブラウザー ビューは、使用/要求をコンテキストと組み合わせるコンポーネントです。
  • アダプターは、ユーザーやその要求を気にしないコンポーネントです。
  • ユーティリティは、コンテキストを気にしないコンポーネントです。

したがって、ブラウザビューを保持してアダプタを使用するようにする必要があります。互換性を維持するにはそれで十分です。

アップグレードは、デフォルト プロファイルを変更するときに使用されます。最初に、metadata.xml のバージョンは整数でなければなりません (1000 が最初の安定したバージョンとしてよく使用されます)。

<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()
于 2011-05-11T12:06:38.683 に答える