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'])
示例#2
0
 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)
示例#3
0
文件: avalon.py 项目: aj-r/avalon
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
示例#4
0
 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")
示例#7
0
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