~homeworkprod/byceps

ref: 90357856fb25b54d9e60125d1b658be3514449ae byceps/scripts/occupy_seat_group.py -rwxr-xr-x 1.2 KiB
90357856 — Jochen Kupperschmidt Prepare login-based test with frozen time for Flask v2.x, Werkzeug v2.x 5 months ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#!/usr/bin/env python

"""Occupy a seat group with a ticket bundle.

:Copyright: 2006-2021 Jochen Kupperschmidt
:License: Revised BSD (see `LICENSE` file for details)
"""

import click

from byceps.services.seating import seat_group_service
from byceps.services.ticketing import ticket_bundle_service

from _util import call_with_app_context


def get_seat_group(ctx, param, seat_group_id):
    seat_group = seat_group_service.find_seat_group(seat_group_id)

    if not seat_group:
        raise click.BadParameter(f'Unknown seat group ID "{seat_group_id}".')

    return seat_group


def get_ticket_bundle(ctx, param, ticket_bundle_id):
    ticket_bundle = ticket_bundle_service.find_bundle(ticket_bundle_id)

    if not ticket_bundle:
        raise click.BadParameter(
            f'Unknown ticket bundle ID "{ticket_bundle_id}".'
        )

    return ticket_bundle


@click.command()
@click.argument('seat_group', callback=get_seat_group)
@click.argument('ticket_bundle', callback=get_ticket_bundle)
def execute(seat_group, ticket_bundle):
    seat_group_service.occupy_seat_group(seat_group, ticket_bundle)

    click.secho('Done.', fg='green')


if __name__ == '__main__':
    call_with_app_context(execute)