Ejemplo n.º 1
0
class PickTableSchema(Schema[PickPoint]):
    global_pick_number = fields.Integer()
    pack_number = fields.Lambda(lambda p: p.round.pack)
    pick_number = fields.Integer()
    pick = fields.Lambda(
        lambda p: describe_focusable(p.pick.cubeable if isinstance(
            p.pick, SinglePickPick) else p.pick.pick))
    burn = fields.Lambda(
        lambda p: describe_focusable(p.pick.burn)
        if isinstance(p.pick, BurnPick) and p.pick.burn is not None else '')
    pack = fields.Lambda(
        lambda p: ', '.join(map(
            describe_focusable,
            p.booster.cubeables,
        )))
Ejemplo n.º 2
0
class LobbiesSchema(Schema):
    name = fields.Text()
    game_type = fields.Text()
    state = fields.Text()
    owner = fields.Text()
    users = fields.Lambda(lambda l: '{}/{}'.format(
        len(l.users),
        l.lobby_options.size,
    ))
    min_size = fields.Lambda(lambda l: l.lobby_options.minimum_size)
    requires_ready = fields.Lambda(
        lambda l: bool(l.lobby_options.require_ready),
        display_name='Req. Ready')
    auto_unready = fields.Lambda(
        lambda l: bool(l.lobby_options.unready_on_change))
Ejemplo n.º 3
0
class PrioritySchema(Schema[models.Priority]):
    id = fields.Integer(read_only=True)
    name = fields.Text(min=1, max=127, pattern=re.compile(r'\w+'))
    created_at = fields.Datetime(read_only=True)
    level = fields.Integer()
    project = fields.Lambda(lambda p: p.project.name)
    is_default = fields.Bool(default=False)
Ejemplo n.º 4
0
class MatchSchema(Schema):
    tournament = fields.Lambda(lambda m: m.tournament.name)
    round = fields.Lambda(lambda m: m.round + 1)
    opponents = fields.Lambda(lambda m: ', '.join(
        sorted(seat.participant.tag_line
               for seat in MatchSchema.get_opponents(m))))
    tournament_participants = fields.Lambda(lambda m: ', '.join(
        sorted(p.tag_line for p in m.tournament.participants)))
    created_at = fields.Lambda(lambda m: m.tournament.created_at.strftime(
        values.STANDARD_DATETIME_FORMAT))

    @classmethod
    def get_opponents(cls, match: ScheduledMatch) -> t.Iterator[ScheduledSeat]:
        current_user = Context.cube_api_client.user
        for seat in match.seats:
            if seat.participant.player is None or seat.participant.player.id != current_user.id:
                yield seat
Ejemplo n.º 5
0
class ToDoSchema(Schema[models.ToDo]):
    id = fields.Integer(read_only=True)

    text = fields.Text()

    tags = fields.Lambda(lambda todo: [tag.name for tag in todo.tags])
    comments = fields.Lambda(
        lambda todo: [comment.text for comment in todo.comments])
    project = fields.Lambda(lambda todo: todo.project.name)

    priority = fields.Related(PrioritySchema(), read_only=True)

    created_at = fields.Datetime(read_only=True)
    finished_at = fields.Datetime(read_only=True)

    state = fields.Enum(models.State, read_only=True)

    children = fields.List(fields.SelfRelated(),
                           read_only=True,
                           source='active_children')
Ejemplo n.º 6
0
class ParticipantsSchema(Schema):
    player = fields.Lambda(lambda p: p.player.username if p.player else '')
    deck = fields.Lambda(lambda p: p.deck.name)
    seed = fields.Float(max_precision=3)