chmod 777 cms.db
と
chmod 777 parent_directory
ここ
2012年2月20日月曜日
2011年11月5日土曜日
django-1.3にdjango-cms-2.2をインストールする時
2011年8月11日木曜日
insert_at with commit arg @ django-cms 2.2 b1
やられた。
django-cms 2.2 b1から従来のdjango-cms内のmpttからdjango-mpttに変更になっている。
ここのDjango-cmsでpageをスクリプトで挿入する方法が"commit=True"から"save=True"に変更になっている。
django-cms 2.2 b1から従来のdjango-cms内のmpttからdjango-mpttに変更になっている。
ここのDjango-cmsでpageをスクリプトで挿入する方法が"commit=True"から"save=True"に変更になっている。
2011年6月23日木曜日
djangoでlocalとremoteを切り替える。tips
djangoで共有SSLを使っていると、remoteとlocalを切り替えるのが面倒だ。
settingsに
USE_AT_LOCAL = False
を追加して、
manage.pyに
settings.USE_AT_LOCAL = True
を追加して、
remoteとlocalの部分をifで切り分けた。
eclipseでdebugできるぞ。
settingsに
USE_AT_LOCAL = False
を追加して、
manage.pyに
settings.USE_AT_LOCAL = True
を追加して、
remoteとlocalの部分をifで切り分けた。
eclipseでdebugできるぞ。
2011年6月7日火曜日
django-cmsでTinyMCEのcustomize
settings.pyに
cms/plugins/text/widgets/tinymce_widget.py
CMS_PLUGIN_TEXT_TINYMCE_CONFIG['theme'] = "advanced"
を入れておかないとerror
CMS_PLUGIN_TEXT_TINYMCE_CONFIG = {}
CMS_PLUGIN_TEXT_TINYMCE_CONFIG['theme'] = "advanced"
CMS_PLUGIN_TEXT_TINYMCE_CONFIG['theme_advanced_buttons1'] = "cut,copy,paste,|,undo,redo,removeformat,|,code,preview,cleanup,|,help,|,hr,charmap,insertdate,inserttime"
CMS_PLUGIN_TEXT_TINYMCE_CONFIG['theme_advanced_buttons2'] = "styleselect,formatselect,fontselect,fontsizeselect,|,justifyleft,justifycenter,justifyright,"
CMS_PLUGIN_TEXT_TINYMCE_CONFIG['theme_advanced_buttons3'] = "bold,italic,underline,strikethrough,sub,sup,|,forecolor,backcolor,|,blockquote ,link,unlink,anchor,image,|,bullist,numlist,|,indent,outdent,"
CMS_PLUGIN_TEXT_TINYMCE_CONFIG['theme_advanced_toolbar_location'] = "top"
CMS_PLUGIN_TEXT_TINYMCE_CONFIG['theme_advanced_toolbar_align'] = "left"
CMS_PLUGIN_TEXT_TINYMCE_CONFIG['theme_advanced_statusbar_location'] = "bottom"
CMS_PLUGIN_TEXT_TINYMCE_CONFIG['theme_advanced_resizing'] = True
cms/plugins/text/widgets/tinymce_widget.py
assert 'id' in final_attrs, "TinyMCE widget attributes must contain 'id'"cms/plugins/text/settings.py
mce_config = cms.plugins.text.settings.TINYMCE_CONFIG.copy()
mce_config.update(get_language_config(self.content_language))
if USE_TINYMCE:となっている。
import tinymce.settings
TINYMCE_CONFIG = getattr(settings, 'CMS_PLUGIN_TEXT_TINYMCE_CONFIG', tinymce.settings.DEFAULT_CONFIG)
CMS_PLUGIN_TEXT_TINYMCE_CONFIG['theme'] = "advanced"
を入れておかないとerror
2011年6月6日月曜日
django-cmsでTinyMCEの設定でsimpleとadvancedが一緒
plugins/text/widgets/tinymce_widget.py
の
line 65-66
の
line 65-66
mce_config['plugins'] = pluginsやられた。
if mce_config['theme'] == "simple":mce_config['theme'] = "advanced"mce_config['theme_advanced_buttons1_add_before'] = "cmsplugins,cmspluginsedit"
2011年6月5日日曜日
django-cmsでTinyMCE
INSTALLED_APPSに'tinymce',を追加。
mediaディレクトリの適当な位置にTinyMCE本体をコピー。
TINYMCE_JS_URLとTINYMCE_JS_ROOTを設定。
url.pyにurl(r'^tinymce/', include('tinymce.urls')),を追加。
mediaディレクトリの適当な位置にTinyMCE本体をコピー。
TINYMCE_JS_URLとTINYMCE_JS_ROOTを設定。
url.pyにurl(r'^tinymce/', include('tinymce.urls')),を追加。
2011年5月31日火曜日
plugins template
すぐ忘れるので、メモ
find . -type d -name templates | grep plugins | sed 's/$/\/cms/' | xargs cp -rvf -t [project]/templates/
find . -type d -name templates | grep plugins | sed 's/$/\/cms/' | xargs cp -rvf -t [project]/templates/
2011年5月24日火曜日
django-cms media folder
すぐ忘れるので、メモ
cp -rvf django/django/contrib/admin/media [project]/media/admin/
cp -rvf django-cms/cms/media [project]/media/
cp -rvf django/django/contrib/admin/media [project]/media/admin/
cp -rvf django-cms/cms/media [project]/media/
2011年4月14日木曜日
括弧抜け
cms/templates/admin/cms/page/change_form.html
52: .notfilled{
53: color: #808080 !important;
54: }
django-cms-2.1.3
本家に投げときました。
52: .notfilled{
53: color: #808080 !important;
54: }
django-cms-2.1.3
本家に投げときました。
2011年2月8日火曜日
django-axesでlogin lock
djangoでadminやloginに複数回のログイン失敗に対してlockをかけ設定した時間が経過しないとログインできないようにしたいならdjango-axes
ドキュメントとおりにインストールしてdjangoに設定すればOK
ソース読めば分かるけれど、ドキュメントにない設定もある。使うのは、
#失敗した後ロックされる時間
AXES_COOLOFF_TIME = 3 #hour
#ロックされたときに使うテンプレート
AXES_LOCKOUT_TEMPLATE = 'account_locked.html'
あと、
settings.pyで
PROJECT_ROOT = os.path.abspath(os.path.dirname(__file__))
と設定しているから
LOGFILE = os.path.join(settings.DIRNAME, 'axes.log')
を
LOGFILE = os.path.join(settings.PROJECT_ROOT, 'axes.log')
としてプロジェクトディレクトリにlogin履歴がaxes.logに書き込まれる。
AXES_LOCKOUT_TEMPLATEには
'cooloff_time': COOLOFF_TIME,
'failure_limit': FAILURE_LIMIT,
が渡されるので好きにしてよい。
デコレーターなので自前のログイン関数にも
from axes.decorators import watch_login
.......
@watch_login
def login(request):
でOK
本家はここ。 TNX!
ドキュメントとおりにインストールしてdjangoに設定すればOK
ソース読めば分かるけれど、ドキュメントにない設定もある。使うのは、
#失敗した後ロックされる時間
AXES_COOLOFF_TIME = 3 #hour
#ロックされたときに使うテンプレート
AXES_LOCKOUT_TEMPLATE = 'account_locked.html'
あと、
settings.pyで
PROJECT_ROOT = os.path.abspath(os.path.dirname(__file__))
と設定しているから
LOGFILE = os.path.join(settings.DIRNAME, 'axes.log')
を
LOGFILE = os.path.join(settings.PROJECT_ROOT, 'axes.log')
としてプロジェクトディレクトリにlogin履歴がaxes.logに書き込まれる。
AXES_LOCKOUT_TEMPLATEには
'cooloff_time': COOLOFF_TIME,
'failure_limit': FAILURE_LIMIT,
が渡されるので好きにしてよい。
デコレーターなので自前のログイン関数にも
from axes.decorators import watch_login
.......
@watch_login
def login(request):
でOK
本家はここ。 TNX!
2011年1月28日金曜日
2011年1月20日木曜日
monkey_patch function
django-cmsのmonkeypatch_reverseから忘れないうちにメモ。
pythonで、関数もオブジェクトだから既存のライブラリを書き換えてしまえ。
main.py
pythonで、関数もオブジェクトだから既存のライブラリを書き換えてしまえ。
main.py
from funcs import funcfuncs/func.py #元の関数
def main():
func.printStr(u'hello')
if __name__ == '__main__':
main()
import monkey #新しい関数でpatch
main()
def printStr(string):monkey_patch.py #新しい関数
print u'original', string
import funcs
def monkey_patch_func():
def new_printStr(string):
print u'monkey', string
print funcs.func.printStr
funcs.func.old_printStr = funcs.func.printStr #元の関数を退避
funcs.func.printStr = new_printStr #新しい関数を接続
print funcs.func.printStr
monkeypatched = False #新しい関数の接続は1回だけ
if not monkeypatched:
monkey_patch_func()
monkeypatched = True
2011年1月17日月曜日
django-cms, python2.4 work around
RC2になってからインストール時にerror
古いpythonしか使えないから、小細工を
cms/utils/urlutils.pyのis_media_requestを
追記:結局pythonを野良ビルド
古いpythonしか使えないから、小細工を
cms/utils/urlutils.pyのis_media_requestを
def is_media_request(request):
"""
Check if a request is a media request.
"""
parsed_media_url = urlparse(settings.MEDIA_URL)
#python 2.4 work around
try:
if request.path.startswith(parsed_media_url.path):
if parsed_media_url.netloc:
if request.get_host() == parsed_media_url.netloc:
return True
else:
return True
except:
if request.path.startswith(parsed_media_url[2]):
return True
#python 2.4 work around end
return False
追記:結局pythonを野良ビルド
2011年1月12日水曜日
共有SSLでDjango接続
proxyを使って
https http
client---------->SSL(proxy) Server--------->Server
|----> provider
と言うことらしい。
つまり、プロバイダ内のSSLサーバーがSSL接続を受けて、プロバイダ内のネットワークを経由して共有サーバーに普通にhttp接続する。こうすることにより、clientからプロバイダまでの接続が暗号化される。
coreserverだと
request.METAの中に'HTTP_VIA'と'HTTP_X_FORWARDED_FOR'がセットされている。
ちゅうことは、Djangoのミドルウエアで受けたらOKかな?
参考:
http://drupal.org/node/339552
http://wiki.ryusendo.net/index.cgi?page=PHP%A5%D7%A5%ED%A5%B0%A5%E9%A5%DF%A5%F3%A5%B0#p17
追記:
HTTP_X_FORWARDED_FORがセットされたrequestがくるとurlを変更するミドルウエアでOK
のこるはlogin, admin
https http
client---------->SSL(proxy) Server--------->Server
|----> provider
と言うことらしい。
つまり、プロバイダ内のSSLサーバーがSSL接続を受けて、プロバイダ内のネットワークを経由して共有サーバーに普通にhttp接続する。こうすることにより、clientからプロバイダまでの接続が暗号化される。
coreserverだと
request.METAの中に'HTTP_VIA'と'HTTP_X_FORWARDED_FOR'がセットされている。
ちゅうことは、Djangoのミドルウエアで受けたらOKかな?
参考:
http://drupal.org/node/339552
http://wiki.ryusendo.net/index.cgi?page=PHP%A5%D7%A5%ED%A5%B0%A5%E9%A5%DF%A5%F3%A5%B0#p17
追記:
HTTP_X_FORWARDED_FORがセットされたrequestがくるとurlを変更するミドルウエアでOK
のこるはlogin, admin
2010年12月13日月曜日
django-cmsをCGIで
django-cmsをCGIでやろうとするとURLにlanguageとCGIの名前が含まれて邪魔。
menuのNavigationNodeの初期化の時取ってしまうと吉。
と思っていたが別の方向考慮中
結論:REDIRECT_URLをとっちまう。@CGI
menuのNavigationNodeの初期化の時取ってしまうと吉。
と思っていたが別の方向考慮中
結論:REDIRECT_URLをとっちまう。@CGI
2010年11月28日日曜日
さくらとcoreserver-mini
先日Django-cmsをデプロイしてみたが、さくらでは眠ってしまいそうなくらい遅かった。coreserver-miniではそこそこのレスポンス。借りているサーバーにもよるのだろうけれど…
マシンスペック
さくら
CPU T7200 @ 2.00GHz メモリ:2GB
coreserver-mini
Xeon L3110 3.00GHz x 2 4019MB
の差でしょうか。
マシンスペック
さくら
CPU T7200 @ 2.00GHz メモリ:2GB
coreserver-mini
Xeon L3110 3.00GHz x 2 4019MB
の差でしょうか。
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/ ログインユーザーのみ
としたければ
たとえば、edit, list, enrollをhogeMenuとしてmenu.pyに登録して、一般に表示する部分はurl(r'$', 'showPublic'),とurls.pyの登録し
/hoge/ 一般に表示する
/hoge/edit/ ログインユーザーのみ
/hoge/list/ ログインユーザーのみ
/hoge/enroll/ ログインユーザーのみ
としたければ
from menus.base import Modifierをmenu.pyに追加すればよい
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)
Django-cmsでApphook
djangoアプリをdjango-cmsのメニューに乗っけるにはApphookを使うのでけれど、Apphookを追加してpageのAdvanced Settingsでアプリを指定してもcmsのメニューには表示されない。
cmsのメニューに表示するにはmenu.pyが必要。
メニューに表示されないが、ページのURLに続いて直打でそれぞれのページを打ち込めば表示はされる。
cms_app.py
urls.pyが以下なら
http://hogehoge/pageURL/1/
でアクセスできる。
cmsのメニューに表示するにはmenu.pyが必要。
メニューに表示されないが、ページのURLに続いて直打でそれぞれのページを打ち込めば表示はされる。
cms_app.py
from cms.app_base import CMSAppcmsのページでアプリを指定
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)
urls.pyが以下なら
urlpatterns += patterns('hoge.views',http://hogehoge/pageURL/edit/
url(r'edit/$', 'edit_Hoge'),
url(r'(?P<page>\d+)/$', 'list_Hoge', name='list_Hoge'),
)
http://hogehoge/pageURL/1/
でアクセスできる。
2010年10月27日水曜日
登録:
投稿 (Atom)

