Passed
Push — main ( a21473...138f92 )
by Jochen
04:19
created

byceps.blueprints.api.v1.ticketing.views   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 49
Duplicated Lines 0 %

Test Coverage

Coverage 94.44%

Importance

Changes 0
Metric Value
eloc 23
dl 0
loc 49
ccs 17
cts 18
cp 0.9444
rs 10
c 0
b 0
f 0
wmc 3

2 Functions

Rating   Name   Duplication   Size   Complexity  
A _get_party_or_404() 0 7 2
A get_sale_stats() 0 14 1
1
"""
2
byceps.blueprints.api.v1.ticketing
3
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4
5
:Copyright: 2006-2021 Jochen Kupperschmidt
6
:License: Revised BSD (see `LICENSE` file for details)
7
"""
8
9 1
from flask import abort, jsonify
10
11 1
from .....services.party import service as party_service
12 1
from .....services.party.transfer.models import Party
13 1
from .....services.ticketing import ticket_service
14
15 1
from .....typing import PartyID
16 1
from .....util.framework.blueprint import create_blueprint
17
18 1
from ...decorators import api_token_required
19
20
21 1
blueprint = create_blueprint('ticketing', __name__)
22
23
24 1
@blueprint.get('/sale_stats/<party_id>')
25 1
@api_token_required
26
def get_sale_stats(party_id):
27
    """Return the number of maximum and sold tickets, respectively, for
28
    that party.
29
    """
30 1
    party = _get_party_or_404(party_id)
31
32 1
    sale_stats = ticket_service.get_ticket_sale_stats(party.id)
33
34 1
    return jsonify(
35
        {
36
            'tickets_max': sale_stats.tickets_max,
37
            'tickets_sold': sale_stats.tickets_sold,
38
        }
39
    )
40
41
42 1
def _get_party_or_404(party_id: PartyID) -> Party:
43 1
    party = party_service.find_party(party_id)
44
45 1
    if party is None:
46
        abort(404)
47
48
    return party
49