今、家に帰ってきました

今家に帰ってきました。今朝は、せっかく技術的なブログを書いたのですが、誤って消してしまった。orz。

今日は、城ヶ崎海岸の門脇吊橋から海沿いを歩き、城ヶ崎海岸駅近くのお店でパスタを食べて、高原の湯で露天風呂につかり、昼寝して、新幹線で帰ってきました。というわけで、開発はゼロ。伊豆を満喫しました。

昨日の話になりますが、プラグインや管理画面のテンプレートポリシー、メニューポリシーについて議論ができました。プロジェクト側からプラグインに lib/base.py の情報を渡すのに、StackedObjectProxy を使えないかというアイデアも出ました。もう2, 3テーマ、設計指針を固めたかったのですが、力及ばず。5人いて、しかもPyxisに精通していないメンバーも多いので、(コーディングではなくて)はじめから設計議論主体の進め方にすればよかったですね。反省点です。

プラグイン

  • Model はプラグイン側で持って、プロジェクト側のmodels/__init__.py でインポートします。
  • Controller は、元になるものをプラグイン側で持って、プロジェクト側でそれを継承します。プロジェクト側のController はコマンドで自動生成するような仕組みを提供します。
  • プロジェクトの lib/base.py 設定をプラグイン側から読むための仕組みを提供します。そうしないと、プラグインの側でControllerが書きづらい。(もう少し検討が必要ですが)

管理機能

  • いろいろ議論したすえ、権限管理は2次元マップで持つことになりそうです。保存先はDBかコードか検討中。権限管理とController のクラスは、関連を弱くしたい。デコレータなどの利用を考えています。
  • 「管理画面テンプレート」と「メニュー自動生成」を提供するだけの軽い仕組みと、「一覧画面の自動生成」「ステータス管理」をする仕組みを、うまく分離して設計したい。目指すところはこんな感じ。
    • 前者では、自由度100%であらゆる機能をそのうえに実装できる。
    • 典型的なCMSは、後者の仕組みを用いて、とても簡単に実装できる。

そのためにも、今Genshi と Mako が混ざっているコードを、早くMako に統一せねば。


それにしても、熱海から新横浜まで新幹線で早すぎ!!おかげで設計の話がほとんどできんかった!