コード例 #1
0
ファイル: wiki.py プロジェクト: DeadWisdom/Bloodhunt
def put(slug, value, update=True):
    slug = to_slug(slug)
    if ':' in slug:
        left, _, right = slug.partition(':')
        if left == 'type':
            return put_type(right, value)
    elif slug == 'type':
        raise RuntimeError("Unnable to alter 'type'.  That's hard coded.")
    
    type = get_type(value['type']) or get_default_type()
    try:
        value = fields.process(type['fields'], value)
    except TypeError:
        raise FormError(type['fields'])
    
    value['type'] = type['slug'].split(':', 1)[1]
    value['slug'] = slug
    if update:
        value['updated'] = datetime.now().strftime("%Y-%m-%dT%H:%M:%S")
    relations = set()
    for k, content in value.items():
        if isinstance(content, basestring):
            relations.update(get_relations_from_text(content))
    set_relations(slug, relations)
    redis.set('n:' + slug, json.dumps(value))
    search.index_node(value)
    return value
コード例 #2
0
ファイル: DarkSpy.py プロジェクト: genji9071/dark_buddy
 def join_in(self, request_json):
     game_session_data = self.get_game_session_data(request_json)
     if game_session_data.game_status == GameStatusEnum.END:
         chatbots.get(request_json['chatbotUserId']).send_text("游戏已经结束...")
         return
     if game_session_data.game_status == GameStatusEnum.GAMING:
         chatbots.get(request_json['chatbotUserId']).send_text("游戏已经开始...")
         return
     gamer = list(
         filter(lambda x: x.sender_id == request_json['senderId'],
                game_session_data.get_gamers()))
     if gamer:
         chatbots.get(request_json['chatbotUserId']).send_text("你已经参加了...")
         return
     new_gamer = Gamers()
     new_gamer.name = request_json['senderNick']
     new_gamer.sender_id = request_json['senderId']
     game_session_data.gamers.append(new_gamer)
     game_session_data_str = json.dumps(game_session_data,
                                        cls=DarkSpyGameSessionDataEncoder,
                                        indent=4)
     redis.set(name=self.get_dark_spy_session_name(
         request_json['chatbotUserId']),
               value=game_session_data_str)
     self.render_game(game_session_data, request_json)
     return
コード例 #3
0
ファイル: DarkSpy.py プロジェクト: genji9071/dark_buddy
 def start_dark_spy(self, request_json):
     game_session_data = self.get_game_session_data(request_json)
     if game_session_data.game_status == GameStatusEnum.END:
         game_session_data = DarkSpyGameSessionData()
         game_session_data_str = json.dumps(
             game_session_data, cls=DarkSpyGameSessionDataEncoder, indent=4)
         redis.set(name=self.get_dark_spy_session_name(
             request_json['chatbotUserId']),
                   value=game_session_data_str)
     self.render_game(game_session_data, request_json)
コード例 #4
0
def update_module_list():
    root = root_from_url(get_tt_url() + 'finder.xml')
    modules = root.findall(".//resource[@type='module']")
    module_list = []
    for module in modules:
      module_name = module.find('name').text
      if re.match("^M[12345][^0-9]", module_name):
        module_name_split = module_name.split(" - ")
        module_list.append(dict(code=module_name_split[0],
                                name=module_name_split[1],
                                id='m' + module.get('id')))
    redis.set('module_list', json.dumps(module_list))
コード例 #5
0
ファイル: DarkMaze.py プロジェクト: genji9071/dark_buddy
 def display_maze(self, data, message):
     redis.set(name=get_dark_maze_session_name(self.chatbot_user_id),
               value=str(data))
     title = "暗黑迷宫"
     img_url = 'http://{2}/dark_buddy/dark_maze/image/get?session_id={0}&uuid={1}'.format(
         self.chatbot_user_id, uuid.uuid1(), config.public_ip)
     text = '![screenshot]({0})\n# {1}'.format(img_url, message)
     action_card = ActionCard(title=title,
                              text=text,
                              btns=[],
                              img_url=img_url)
     chatbots.get(self.chatbot_user_id).send_action_card(action_card)
     return
コード例 #6
0
ファイル: wiki.py プロジェクト: DeadWisdom/Bloodhunt
def put_type(slug, value):
    supertype = get_type_type()
    try:
        value = fields.process(supertype['fields'], value)
    except TypeError:
        raise FormError(supertype['fields'])
    value['slug'] = 'type:' + slug
    value['type'] = 'type'
    value['updated'] = datetime.now().strftime("%Y-%m-%dT%H:%M:%S")
    redis.sadd("types", slug)
    redis.set('n:type:' + slug, json.dumps(value))
    set_type_template(slug, 'details', value.get('details'))
    set_type_template(slug, 'summary', value.get('summary'))
    return value
コード例 #7
0
def update_events_by_id(module_id):
  root = root_from_url(get_tt_url() + module_id + '.xml')
  title_split = root.find(".//subheading").text.split(" - ")
  module_code = title_split[1]
  module_name = title_split[2]
  events = root.findall(".//event")
  event_list = []
  for event in events:
    event_list.append(dict(name=module_name,
                           code=module_code,
                           type=event.find('category').text,
                           starttime=event.find('starttime').text,
                           endtime=event.find('endtime').text,
                           week=event.get('date'),
                           day=event.find('day').text,
                           room=get_room(event)))
  redis.set(module_id, json.dumps(event_list))
コード例 #8
0
ファイル: DarkSpy.py プロジェクト: genji9071/dark_buddy
 def start_game(self, request_json):
     game_session_data = self.get_game_session_data(request_json)
     if game_session_data.game_status == GameStatusEnum.END:
         chatbots.get(request_json['chatbotUserId']).send_text("游戏已经结束...")
         return
     gamers = game_session_data.get_gamers()
     if len(gamers) < 4:
         chatbots.get(request_json['chatbotUserId']).send_text("人太少了...")
         return
     game_session_data = self.build_game(game_session_data)
     game_session_data_str = json.dumps(game_session_data,
                                        cls=DarkSpyGameSessionDataEncoder,
                                        indent=4)
     redis.set(name=self.get_dark_spy_session_name(
         request_json['chatbotUserId']),
               value=game_session_data_str)
     self.render_game(game_session_data, request_json)
     return
コード例 #9
0
def update_term():
    current_term = json.dumps(get_current_term())
    redis.set('current_term', current_term)
コード例 #10
0
ファイル: manage.py プロジェクト: DeadWisdom/Bloodhunt
            first = False
        o.write("\n]")
    
    print "Dumped data to %s" % path

elif command == "loaddata":
    try:
        path = sys.argv[2]
    except:
        usage()
    
    with open(path) as o:
        data = json.load(o)
    
    for node in data:
        redis.set( 'n:' + node['slug'], json.dumps(node))
    
    print "Loadded data from %s" % path

elif command == 'fixdb':
    import wiki, search
    types = wiki.get_types()
    for k, v in types.items():
        if k == 'type':
            continue
        try:
            wiki.put_type(k, v)
        except wiki.FormError, e:
            print e.field
    search.rebuild_index()
    wiki.rebuild_nodes()
コード例 #11
0
ファイル: DarkSpy.py プロジェクト: genji9071/dark_buddy
    def vote_player(self, player_info, request_json):
        # 暂定用名字
        game_session_data = self.get_game_session_data(request_json)
        if game_session_data.game_status == GameStatusEnum.END:
            chatbots.get(request_json['chatbotUserId']).send_text("游戏已经结束...")
            return
        if game_session_data.game_status == GameStatusEnum.PREPARE:
            chatbots.get(request_json['chatbotUserId']).send_text("游戏还未开始...")
            return
        result = game_session_data.result
        operator_player_list = list(
            filter(lambda x: x.name == request_json["senderNick"],
                   game_session_data.get_gamers()))
        if not operator_player_list or operator_player_list[0].status == 1:
            chatbots.get(request_json['chatbotUserId']).send_text(
                "{0}!你别闹!...".format(request_json["senderNick"]))
            return
        if operator_player_list[0].voted == 1:
            chatbots.get(request_json['chatbotUserId']).send_text(
                "{0}!你都投过了!...".format(request_json["senderNick"]))
            return

        # 先处理票数
        if player_info == "弃票":
            voted_player_name = player_info
        else:
            voted_player_list = list(
                filter(lambda x: x.name == player_info,
                       game_session_data.get_gamers()))
            if not voted_player_list:
                chatbots.get(request_json['chatbotUserId']).send_text(
                    "{0}!你投你🐎呢!...".format(request_json["senderNick"]))
                return
            voted_player = voted_player_list[0]
            voted_player_name = voted_player.name
        if not game_session_data.vote_info.get(voted_player_name):
            game_session_data.vote_info[voted_player_name] = 1
        else:
            game_session_data.vote_info[voted_player_name] += 1
        operator_player_list[0].voted = 1
        game_session_data.vote_info["count"] -= 1
        if game_session_data.vote_info["count"] == 0:
            game_session_data.vote_info.pop("count")
            vote_list = sorted(game_session_data.vote_info.items(),
                               key=lambda x: x[1],
                               reverse=True)
            if len(vote_list) > 1 and vote_list[0][1] == vote_list[1][1]:
                chatbots.get(request_json['chatbotUserId']).send_text(
                    "{0} 和 {1} 你们平票了,再battle一波吧!".format(
                        vote_list[0][0], vote_list[1][0]))
                game_session_data.vote_info = {}
                sum = 0
                for count in result.items():
                    sum = sum + count[1]
                game_session_data.vote_info["count"] = sum
            elif len(vote_list) == 0:
                chatbots.get(
                    request_json['chatbotUserId']).send_text("都弃票了?!再来一轮!")
                game_session_data.vote_info = {}
                sum = 0
                for count in result.items():
                    sum = sum + count[1]
                game_session_data.vote_info["count"] = sum
            else:
                voted_player = list(
                    filter(lambda x: x.name == vote_list[0][0],
                           game_session_data.get_gamers()))[0]
                chatbots.get(request_json['chatbotUserId']).send_text(
                    "{0}出局!!".format(voted_player.name))
                voted_player.status = 1
                result[voted_player.role] = result.get(voted_player.role) - 1
                game_winner = self.check_result(result)
                if game_winner:
                    winner_players = list(
                        filter(lambda x: x.role == game_winner,
                               game_session_data.get_gamers()))
                    winner_players_name = list(
                        map(lambda x: x.name, winner_players))
                    chatbots.get(request_json['chatbotUserId']).send_text(
                        "{0}获胜!获胜者:{1}".format(game_winner,
                                               str(winner_players_name)))
                    game_session_data.game_status = GameStatusEnum.END
                game_session_data.vote_info = {}
                sum = 0
                for count in result.items():
                    sum = sum + count[1]
                game_session_data.vote_info["count"] = sum
                for gamer in game_session_data.get_gamers():
                    gamer.voted = 0
        game_session_data_str = json.dumps(game_session_data,
                                           cls=DarkSpyGameSessionDataEncoder,
                                           indent=4)
        redis.set(name=self.get_dark_spy_session_name(
            request_json['chatbotUserId']),
                  value=game_session_data_str)
        self.render_game(game_session_data, request_json)
        pass