def post(self): quest = Quest(name=self.request.get('name'), description=self.request.get('description'), xp=int(self.request.get('xp')), deadline=self.request.get('deadline'), progress=int(self.request.get('progress')), projectKey=ndb.Key(Project, int(self.request.get('projectId')))) quest.put() quest = quest.to_dct() self.response.write(quest['id'])
def get_missing_day_entrance(self): from datetime import date, timedelta today = date.today() latest_day = Quest.select().order_by(Quest.date.desc()).limit(1).get().date missing_dates = map(lambda d: d.strftime("%Y_%m_%d"), [latest_day + timedelta(i) for i in xrange(0, (today - latest_day).days)]) print "missing_dates from %s to %s"%(latest_day, today) self.br.open(ROOT_URL) print missing_dates while missing_dates: for link in self.br.links(url_regex=r'^/zhucekuaijishi/mryl\S+.shtml$'): results = re.findall(ur"\w{2}(\d{4})(\d{2})(\d{2})",link.url) #results = re.findall(ur'^(\d{4}).+((\d+).(\d+))$', link.text.decode("gb2312")) if results: year, month, day = results[0] this_day = date(int(year), int(month), int(day)) print this_day if this_day.strftime("%Y_%m_%d") in missing_dates: print "got missing day %s"%this_day quests = self.get_day_quests(link.absolute_url) for l in quests: self.get_quest_content(l, this_day) missing_dates.remove(this_day.strftime("%Y_%m_%d")) # not found move to next page self._follow_next(self.br)
def setup_game(num_players, custom_roles): if num_players < 1 or num_players > 10: return None, None if num_players == 1: # Test scenario quests = [Quest(1) for n in range(5)] elif num_players == 2: # Test scenario quests = [Quest(2) for n in range(5)] elif num_players == 3: # Test scenario quests = [Quest(2) for n in range(5)] elif num_players == 4: # Test scenario quests = [Quest(2) for n in range(5)] else: adventurers = ( [2, 3, 2, 3, 3] if num_players == 5 else [2, 3, 4, 3, 4] if num_players == 6 else [2, 3, 3, 4, 4] if num_players == 7 else [3, 4, 4, 5, 5]) quests = [Quest(n) for n in adventurers] if num_players >= 7: quests[3].required_fails = 2 if len(custom_roles) > 0: if num_players == 4: # Test scenario good_count = 2 evil_count = 2 if num_players == 5: good_count = 3 evil_count = 2 elif num_players == 6: good_count = 4 evil_count = 2 elif num_players == 7: good_count = 4 evil_count = 3 elif num_players == 8: good_count = 5 evil_count = 3 elif num_players == 9: good_count = 6 evil_count = 3 elif num_players == 10: good_count = 6 evil_count = 4 else: # Test scenario good_count = num_players - 1 evil_count = 1 good_roles = [role for role in custom_roles if role.is_good][:good_count] while len(good_roles) < good_count: good_roles.append(SERVANT) evil_roles = [role for role in custom_roles if role.is_evil][:evil_count] while len(evil_roles) < evil_count: evil_roles.append(MINION) roles = good_roles + evil_roles else: if num_players == 1: # Test scenario roles = [ASSASSIN] elif num_players == 2: # Test scenario roles = [ASSASSIN, MERLIN] elif num_players == 3: # Test scenario roles = [ASSASSIN] + [SERVANT, MERLIN] elif num_players == 4: # Test scenario roles = [MINION, ASSASSIN] + [SERVANT, MERLIN] if num_players == 5: roles = [SERVANT, MERLIN, PERCIVAL, ASSASSIN, MORGANA] elif num_players == 6: roles = 2 * [SERVANT] + [MERLIN, PERCIVAL, ASSASSIN, MORGANA] elif num_players == 7: roles = 2 * [SERVANT] + [ MERLIN, PERCIVAL, ASSASSIN, MORGANA, MORDRED ] elif num_players == 8: roles = 3 * [SERVANT] + [ MERLIN, PERCIVAL, ASSASSIN, MORGANA, MORDRED ] elif num_players == 9: roles = 4 * [SERVANT] + [ MERLIN, PERCIVAL, ASSASSIN, MORGANA, MORDRED ] elif num_players == 10: roles = 4 * [SERVANT] + [ MERLIN, PERCIVAL, ASSASSIN, MORGANA, MORDRED, OBERON ] return quests, roles
def get_quest_content(self, link, date): info = self._get_quest_content(link, date) try: Quest.get(uid=info['uid']) except Quest.DoesNotExist: Quest.create(**info)
def get(self): quests = Quest.query().fetch() quests = [p.to_dct() for p in quests] self.response.write(json.dumps(quests))
def get(self): ndb.delete_multi( Project.query().fetch(keys_only=True) ) ndb.delete_multi( Quest.query().fetch(keys_only=True) ) ndb.delete_multi( Task.query().fetch(keys_only=True) ) project = Project(name="project 01", progress=0, description="descricao", xp=100) project.put() quest = Quest(name="quest 01", description="description", xp=30, deadline="2013-11-21", progress=0, projectKey=project.key) quest.put() task = Task(name="task 01", done="false", xp=15, progress=50, questKey=quest.key) task.put() task = Task(name="task 02", done="false", xp=15, progress=50, questKey=quest.key) task.put() quest = Quest(name="quest 02", description="description", xp=30, deadline="2013-12-10", progress=0, projectKey=project.key) quest.put() task = Task(name="task 01", done="false", xp=15, progress=50, questKey=quest.key) task.put() task = Task(name="task 02", done="false", xp=15, progress=50, questKey=quest.key) task.put() quest = Quest(name="quest 03", description="description", xp=30, deadline="2014-01-10", progress=0, projectKey=project.key) quest.put() task = Task(name="task 01", done="false", xp=15, progress=50, questKey=quest.key) task.put() task = Task(name="task 02", done="false", xp=15, progress=50, questKey=quest.key) task.put() self.response.write("ok")
from model import mysql_db, Quest import datetime u = Updater() with open("save_point", "rw") as f: save_point = f.read() if save_point: day, index = save_point.split() start_day = datetime.datetime.strptime( day, "%Y-%m-%d") index = int(index) else: start_day = datetime.datetime.today() index = 0 for question in Parser(start_day).get_each_question(start_index=index): Quest.create(**question[0]) with open("save_point", "w") as f: f.write("%s %s"%(start_day.strftime("%Y-%m-%d"), question[-1])) start_day -= datetime.timedelta(days=1) while True: print "start parse %s"%start_day for question in Parser(start_day).get_each_question(): Quest.create(**question[0]) with open("save_point", "w") as f: f.write("%s %s"%(start_day.strftime("%Y-%m-%d"), question[-1])) start_day -= datetime.timedelta(days=1) if save_point_file.exist(): start_day = datetime.str