def _delete_all():
    users.delete_all(WID)

    w = worlds.get(WID)
    if w is not None:
        worlds.delete(w)
        #areas.delete_all(WID)
        #countries.delete_all(WID)

    h = histories.get(WID)
    if h is not None:
        histories.delete(h)
Beispiel #2
0
    def finish(self):
        world = worlds.get(self.WID)

        if world:
            l_users = users.list_all(world.wid)

            for user in l_users:
                users.set_world(user.uid, None, None)

            worlds.delete(world)

        history = histories.get(self.WID)

        if history:
            histories.delete(history)

        return ApiResponse({'result': 'OK'})
Beispiel #3
0
    def purge(self):
        # exclude our dear admin
        user = getUser()
        obo = users.find_user(username='******')

        if obo.uid != user.uid:
            return 'No rights'

        users.set_world(obo.uid, None, None)

        # delete all test users
        lworlds = worlds.list_all()

        for world in lworlds:
            worlds.delete(world)

        # delete all entities
        users.delete_all_test()
        histories.delete_all()

        return 'Purged everything :)'
Beispiel #4
0
    def run(self):
        to_delete_worlds = worlds.list_finished()

        for i, world in enumerate(to_delete_worlds):
            # count statistics for world's match history
            endgame.populate_match_history(world)

            # then delete world (and cascades countries, areas)
            worlds.delete(world, commit=False)

            # clear chat
            chat_service.clear(world.wid, 'global')
            # todo: clear DM chats

            if i % 20 == 0:
                # make sure to save changes every once in a while
                worlds.session.commit()

                # rest for 80ms
                sleep(0.08)

        worlds.session.commit()
Beispiel #5
0
    def leave(self, user):
        world = worlds.get(user.wid)

        self.server.send_to_world(world.wid, {
            "route": "Worlds:left",
            "iso": user.iso,
        })

        self.server.client_leave_world(user.client)

        if settings.get('client.leave_world_on_disconnect'):
            user.wid = None
            user.iso = None
            users.set_world(user.uid, None, None)

        # delete match if it hasn't started yet
        if world.rounds == 0:
            clients = self.server.onlineMatches[str(world.wid)]
            if len(clients) == 0:
                print("DELETING MATCH", world.wid)
                worlds.delete(world)

        return {}
Beispiel #6
0
    def start(self):
        if not request.args['uids']:
            return ApiResponse({'result': False, 'no': -1})

        uids = request.args['uids'].split(',')
        world = worlds.get(self.WID)
        l_users = users.list(uids)

        # delete world
        if world is not None:
            worlds.delete(world)

            h = histories.get(self.WID)
            if h is not None:
                histories.delete(h)

        # create world
        world = World(wid=self.WID,
                      name="Playtest world",
                      map=self.MAP,
                      max_rounds=None)

        isos = load_isos('game/maps/{}.gtml'.format(world.map))
        if len(isos) < len(l_users):
            return ApiResponse({'result': False, 'no': len(isos)})

        # force-enter users:
        for user, iso in zip(l_users, isos):
            user.wid = world.wid
            user.iso = iso

        # Save everything and start the game
        worlds.save(world)
        start_world(world, AI=True)
        users.save_all(l_users)

        return ApiResponse({'result': 'OK'})