半角カナ

こんなのあったらいいなぁと思ったので作ってみました:-)

def isNotHalfWidthKana(field_data, all_data):
    test = unicode(field_data, 'utf-8')
    #KANA = range(65377, 65439) 
    KANA = range(65377, 65440)

    if len([c for c in test if ord(c) in KANA]) > 0:
        raise validators.ValidationError(_('Not Half-width Kana.'))

英語は適当です:-p

テストも殆ど書いていませんので、信頼性は?です。
日本語用バリデーションのサンプルになれば幸いです。

追記

id:perezvonさんのアドバイス(というか答え?)を元に作り直してみました。

def isNotHalfWidthKana(field_data, all_data):
    test = unicode(field_data, 'utf-8')
    han_kana = re.compile(u'[\uFF61-\uFF9F]+')   
    
    if han_kana.search(test) is not None:
        raise validators.ValidationError(_('Not Half-width Kana.'))

matchだと「あああアアアあああ」を通してしまうようなので、
searchを使ってみましたがいかがでしょうか?

追記の追記

なんか広がってる...

odz buffer - Half Width Katakana の判定
http://d.hatena.ne.jp/odz/20061111/1163272537


perezvonの日記 - ユニコード文字列が半角カナであるかどうかを判定する
http://d.hatena.ne.jp/perezvon/20061112/1163296911

勉強させていただいておりますm(_ _)m