Test Failed
Push — main ( 5f90c7...7c5752 )
by Jochen
04:45
created

blueprints/admin/ticketing/category/views.py (2 issues)

1
"""
2
byceps.blueprints.admin.ticketing.category.views
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, request
10 1
from flask_babel import gettext
11
12 1
from .....services.party import service as party_service
13 1
from .....services.ticketing import category_service
14 1
from .....util.framework.blueprint import create_blueprint
15 1
from .....util.framework.flash import flash_success
16 1
from .....util.framework.templating import templated
17 1
from .....util.views import permission_required, redirect_to
18 1
19
from .forms import CreateOrUpdateForm
20 1
21
22
blueprint = create_blueprint('ticketing_category_admin', __name__)
23 1
24
25
@blueprint.get('/for_party/<party_id>')
26 1
@permission_required('ticketing.administrate')
27 1
@templated
28 1
def index(party_id):
29
    """List ticket categories for that party."""
30
    party = _get_party_or_404(party_id)
31 1
32
    categories_with_ticket_counts = list(
33 1
        category_service.get_categories_with_ticket_counts_for_party(
34
            party.id
35
        ).items()
36
    )
37
38
    return {
39 1
        'party': party,
40
        'categories_with_ticket_counts': categories_with_ticket_counts,
41
    }
42
43
44
@blueprint.get('/for_party/<party_id>/create')
45 1
@permission_required('ticketing.administrate')
46 1
@templated
47 1
def create_form(party_id, erroneous_form=None):
48 1
    """Show form to create a ticket category."""
49
    party = _get_party_or_404(party_id)
50 1
51
    form = erroneous_form if erroneous_form else CreateOrUpdateForm()
52 1
53
    return {
54 1
        'party': party,
55
        'form': form,
56
    }
57
58
59 View Code Duplication
@blueprint.post('/for_party/<party_id>')
1 ignored issue
show
This code seems to be duplicated in your project.
Loading history...
60 1
@permission_required('ticketing.administrate')
61 1
def create(party_id):
62
    """Create a ticket category."""
63
    party = _get_party_or_404(party_id)
64
65
    form = CreateOrUpdateForm(request.form)
66
    if not form.validate():
67
        return create_form(party.id, form)
68
69
    title = form.title.data.strip()
70
71
    category = category_service.create_category(party.id, title)
72
73
    flash_success(
74
        gettext(
75
            'Ticket category "%(title)s" has been created.',
76
            title=category.title,
77
        )
78
    )
79
80
    return redirect_to('.index', party_id=party.id)
81
82
83
@blueprint.get('/categories/<uuid:category_id>/update')
84 1
@permission_required('ticketing.administrate')
85 1
@templated
86 1
def update_form(category_id, erroneous_form=None):
87 1
    """Show form to update the category."""
88
    category = _get_category_or_404(category_id)
89 1
90
    party = party_service.find_party(category.party_id)
91 1
92
    form = (
93 1
        erroneous_form if erroneous_form else CreateOrUpdateForm(obj=category)
94
    )
95
96
    return {
97 1
        'party': party,
98
        'category': category,
99
        'form': form,
100
    }
101
102
103 View Code Duplication
@blueprint.post('/categories/<uuid:category_id>')
1 ignored issue
show
This code seems to be duplicated in your project.
Loading history...
104 1
@permission_required('ticketing.administrate')
105 1
def update(category_id):
106
    """Update the category."""
107
    category = _get_category_or_404(category_id)
108
109
    form = CreateOrUpdateForm(request.form)
110
    if not form.validate():
111
        return update_form(category.id, form)
112
113
    title = form.title.data.strip()
114
115
    category = category_service.update_category(category.id, title)
116
117
    flash_success(
118
        gettext('Category "%(title)s" has been updated.', title=category.title)
119
    )
120
121
    return redirect_to('.index', party_id=category.party_id)
122
123
124
def _get_party_or_404(party_id):
125 1
    party = party_service.find_party(party_id)
126 1
127
    if party is None:
128 1
        abort(404)
129
130
    return party
131 1
132
133
def _get_category_or_404(category_id):
134 1
    category = category_service.find_category(category_id)
135 1
136
    if category is None:
137 1
        abort(404)
138
139
    return category
140