2010年11月28日日曜日

さくらとcoreserver-mini

先日Django-cmsをデプロイしてみたが、さくらでは眠ってしまいそうなくらい遅かった。coreserver-miniではそこそこのレスポンス。借りているサーバーにもよるのだろうけれど…
マシンスペック
さくら
CPU T7200 @ 2.00GHz メモリ:2GB
 coreserver-mini
Xeon L3110 3.00GHz x 2    4019MB
の差でしょうか。

2010年11月25日木曜日

2010年11月11日木曜日

reportlab misc

canvasのページサイズ
canvas._pagesize

A4  
(210, 297) mm 
( 595.28, 841.89)Pixcel(@72 dpi)

2010年11月9日火曜日

django-scheduleのweekページで曜日の短縮型

日付が2桁だと水曜日に行からあふれるので
_daily_occurrences.htmlの5行め
        {{day.start|date:"l, d"}}

        {{day.start|date:"D, d"}}

2010年11月7日日曜日

djangoのformでMultipleChoiceFieldの初期値設定

forms.MultipleChoiceField(choices=( ('0', 'Foo'), ('1', 'Bar'), ('2', 'Hoge')), required=False, initial=['0', '2'])

2010年11月4日木曜日

Django-cmsでmenuのカスタマイズ

djangoのアプリで結果はpublicに表示したいけれど登録やリストその他のアプリURLはログインしたuserだけに見えるようにしたい。(Advanced SettingsのMenu visibilityをfor logged in users onlyに設定しちゃうとそのページも見えなくなる。)
たとえば、edit, list, enrollをhogeMenuとしてmenu.pyに登録して、一般に表示する部分はurl(r'$', 'showPublic'),とurls.pyの登録し
/hoge/                                 一般に表示する
/hoge/edit/                        ログインユーザーのみ
/hoge/list/                         ログインユーザーのみ
/hoge/enroll/                    ログインユーザーのみ
としたければ
from menus.base import Modifier

class skipHogeMenuWithoutLogin(Modifier):
    def modify(self, request, nodes, namespace, root_id, post_cut, breadcrumb):
        for node in nodes:
            if node.namespace == u'HogeMenu':
                if request.user.is_authenticated():
                    node.visible = True
                else:
                    node.visible = False
       
        return ret

menu_pool.register_modifier(skipHogeMenuWithoutLogin)
 をmenu.pyに追加すればよい

Django-cmsでApphook

djangoアプリをdjango-cmsのメニューに乗っけるにはApphookを使うのでけれど、Apphookを追加してpageのAdvanced Settingsでアプリを指定してもcmsのメニューには表示されない
cmsのメニューに表示するにはmenu.pyが必要。
メニューに表示されないが、ページのURLに続いて直打でそれぞれのページを打ち込めば表示はされる。
cms_app.py
from cms.app_base import CMSApp
from cms.apphook_pool import apphook_pool
from django.utils.translation import ugettext_lazy as _
#from menu import HogeMenu    #<-必要

class HogeApphook(CMSApp):
    name = _("Hoge")
    urls = ["hoge.urls"]
    #menus = [HogeMenu]    #<-必要

apphook_pool.register(HogeApphook)
cmsのページでアプリを指定
urls.pyが以下なら
urlpatterns += patterns('hoge.views',
    url(r'edit/$', 'edit_Hoge'),
    url(r'(?P<page>\d+)/$', 'list_Hoge', name='list_Hoge'),
)
http://hogehoge/pageURL/edit/
http://hogehoge/pageURL/1/
でアクセスできる。

2010年11月2日火曜日

bound formでwidgetを変更する

view.pyでお決まりの呪文に追加

if request.method == u'POST':
    form = FooForm(request.POST, instance=Foo)
    form.fields['fieldName'].widget=PasswordInput()
    if form.is_valid():
    .........
else:
    form = FooForm(instance=Foo)
    form.fields['fieldName'].widget=PasswordInput()