示例#1
0
 def auction_bid(auction, user):
     '''
     Performs a single bid on the given auction on behalf of the specified user.
     '''
     # Perform Bid:
     UserController.use_bids(user, 1)
     AuctionController.bids(auction, user)
示例#2
0
 def decorated(*args, **kwargs):
     token = request.headers.get('Authorization', None)
     if not token:
         raise ValidationError(message='error',
                               status_code=401,
                               payload={'message': 'No auth token'})
     try:
         data = jwt.decode(token,
                           current_app.config['SECRET_KEY'],
                           algorithms=['HS256'])
         controller = UserController()
         user = controller.find_one(email=data.get('email'))
         if not user:
             raise ValidationError(message='error',
                                   status_code=401,
                                   payload={'message': 'Invalid token'})
         request.user = user
     except Exception as error:
         raise ValidationError(
             message=str(error),
             status_code=401,
             payload={
                 'message': 'AN error occurred when checking credential'
             })
     return f(*args, **kwargs)
示例#3
0
def users(query=None,
          tag=None,
          flags=None,
          page=1,
          next_page_url=None,
          prev_page_url=None,
          scroll=False,
          selected=None):
    current_user = UserController().current_user

    template = TEMPLATE_USERS

    users, relationship_types = UserController().get_users(query=query,
                                                           tag=tag,
                                                           page=page)

    chips = {
        'tags':
        _parse_chip([{
            'chip_name': k,
            'selected': k in tag if tag else False
        } for k in relationship_types],
                    key='t',
                    mode=Tag.EXCLUSIVE,
                    display_name='Type')
    }

    vargs = {'users': users, 'selected': selected, 'chips': chips}

    if request.is_xhr:
        return render_template(template, vargs=vargs, **vargs)
    return render_template(TEMPLATE_MAIN,
                           template=template,
                           vargs=vargs,
                           **vargs)
示例#4
0
 def decorated(*args, **kwargs):
     token = request.headers.get("Authorization", None)
     if not token:
         raise ValidationError(
             message="error",
             status_code=401,
             payload={"message": "No auth token"},
         )
     try:
         data = jwt.decode(token,
                           current_app.config["SECRET_KEY"],
                           algorithms=["HS256"])
         controller = UserController()
         user = controller.find_one(email=data.get("email"))
         if not user:
             raise ValidationError(
                 message="error",
                 status_code=401,
                 payload={"message": "Invalid token"},
             )
         request.user = user
     except Exception as error:
         raise ValidationError(
             message=str(error),
             status_code=401,
             payload={
                 "message": "AN error occurred when checking credential"
             },
         )
     return f(*args, **kwargs)
示例#5
0
 def handle(self, message: Message):
     user_id = message.chat.id
     UserController.set_state(message.chat.id,
                              UserStateMachine.meeting_date)
     self.bot.send_message(
         user_id, "Укажите дату для встречи.\n\n"
         "Например, 10:00 22.05.2021")
示例#6
0
def main():
    db_connection = sqlite3.connect("blog_db.sqlite3")
    sample_text = """Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras vehicula malesuada turpis, id tempus ligula eleifend vel. Vivamus ante ligula, tincidunt at egestas bibendum, fringilla non lorem. Fusce venenatis urna quis nibh ullamcorper sed consequat arcu blandit. In hac habitasse platea dictumst. Nullam nibh leo, eleifend eget cursus eget, sagittis vel mi. Sed consectetur massa et nulla iaculis pretium. Nullam fringilla euismod quam, ac aliquet erat pharetra non. Fusce commodo sagittis nisi interdum molestie. Fusce odio tortor, dapibus non dictum vitae, bibendum nec nulla."""
    post_title = "Test Post"
    post_controller = PostController(db_connection)
    user_controller = UserController(db_connection)
    post_author = user_controller.get_user("Test2")
    test_post = Post(post_title, str(datetime.now()), post_author, post_text=sample_text)
    saved_post = post_controller.add_post(test_post)
    print "Saved Post ID: %d" % saved_post.get_id()
    def handle(self, message: Message):
        bio = message.text
        user_id = message.chat.id
        UserController.fill_bio(user_id, bio)
        UserController.set_state(user_id, UserStateMachine.main_menu)

        self.bot.send_message(user_id, "Вы успешно зарегистрированы")

        self.bot.send_message(user_id,
                              "Главное меню:",
                              reply_markup=MainKeyboard.build())
示例#8
0
 def post(self):
     request_data = api.payload
     api.schema_model('User', {**user_login_schema}).validate(request_data)
     controller = UserController()
     user = controller.find_one(email=request_data.get('email'))
     if user and check_password_hash(user.password,
                                     request_data['password']):
         token = generate_token(user)
         return {'token': token, **user._asdict()}, 200
     raise ValidationError(message='error',
                           status_code=401,
                           payload={'message': 'Invalid credentials'})
示例#9
0
 def close_auction(auction):
     auction.auction_end = datetime.datetime.now()
     auction.active = False
     auction.put()
     for autobidder in auction.autobidders:
         owner = User.get_by_id(autobidder.user_id)
         UserController.add_bids(owner, autobidder.remaining_bids)
         owner.put()
         autobidder.remaining_bids = 0
         autobidder.put()
         db.session.delete(autobidder)
         db.session.commit()
示例#10
0
 def post(self):
     user = api.payload
     api.schema_model('User', {**user_schema}).validate(user)
     user['password'] = generate_password_hash(user['password'],
                                               method='sha256')
     controller = UserController()
     if not controller.find_one(email=user.get('email')):
         user = controller.insert(user)
         return user, 201
     raise ValidationError(
         message='error',
         status_code=400,
         payload={'message': 'User with email already exists'})
示例#11
0
 def post(self):
     request_data = api.payload
     api.schema_model("User", {**user_login_schema}).validate(request_data)
     controller = UserController()
     user = controller.find_one(email=request_data.get("email"))
     if user and check_password_hash(user.password,
                                     request_data["password"]):
         token = generate_token(user)
         return {"token": token, **user._asdict()}, 200
     raise ValidationError(
         message="error",
         status_code=401,
         payload={"message": "Invalid credentials"},
     )
示例#12
0
 def post(self):
     user = api.payload
     api.schema_model("User", {**user_schema}).validate(user)
     user["password"] = generate_password_hash(user["password"],
                                               method="sha256")
     controller = UserController()
     if not controller.find_one(email=user.get("email")):
         user = controller.insert(user)
         return user, 201
     raise ValidationError(
         message="error",
         status_code=400,
         payload={"message": "User with email already exists"},
     )
示例#13
0
def update_ticket(ticket_id):
    """Update a specific ticket."""
    ticket_data = request.get_json()
    user_by_id = None
    response = None

    # get ticket by id
    ticket_by_id = TicketController.get_ticket_by_id(ticket_id)

    # check if there is assignee key provided in request
    if "ticket_assignee" in ticket_data:
        user_by_id = UserController.get_users_by_id(
            ticket_data["ticket_assignee"])
        if user_by_id is None:
            return (error_response(404, "Resource Not Found")
                    )  # return not found response if wrong user provided

    # check if ticket was found and update accordingly
    if ticket_by_id:
        TicketController.update_ticket(ticket_by_id, ticket_data, user_by_id)
        response = success_response_body(ticket_data)
    else:
        # return no user error
        response = error_response(404, "Resource Not Found")
    return response
示例#14
0
    def handle(self, message: Message):
        user_id = message.chat.id
        info = UserController.get_info(user_id)

        self.bot.send_message(user_id,
                              info,
                              reply_markup=MainKeyboard.build())
示例#15
0
    def update_event(self, event_id, interest_key):
        user_id = UserController().current_user_id
        if user_id:
            user_event = UserEvent.query.filter(
                and_(UserEvent.user_id == user_id,
                     UserEvent.event_id == event_id)).first()

            if user_event:
                if interest_key == UserEvent.DONE:
                    if user_event.interest_key == interest_key:
                        user_event.interest = user_event.interest - 2
                    else:
                        user_event.interest = user_event.interest + 2
                elif user_event.interest_key == interest_key:
                    user_event.interest = None
                else:
                    user_event.interest = UserEvent.interest_level(
                        interest_key)
                db_session.merge(user_event)
            else:
                user_event = UserEvent(
                    user_id=user_id,
                    event_id=event_id,
                    interest=UserEvent.interest_level(interest_key))
                db_session.add(user_event)
            db_session.commit()

            return self.get_event(event_id)
        return None
示例#16
0
def register():
    request_data = request.get_data()
    try:
        user_data = json.loads(request_data)
        user_fname = user_data['first_name']
        user_lname = user_data['last_name']
        user_name = user_data['username']
        user_email = user_data['email']
        user_pass = user_data['password']
        if len(user_name) < 3 or len(user_name) > 50:
            raise error.LenUserError
        if len(user_email) < 3 or len(user_email) > 255:
            raise error.LenEmailError
        if len(user_pass) < 5 or len(user_pass) > 10 or ' ' in user_pass:
            raise error.LenPassError
        exist_user_email = User.query.filter_by(email=user_email).first()
        if exist_user_email:
            raise error.ExistError2
    except error.LenUserError:
        return json.dumps({'Message': 'Invalid name'}), 400
    except error.LenEmailError:
        return json.dumps({'Message': 'Invalid email'}), 400
    except error.LenPassError:
        return json.dumps({'Message': 'Invalid password'}), 400
    except error.ExistError2:
        return json.dumps({'Message': 'Email existed'}), 400
    user_pass = User.set_password(user_pass)
    user = UserController.create(user_fname, user_lname, user_name, user_email,
                                 user_pass)
示例#17
0
def auth_callback():
    if 'state' not in session:
        return redirect('/')

    state = session['state']

    flow = get_oauth2_config(state=state)
    flow.redirect_uri = get_oauth2_callback()

    authorization_response = flask.request.url
    flow.fetch_token(authorization_response=authorization_response)

    credentials = flow.credentials
    session['credentials'] = {
        'token': credentials.token,
        'refresh_token': credentials.refresh_token,
        'token_uri': credentials.token_uri,
        'client_id': credentials.client_id,
        'client_secret': credentials.client_secret,
        'scopes': credentials.scopes
    }

    if 'state' in session:
        del session['state']

    UserController()._request_user_info()
    ref_parsed = urlparse(request.referrer)
    app_parsed = urlparse(url_for('events'))

    redirect_url = '/'
    if (ref_parsed.scheme == app_parsed.scheme
            and ref_parsed.netloc == app_parsed.netloc):
        redirect_url = request.referrer
    return redirect(redirect_url)
示例#18
0
    def get_event(self, event_id):
        event = Event.query.filter(Event.event_id == event_id).first()
        if not event: return None

        user = UserController().current_user
        if user:
            user_event = UserEvent.query.filter(
                and_(UserEvent.event_id == event.event_id,
                     UserEvent.user_id == user.user_id)).first()

            if user_event:
                event.current_user_event = user_event

            following_event_users = db_session.query(User).filter(
                and_(UserEvent.event_id == event.event_id,
                     UserEvent.user_id == User.user_id,
                     Follow.user_id == user.user_id,
                     Follow.follow_id == User.user_id,
                     User.user_id != user.user_id, Follow.active == True))
            event.card_event_users = [{
                "user_id": u.user_id,
                "username": u.username,
                "image_url": u.image_url
            } for u in following_event_users]

        user_event_count = UserEvent.query.filter(
            and_(UserEvent.event_id == event_id,
                 UserEvent.interest > UserEvent.interest_level(UserEvent.SKIP),
                 UserEvent.interest <= (max(UserEvent.DONE_LEVELS)))).count()

        event.card_user_count = user_event_count

        return event
 def handle(self, message: Message):
     user_id = message.chat.id
     UserController.set_state(user_id, UserStateMachine.find_meeting)
     candidate = UserController.find_meeting(user_id)
     MeetingController.delete_not_is_ready(initiator_id=user_id)
     if candidate is None:
         UserController.set_state(user_id, UserStateMachine.main_menu)
         self.bot.send_message(user_id,
                               "Кандидатов для встречи нет",
                               reply_markup=MainKeyboard.build())
     else:
         MeetingController.create_meeting(initiator_id=user_id,
                                          companion_id=candidate.id)
         self.bot.send_message(user_id,
                               f"{candidate.name}\n\n{candidate.bio}",
                               reply_markup=ViewingKeyboard.build())
示例#20
0
def update_user(user_id):
    """Update a user."""
    user_data = request.get_json()
    response = None

    # get user by id
    user_by_id = UserController.get_users_by_id(user_id)

    if user_by_id:
        UserController.update_user(user_by_id, user_data)
        response = success_response_body(user_data)
    else:
        # return no user error
        response = error_response(404, "Resource Not Found")

    return response
示例#21
0
    def register(cls):
        username, password = cls.take_username_and_password()

        try:
            return UserController.register(username, password)
        except InvalidUserInformation as e:
            cls.show_message(str(e))

        return None
示例#22
0
def user_update(identifier):
    current_user = UserController().current_user
    current_user_id = UserController().current_user_id

    action = request.form.get('action')
    active = request.form.get('active') == 'true'

    if action == 'block':
        u = UserController().block_user(identifier, active)
    elif action == 'follow':
        u = UserController().follow_user(identifier, active)

    if u:
        events = []
        if not Block.blocks(u.user_id, current_user_id):
            events = EventController().get_events_for_user_by_interested(
                user=u, interested=UserEvent.INTERESTED)

    return redirect(request.referrer or '/')
    def handle(self, message: Message):
        user_id = message.chat.id
        date = message.text
        UserController.set_state(message.chat.id, UserStateMachine.main_menu)

        meeting = MeetingController.set_time(user_id, date)

        self.bot.send_message(user_id,
                              "Запрос на проведение встречи отправлен")

        date = meeting.meeting_time.strftime("%H:%M %d.%m.%Y")
        self.bot.send_message(meeting.companion_id.id,
                              f"C Вами хотят встретиться.\n\nВремя: {date}\n\n"
                              f"{meeting.initiator_id.name}\n"
                              f"{meeting.initiator_id.bio}",
                              reply_markup=MeetingKeyboard.build(meeting))

        self.bot.send_message(user_id,
                              "Главное меню:",
                              reply_markup=MainKeyboard.build())
    def get_active_meeting(_id: int) -> str:
        query = ((Meeting.initiator_id == _id) | (Meeting.companion_id == _id)) \
                & ((Meeting.status == MeetingStatus.planned) | (Meeting.status == MeetingStatus.planned))
        meeting: Meeting = Meeting.get(query)
        if _id == meeting.initiator_id.id:
            companion: User = User.get(User.id == meeting.companion_id)
        else:
            companion: User = User.get(User.id == meeting.initiator_id)

        meeting_time = meeting.meeting_time.strftime("%H:%M %d.%m.%Y")

        return f"Время:\n{meeting_time}\n\n" + UserController.get_info(companion.id)
示例#25
0
    def get_events(self,
                   query=None,
                   categories=None,
                   tags=None,
                   cities=None,
                   flags=None,
                   page=1,
                   future_only=False):
        current_user = UserController().current_user
        selected_categories = set(categories.split(',') if categories else [])
        selected_tags = set(tags.split(',') if tags else [])

        events_with_counts = db_session.query(
            Event,
            func.count(func.distinct(
                UserEvent.user_id)).label('ct')).outerjoin(
                    UserEvent, UserEvent.event_id == Event.event_id).group_by(
                        Event.event_id).order_by(desc('ct'))

        if current_user:
            current_user_events_table = alias(current_user.user_events(),
                                              'current_user_events_table')
            events_with_counts = events_with_counts.filter(~Event.event_id.in_(
                db_session.query(
                    current_user_events_table.c.user_events_event_id)))

        results, categories, tags, event_cities, results_table = self._process_events(
            events=events_with_counts,
            cities=cities,
            page=page,
            query=query,
            user=current_user,
            selected_categories=selected_categories,
            selected_tags=selected_tags,
            flags=flags,
            future_only=future_only)

        return results, categories, tags, event_cities
示例#26
0
def login():

    login_form = LoginForm()

    if login_form.validate_on_submit():

        user_login = UserController.login(username=login_form.username.data)

        # Verifica se o usuário está autenticado
        if current_user.is_authenticated and user_login == True:
            return redirect(url_for('calculator'))

        print(current_user.is_authenticated)
        return "Você precisa acessar uma conta para ver essa página!"
    return render_template('index.html', form=login_form)
示例#27
0
def events(query=None,
           category=None,
           tag=None,
           cities=None,
           flags=None,
           page=1,
           next_page_url=None,
           prev_page_url=None,
           lat=None,
           lon=None,
           scroll=False,
           selected=None):
    selected_categories = category

    current_user = UserController().current_user

    if tag == Tag.TVM:
        cities = None

    events, categories, tags, event_cities = EventController().get_events(
        query=query,
        categories=category,
        tags=tag,
        cities=cities,
        flags=flags,
        page=page)

    chips = _parse_chips(selected_categories=selected_categories,
                         categories=categories,
                         tags=tags,
                         cities=event_cities,
                         flags=flags)

    vargs = {
        'current_user': current_user,
        'events': events,
        'selected': selected,
        'chips': chips,
        'page': page,
        'next_page_url': next_page_url,
        'prev_page_url': prev_page_url
    }

    return _render_events_list(request,
                               events,
                               vargs,
                               scroll=scroll,
                               template=TEMPLATE_EXPLORE)
示例#28
0
def register():
    # Instancia o formulario de registro
    register_form = RegistrationForm()

    # Valida o formulário
    if register_form.validate_on_submit():

        # Chama o controller que irá registar
        user = UserController.register(username=register_form.username.data,
                                       password=register_form.password.data)

        if user == True:
            print('Registrado com sucesso! ')
        return redirect(url_for('login'))

    return render_template('register.html', form=register_form)
    def save_seat(cls, user_id, projection_id, row, col):
        if UserController.check_id(user_id) is False:
            raise UserError('There is no user with id = {}!'.format(user_id))

        if ProjectionController.check_id(projection_id) is False:
            raise ProjectionException(
                'There is no projection with id = {}!'.format(projection_id))

        if cls.check_if_seat_is_taken(projection_id, row, col):
            raise SeatError('The seat is taken!')

        session.add(
            Reservation(user_id=user_id,
                        projection_id=projection_id,
                        row=row,
                        col=col))
示例#30
0
def event_update(event_id):
    current_user = UserController().current_user

    is_card = request.form.get('card') == 'true'
    choice = request.form.get('choice')

    if choice in UserEvent.interest_keys():
        interest_key = choice
    else:
        interest_key = None

    callback = request.form.get('cb')
    if callback == "/": callback = 'events'

    event = EventController().update_event(event_id=event_id,
                                           interest_key=interest_key)

    if event:
        template = TEMPLATE_EVENT_CARD if is_card else TEMPLATE_EVENT_PAGE

        categories_set = set()
        tag_chips = []
        for t in event.tags:
            categories_set.add(t.tag_type)
            tag_chips.append({'chip_name': t.tag_name})
        category_chips = [{'chip_name': c} for c in categories_set]

        chips = _parse_chips(categories=category_chips, tags=tag_chips)

        vargs = {
            'current_user': current_user,
            'event': event,
            'chips': chips,
            'card': is_card
        }

        if request.is_xhr:
            if template == TEMPLATE_EVENT_PAGE:
                template = TEMPLATE_EVENT_PAGE_BODY
            return render_template(template, vargs=vargs, **vargs)
        if callback:
            return redirect(callback)
        return render_template(TEMPLATE_MAIN,
                               template=template,
                               vargs=vargs,
                               **vargs)
    return redirect(request.referrer or '/')
示例#31
0
def event(event_id):
    event = EventController().get_event(event_id=event_id)
    current_user = UserController().current_user

    if event:
        template = TEMPLATE_EVENT_PAGE

        vargs = {
            'title': event.display_name,
            'current_user': current_user,
            'event': event
        }

        if request.is_xhr:
            return render_template(template, vargs=vargs, **vargs)
        return render_template(TEMPLATE_MAIN,
                               template=template,
                               vargs=vargs,
                               **vargs)
    return redirect(request.referrer or '/')
import sys
sys.path.insert(0, r'../..')
from models.connection import connection
from controllers.user_controller import UserController
user_controller = UserController(connection)

#access_token = '091e304b-1a3f-4406-ac3a-cf8afd8cd647';  # alex.ough
#access_token = '3ab4ae48-97fe-4420-8cb1-b1e3c62737f5';    # cloud_test_user
#params = {};
#role_id = '435a6417-6c1f-4d7c-87dd-e8f6c0effc7a';   # public
role_id = '3867c370-552f-43b8-bed9-6aa00ffc41b4';   # Awesome Role
access_token = '3ab4ae48-97fe-4420-8cb1-b1e3c62737f5';    # cloud_test_user
params = {'role_id': role_id};
print user_controller.find_all(access_token, params)
示例#33
0
class Game(object):

    def __init__(self, game_name, cursor_lib):
        self.game_name = game_name
        self.ai = AI()
        self.turn_counter = 0
        self.time = 0

        self.world = get_world()
        self.io, self.user_controller = self.init_nonserializable_objects(cursor_lib)

    def init_nonserializable_objects(self, cursor_lib_callback):
        self.io = WindowSystem(cursor_lib_callback())
        self.user_controller = UserController(GameActions(self, self.player))
        register_status_texts(self.io, self, self.player)
        return self.io, self.user_controller

    player = property(lambda self: self.world.player)
    active_level = property(lambda self: self.world.player.level)

    def main_loop(self):
        ai_game_actions = GameActions(self)
        self.io.msg("{0} for help menu".format(Bind.Help.key))
        while True:
            creature, time_delta = self.active_level.turn_scheduler.advance_time()
            self.time += time_delta

            if creature is self.player:
                self.update_view(creature)
                self.user_controller.actions._clear_action()
                self.user_controller.act()
                action_cost = self.user_controller.actions.action_cost

                if action_cost > 0:
                    self.turn_counter += 1
            else:
                ai_game_actions._clear_action(and_associate_creature=creature)
                self.ai.act(ai_game_actions, self.player.coord)
                action_cost = ai_game_actions.action_cost

            assert action_cost >= 0, \
                "Negative cost actions are not allowed (yet at least).{}".format(action_cost)

            creature_check, time_delta = self.active_level.turn_scheduler.addpop(creature, action_cost)
            assert creature is creature_check
            assert time_delta == 0

    def move_creature_to_level(self, creature, world_point):
        try:
            target_level = self.world.get_level(world_point.level_key)
        except LevelNotFound:
            return False

        creature.level.remove_creature(creature)
        target_level.add_creature_to_location(creature, world_point.level_location)

        try:
            creature.vision.clear()
        except AttributeError:
            pass

        if creature is self.player:
            self.redraw()

        return True

    def creature_death(self, creature):
        self.ai.remove_creature_state(creature)
        if creature is self.player:
            self.io.get_key("You die...", keys=Bind.Cancel)
            self.endgame()
        creature.level.remove_creature(creature)

    def endgame(self):
        exit()

    def savegame(self):
        try:
            raw, compressed = state_store.save(self, self.game_name)
        except IOError as e:
            msg_str = str(e)
        else:
            msg_str = "Saved game '{}', file size: {:,} b, {:,} b compressed. Ratio: {:.2%}"
            msg_str = msg_str.format(self.game_name, raw, compressed, raw / compressed)
        return msg_str

    def update_view(self, creature):
        """
        Update the vision set of the creature.

        This operation should only be done on creatures that have the .vision
        attribute ie. AdvancedCreatures for instance.
        """
        if not isinstance(creature, RemembersVision):
            raise ValueError("Creature {} doesn't have the capacity to remember its vision.")

        lvl = creature.level
        new_vision = ShadowCast.get_light_set(lvl.is_see_through, creature.coord,
                                              creature.sight, lvl.rows, lvl.cols)
        creature.vision, old_vision = new_vision, creature.vision
        potentially_modified_vision = new_vision | old_vision

        if Debug.show_map:
            vision_info = lvl.get_vision_information(lvl.tiles.coord_iter(), new_vision,
                                                       always_show_creatures=True)
        else:
            vision_info = lvl.get_vision_information(potentially_modified_vision, new_vision)

        self.io.draw(vision_info)

        if GameConf.clearly_show_vision:
            reverse_data = lvl.get_vision_information(new_vision, new_vision)
            self.io.draw(reverse_data, True)

    def redraw(self):
        self.io.level_window.clear()
        lvl = self.active_level

        if Debug.show_map:
            draw_coords = lvl.tiles.coord_iter()
            vision_info = lvl.get_vision_information(draw_coords, self.player.vision,
                                                     always_show_creatures=True)
        else:
            draw_coords = self.player.get_visited_locations() | self.player.vision
            vision_info = lvl.get_vision_information(draw_coords, self.player.vision)
        self.io.draw(vision_info)

        if GameConf.clearly_show_vision:
            reverse_data = lvl.get_vision_information(self.player.vision, self.player.vision)
            self.io.draw(reverse_data, True)

    def __getstate__(self):
        exclude_state = ('user_controller', 'io')
        state = vars(self).copy()
        for item in exclude_state:
            del state[item]
        return state

    def __setstate__(self, state):
        vars(self).update(state)
示例#34
0
 def init_nonserializable_objects(self, cursor_lib_callback):
     self.io = WindowSystem(cursor_lib_callback())
     self.user_controller = UserController(GameActions(self, self.player))
     register_status_texts(self.io, self, self.player)
     return self.io, self.user_controller