userは必ず1つのグループに所属しなければならない。
permissionを持たないグループも必要かも。
2010年10月27日水曜日
2010年10月26日火曜日
python manage.py syncdbで入力不要
python manage.py --noinput syncdb
でプロンプトがでなくなる。あとは
python manage.py createsuperuser --username=foo --email=hoge
でスーパーユーザーをつくればOK!
deployでつかえる。
追記:createsuperuserでスーパーユーザーを作るときはpost_saveシグナルが発行された後 is_staff = True, is_active = True, is_superuser = Trueが設定される。
でプロンプトがでなくなる。あとは
python manage.py createsuperuser --username=foo --email=hoge
でスーパーユーザーをつくればOK!
deployでつかえる。
追記:createsuperuserでスーパーユーザーを作るときはpost_saveシグナルが発行された後 is_staff = True, is_active = True, is_superuser = Trueが設定される。
2010年10月25日月曜日
2010年10月20日水曜日
2010年10月19日火曜日
Boost.Pythonのデバッグ
メモのみ
gdb --args python [./test.py]
C++のクラスをpythonにさらしてインタープリターからコントロールしようとすると
Segmentation fault
同じライブラリでC++のアプリから同じ手順で動かすと動く。
それもある特定のオブジェクトを使ったときだけ…不思議じゃ。
Boost PythonとBoost serializationの相性か?
boost-1.44
Ubuntu10.04
GCC-4.4.3
python 2.6.5
追記10/22
どうも根が深いみたい。ここ
gdb --args python ./test.py
だと
Program received signal SIGSEGV, Segmentation fault. 0xb5010c17 in __cxa_allocate_exception () from /usr/lib/libstdc++.so.6
LD_PRELOAD="libGL.so libstdc++.so.6" gdb --args python ./test.py
だと
Traceback (most recent call last):
File "./test.py", line 16, in <module>
lst.save("./test.xml")
RuntimeError: unregistered class - derived class not registered or exported
Program exited with code 01.
2010年10月16日土曜日
重複取り出し
setを使うべきでした。
#!/usr/bin/env python
#-*- coding:utf-8 -*-
answer0 = 'a'
answer1 = 'b'
answer2 = 'c'
answer3 = 'b'
answer4 = 'd'
passPhrases = (answer0, answer1, answer2, answer3, answer4, )
sets = set('')
ret = []
size = 0
for item in passPhrases:
sets.add(item)
if len(sets)== size:
ret.append(item)
size = len(sets)
print ret
dups = {}
for dup in ret:
duplist = []
pos =0
for item in passPhrases:
if item == dup:
duplist.append(pos)
pos =pos + 1
dups[dup] = duplist
print dups
#-*- coding:utf-8 -*-
answer0 = 'a'
answer1 = 'b'
answer2 = 'c'
answer3 = 'b'
answer4 = 'd'
passPhrases = (answer0, answer1, answer2, answer3, answer4, )
sets = set('')
ret = []
size = 0
for item in passPhrases:
sets.add(item)
if len(sets)== size:
ret.append(item)
size = len(sets)
print ret
dups = {}
for dup in ret:
duplist = []
pos =0
for item in passPhrases:
if item == dup:
duplist.append(pos)
pos =pos + 1
dups[dup] = duplist
print dups
2010年10月15日金曜日
PILで文字列画像化
#!/usr/bin/env python
#-*- coding:utf-8 -*-
import Image, ImageFont, ImageDraw
# output string
emailString = u"こんにちは"
#get font metrics
font = ImageFont.truetype("/usr/share/fonts/truetype/takao/TakaoPGothic.ttf", 24, encoding='unicode')
size = font.getsize(emailString)
#create image
image = Image.new('RGBA', (size[0]+10, size[1]+10), (0, 0, 0, 0))
draw = ImageDraw.Draw(image)
# use a truetype font
draw.text((5, 5), emailString, font=font, fill='#000000')
#save the image
image.save("string.png", 'PNG')
でけた。
2010年10月13日水曜日
django-cmsでsnippetのi18n
snippetの中に{% trans "Site Map" %}としてやってもdjango-admin makemessagesでは取り出してくれない。*.htmlだけだから?でもsnippetsはdbの中にあるし。
しかたがないのでdjango.poの末尾に
msgid "Site Map"
msgstr "サイトマップ"
と付けた。
templateに出してみることをしてみたが、今度は肝心のmenuがそのまま出力されてしまう。ちなみにコードはこう。
しかたがないのでdjango.poの末尾に
msgid "Site Map"
msgstr "サイトマップ"
と付けた。
templateに出してみることをしてみたが、今度は肝心のmenuがそのまま出力されてしまう。ちなみにコードはこう。
{% load cache cms_tags %}
{% load cms_tags menu_tags %}
{% load i18n %}
<h2>{% trans "Site Map" %}</h2>
<ul id="siteMapTree" class="treeview">
{% show_menu 0 100 100 100 %}
</ul>
2010年10月12日火曜日
django-cmsでdjago-scheduleの年間スケジュールの月名をi18n
オリジナルはpythonのlocaleで月名を出しているので
periods.pyのclass Month(Period)のdef name(self)を
えらい苦労したぞ。
periods.pyのclass Month(Period)のdef name(self)を
def name(self):から
return self.start.strftime('%B')
def name(self):に変更。
monthName=(_('January'), _('February'), _('March'), _('April'),
_('May'), _('June'), _('July'), _('August'),
_('September'), _('October'), _('November'), _('December'), )
month = int(self.start.strftime('%m')) - 1
return monthName[month]
えらい苦労したぞ。
djangoでnew userにpassword change mailを送る
サイトにアカウントを作成したら、ユーザーにパスワードを設定してもらえるようにメールを送りたい。
1)emailを必須に(django/contrib/auth/models.py version 1.2.3)
1)emailを必須に(django/contrib/auth/models.py version 1.2.3)
@@ -196,7 +196,7 @@2)admin pageに表示(django/contrib/auth/admin.py version 1.2.3)
username = models.CharField(_('username'), max_length=30, unique=True, help_text=_("Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"))
first_name = models.CharField(_('first name'), max_length=30, blank=True)
last_name = models.CharField(_('last name'), max_length=30, blank=True)
- email = models.EmailField(_('e-mail address'), blank=True)
+ email = models.EmailField(_('e-mail address'), blank=False)
password = models.CharField(_('password'), max_length=128, help_text=_("Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change password form</a>."))
is_staff = models.BooleanField(_('staff status'), default=False, help_text=_("Designates whether the user can log into this admin site."))
is_active = models.BooleanField(_('active'), default=True, help_text=_("Designates whether this user should be treated as active. Unselect this instead of deleting accounts."))
@@ -34,7 +34,7 @@3)User post save signal(profile/models.py)
add_fieldsets = (
(None, {
'classes': ('wide',),
- 'fields': ('username', 'password1', 'password2')}
+ 'fields': ('username', 'password1', 'password2', 'email')}
),
)
form = UserChangeForm
from django.db.models.signals import post_save初期化時にはsuperuser作成のときにcrashするので、最後の行をコメントアウト
from django.contrib.sites.models import Site
from django.core.mail import send_mail
from django.contrib.auth.tokens import default_token_generator
from django.template import Context, loader
from django.utils.http import int_to_base36
def sendEmailToNewUser(sender, **kwargs):
if kwargs['created']:
domain_override=None
email_template_name='registration/add_member_email.html'
use_https=False
token_generator=default_token_generator
'''
Generates a one-use only link for resetting password and sends to the user
from django.contrib.auth.forms.PasswordResetForm.save
'''
if not domain_override:
current_site = Site.objects.get_current()
site_name = current_site.name
domain = current_site.domain
else:
site_name = domain = domain_override
user = User.objects.get(id=kwargs['instance']._get_pk_val())
t = loader.get_template(email_template_name)
c = {
'email': user.email,
'domain': domain,
'site_name': site_name,
'uid': int_to_base36(user.id),
'user': user,
'token': token_generator.make_token(user),
'protocol': use_https and 'https' or 'http',
}
send_mail(_("Set your account on %s as new user") % site_name,
t.render(Context(c)), None, [user.email])
post_save.connect(sendEmailToNewUser, sender=User)
2010年10月8日金曜日
Epydocって素敵
2010年10月1日金曜日
登録:
投稿 (Atom)

