2015-03-01から1ヶ月間の記事一覧

postするデータをjson化してpostすればcollectionなどにも対応出来そう。

例えば以下のようなhtmlを <form> <input type="submit"> <div>event <input name="name" placeholder="event name"/> </div> <div collection="participants"> <div>user: <input name="name" placeholder="user name"> <input age="age" placeholder="0" type="number"> </div></div></form>

FormとSchemaの違いvalidation編

FormとSchemaの違いvalidation編 FormとSchemaの違いをプレゼンテーション側からみた話を前に書来ましたが validation側から見た場合にも両者は違うようです。 エラー時にSchemaは元の入力値を捨てても良いが、Formは元の入力値にアクセスできることが重要 S…

marshmallowのdumpをupdate_fieldsを指定せずに使うと型の調査が入るので遅い。

http://marshmallow.readthedocs.org/en/latest/api_reference.html#marshmallow.Schema.dump update_fieldsという引数がdefaultでTrueになっていて。これは値のtypeを見て、変換する関数を変えている。具体的なmappingはmarshmallow.schemaにかかれていて以…

marshmallow-formにform-factoryが誕生しました。Nestedなフィールドのmany=Trueが有効になりました

marshmallow-formにform-factoryが誕生しました。Nestedなフィールドのmany=Trueが有効になりました。 今回の主な変更点は以下の3つです 必要なら 各フィールドに描画関数を設定することができるようになりました form_factoryが使えるようになりました(exp…

marshmallow-formでmetadataのoverrideが出来るようになりました

marshmallow-formでmetadataのoverrideが出来るようになりました。 marshmallow-formでmetadataのoverrideが出来るようになりました。 他にも幾つか変更点がありますがコレが大きな変更です。 override出来るのは以下の2箇所です Nestedで作ったフィールド…

marshmallow-formにfrom_objectを追加しました。

marshmallow-formにfrom_objectを追加しました。 今まで受け取る値が辞書だけでしたが。ORMのmodelなどオブジェクトを受け取りたい場合があります。 そのような場合に対応するためにfrom_objectを追加しました。 以下の様にして使います。 import marshmallo…

marshmallow-formのvalidation部分の機能を修正しました。

marshmallow-formのvalidation部分の機能を修正しました。 昨日時点のままでも以下の様なコードは動いていました*1。 from marshmallo.validate import Length class AuthenticationForm(mf.Form): name = mf.String() password = mf.String(Length(5)) pass…

marshmallow-formに継承の対応とlayoutシステム付けました

marshmallow-formに継承の対応とlayoutシステム付けました。 marshmallow-form に以下のような機能を付けました。 継承の対応 ネストしたフォームを順序付きで利用 Layoutシステム 今回一番の変更はLayoutシステムな気がします。 継承の対応 むしろ無かった…

marshmallow-formというもの作っています

marshmallow-formというもの作っています(wip) marshmallow-form というもの作っています。これは、marshmallow をフォームライブラリっぽく使えるようにラッピングしたライブラリです。 フォームライブラリとは フォームライブラリとはhtmlのフォーム要素を…

pythonで動的に生成したモジュールをキャッシュする方法

pythonで動的に生成したモジュールをキャッシュする方法 pythonで動的に作ったコードから生成したモジュールをキャッシュする方法について調べたのでまとめました。 bytecode経由でキャッシュする方法 tempfile経由でキャッシュする方法 ちなみにこれはテン…

kamoというテンプレートエンジンを作ろうとしてみました

kamoというテンプレートエンジンを作ってみました kamo というテンプレートエンジンを作ってみました。まだ開発は途中なのですが、だいたい1日位でそれなりに動くテンプレートエンジンが作れるものなんだな〜と思ったりしました。文法的にはおおよそmako に…

astモジュールを使ってあるモジュールの変数名を抜き出す。

NodeTransformerというvisitorが用意されているのでこれを使うのが一番楽 import ast import inspect class CollectVarname(ast.NodeTransformer): def __init__(self): self.r = set() def visit_Name(self, node): self.r.add(node.id) def collect_varnam…

filegenを使ったscaffold scriptの作成のしかた

filegenを使ったscaffold scriptの作成のしかた filegenでscaffold用のスクリプトを生成する方法は以下のようなコードを書く。 filegen_script.py # -*- coding:utf-8 -*- from filegen import Filegen from filegen.asking import AskString def gen(): fg …

filegenでscaffold scriptを作れる様になった

以下の様なことが出来るようになった filegen.packageが簡単なpython packageの雛型を持つようになった filegenに非依存なscaffold commandが生成出来るようになった。 python packageの生成 filegen.packageを呼び出すとpython packageのscaffoldとして機能…

djangoとsqlalchemyでunion allで繋げるようなものを参照・更新含めて考えてみた

djangoとsqlalchemyでunion allで繋げるようなものを参照・更新含めて考えてみた。 はじめはdjangoのormでviewを使った方法を考えて、ちょっとしたことからdjangoが思いもしない挙動をしたのでsqlalchemyではどうだったのか確認しようとした。 状況説明 以下…

python3の環境でpygraphvizをインストールしようとしてみた時のメモ

macのpython3環境でpygraphvizをインストールしようとした時のメモ 事前にmacportsでgraphviz-develをインストールしておきます。*1 sudo port install graphviz-devel 前提の環境 $ python -V Python 3.4.2 試しにpip でinstallしようとする 試しにpipでイ…

djangoでのテストデータの生成方法について考えてみた

djangoでのテストデータの生成方法について考えてみた。 集計や検索などのテストが辛い 今までdjangoでテストデータを作ってきてfactory boyを使ったテストを前提にするというのがあったのだけれど。 これは、必要となるモデルの数が少ないものでは上手くい…

srcgenを止めてprestringというライブラリを作り始めました。

srcgenを止めてprestringというライブラリを作り始めました。 ここ最近srcgenを使って遊んでたんですが、色々と思う所があったので自分でライブラリを作りました。 srcgenの素晴らしいところ インデントを含んだ構造をすごい手軽に記述できるのが良いです。 …

pythonのnamedtupleについて見過ごしてきたこと

pythnonのcollectionsにnamedtupleがありますが。コレについて見過ごしてきたことがありました。以下のようなコードがTrueを返してしまいます。 from collections import namedtuple Foo = namedtuple("Foo", "name value") Bar = namedtuple("Bar", "name v…