データの有効期限をdatetime使ってチェックする
よくある、サービスに登録すると登録確認用URLが記載されたメールが送信されて、そのURLへアクセスすると登録完了となるようなもの。で、有効期限を定める部分と有効期間内かどうかをチェックする部分。
from google.appengine.ext import db import datetime class SaveData(db.Model): time_limit = db.DateTimeProperty() auth_element = db.StringProperty() def set_data(self, time_limit, auth_element): if not isinstance(time_limit, datetime.datetime) : return False if not isnstance(auth_element, unicode) : return False self.time_limit = time_limit self.auth_element = auth_element try: self.put() return self.key() except: return False def get_data(self, key): if not isinstance(key, unicode) : return False try: return self.get(key) except: return False class Action : TIME_LIMIT_HOUR = 24 # 有効期限24時間 # 確認URL取得 def get_confirm_url(self): key = self._get_confirm_key() return = self._confirm_url() % key def _confirm_url(self): return 'http://hogehage.com/?key=%s' def _get_confirm_key(self): time_limit = self._create_time_limit(self.TIME_LIMIT_HOUR) auth_element = self._create_auth_element() sd = SaveData() confirm_key = sd.set_data(time_limit, auth_element) return str(confirm_key) def _create_time_limit(self, hour): second_span = 60 * hour # 有効期間(秒) return datetime.datetime.now() + datetime.timedelta(0, second_span) def _create_auth_element(self): # 必要な情報をごにょごにょ return u'' # 有効かの確認 def is_effective(self, requested_key): confirm_data = self._confirm_data(requested_key) if not confirm_data : return False if not self._is_effective_timespan(confirm_data.time_limit) : return False return True def _get_confirm_data(self, requested_key) : sd = SaveData() return sd.get_data() def _is_effective_timespan(self, time_limit) : now = datetime.datetime.now() time_diff = now - time_limit if time_diff > datetime.timedelta(0) : return False else : return True
メモレベル。色々肉付けしなきゃー
ネーミングセンスってどうやって鍛えればいいのかな。