Skip to content

Instantly share code, notes, and snippets.

@KunihikoKido
KunihikoKido / admin.py
Created August 1, 2013 06:34
Django Admin 画面でオブジェクト作成者毎のアクセス制限を実現するためのコード。 実際に使用する時には、それぞれのClassを継承して、Model、ModelAdmin を実装する。
# -*- coding: utf-8 -*-
from django.contrib import admin
from django.http import HttpResponse
class OwnerPermissionAdmin(admin.ModelAdmin):
def queryset(self, request):
qs = super(OwnerPermissionAdmin, self).queryset(request)
if request.user.is_superuser:
return qs
@KunihikoKido
KunihikoKido / sitecustomize.py
Created August 1, 2013 07:52
site-package/sitecustomize.py に配置
import sys
sys.setdefaultencoding('utf-8')
@KunihikoKido
KunihikoKido / handlebool.py
Last active December 20, 2015 12:09
Handle Bool!
def handle_bool(value):
if value in [True, 'true', 'True', 'TRUE', 1]:
return True
return False
@KunihikoKido
KunihikoKido / tasks.py
Created August 1, 2013 07:59
Celery Single Task キャッシュサーバーへロックID保存して制御します。
# -*- coding: utf-8 -*-
import hashlib
from celery.task import Task
from django.core.cache import cache
class SingleTask(Task):
"""
class AddTask(SingleTask):
def run_main(self, x, y):
@KunihikoKido
KunihikoKido / publicip.py
Created August 1, 2013 08:03
バブリックIP取得
# -*- coding: utf-8 -*-
import urllib2
def get_public_ipv4(ec2instance=False):
url = 'http://ip.42.pl/raw'
if ec2instance:
url = 'http://169.254.169.254/latest/meta-data/public-ipv4'
return '%s' % urllib2.urlopen(url).read()
@KunihikoKido
KunihikoKido / settings.py
Last active December 20, 2015 12:09
Django キャッシュサーバーの hash化 キー 生成
# -*- coding: utf-8 -*-
import hashlib
def make_hash_key(key, key_prefix, version):
"""
cache.set('key', 'value') デフォルトの make_key では、keyの値がそのまま使用されるため、
場合によっては、オーバーフローを引き起こす。hash化して、固定長にするための関数です。
CACHES の KEY_FUNCTION にこの関数を設定して使用します。
"""
@KunihikoKido
KunihikoKido / objectcache.py
Created August 1, 2013 08:10
Django キャッシュサーバーへ、Python オブジェクトをキャッシュ
# -*- coding: utf-8 -*-
import hashlib
try:
import cPickle as pickle
except ImportError:
import pickle
class PythonObjectCache(object):
@classmethod
@KunihikoKido
KunihikoKido / enumerate.py
Created August 1, 2013 13:44
python for enumerate example
for i, v in enumerate(['a', 'b', 'c']):
print i, v
@KunihikoKido
KunihikoKido / settings.py
Created August 2, 2013 02:44
django settings.py の主な変更箇所
# -*- coding: utf-8 -*-
from os.path import abspath, dirname, join
PROJECT_PATH = abspath(dirname(__file__))
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
'NAME': join(PROJECT_PATH, 'django.db'), # Or path to database file if using sqlite3.
# The following settings are not used with sqlite3:
'USER': '',
@KunihikoKido
KunihikoKido / dictsort.py
Created August 2, 2013 02:55
Python 辞書型のソート
def dictsorted(dic, valuesort=False):
if valuesort:
return [(k, v) for k, v in sorted(d.items(), key=lambda x:x[1])]
return [(k, v) for k, v in sorted(d.items())]
if __name__ == '__main__':
d = {'A':500, 'C':300, 'D':100, 'E':400, 'B':200}
print dictsorted(d, False)
print dictsorted(d, True)