2020-09-13 21:31:05 -03:00
|
|
|
from quart import g, abort, render_template
|
2020-05-09 22:26:58 +01:00
|
|
|
from datetime import date, datetime
|
2020-11-21 18:04:39 -03:00
|
|
|
from http import HTTPStatus
|
2020-02-19 12:35:04 +00:00
|
|
|
|
2020-05-09 22:26:58 +01:00
|
|
|
from lnbits.decorators import check_user_exists, validate_uuids
|
2020-02-19 12:35:04 +00:00
|
|
|
|
2020-11-21 18:04:39 -03:00
|
|
|
from . import events_ext
|
2020-05-09 22:26:58 +01:00
|
|
|
from .crud import get_ticket, get_event
|
2020-02-19 12:35:04 +00:00
|
|
|
|
|
|
|
|
|
|
|
@events_ext.route("/")
|
2020-05-09 22:26:58 +01:00
|
|
|
@validate_uuids(["usr"], required=True)
|
|
|
|
@check_user_exists()
|
2020-09-13 21:31:05 -03:00
|
|
|
async def index():
|
|
|
|
return await render_template("events/index.html", user=g.user)
|
2020-02-19 23:51:26 +00:00
|
|
|
|
|
|
|
|
2020-05-09 22:26:58 +01:00
|
|
|
@events_ext.route("/<event_id>")
|
2020-09-13 21:31:05 -03:00
|
|
|
async def display(event_id):
|
2020-11-21 18:04:39 -03:00
|
|
|
event = await get_event(event_id)
|
|
|
|
if not event:
|
|
|
|
abort(HTTPStatus.NOT_FOUND, "Event does not exist.")
|
|
|
|
|
2020-05-09 22:26:58 +01:00
|
|
|
if event.amount_tickets < 1:
|
2020-09-13 21:31:05 -03:00
|
|
|
return await render_template(
|
2021-03-24 00:40:32 -03:00
|
|
|
"events/error.html",
|
|
|
|
event_name=event.name,
|
|
|
|
event_error="Sorry, tickets are sold out :(",
|
2020-09-13 21:31:05 -03:00
|
|
|
)
|
2020-08-30 23:19:43 -03:00
|
|
|
datetime_object = datetime.strptime(event.closing_date, "%Y-%m-%d").date()
|
2020-05-09 22:26:58 +01:00
|
|
|
if date.today() > datetime_object:
|
2020-09-13 21:31:05 -03:00
|
|
|
return await render_template(
|
2021-03-24 00:40:32 -03:00
|
|
|
"events/error.html",
|
|
|
|
event_name=event.name,
|
|
|
|
event_error="Sorry, ticket closing date has passed :(",
|
2020-08-30 23:19:43 -03:00
|
|
|
)
|
2020-02-19 23:51:26 +00:00
|
|
|
|
2020-09-13 21:31:05 -03:00
|
|
|
return await render_template(
|
2020-08-30 23:19:43 -03:00
|
|
|
"events/display.html",
|
|
|
|
event_id=event_id,
|
|
|
|
event_name=event.name,
|
|
|
|
event_info=event.info,
|
|
|
|
event_price=event.price_per_ticket,
|
|
|
|
)
|
2020-02-19 12:35:04 +00:00
|
|
|
|
|
|
|
|
2020-05-09 22:26:58 +01:00
|
|
|
@events_ext.route("/ticket/<ticket_id>")
|
2020-09-13 21:31:05 -03:00
|
|
|
async def ticket(ticket_id):
|
2020-11-21 18:04:39 -03:00
|
|
|
ticket = await get_ticket(ticket_id)
|
|
|
|
if not ticket:
|
|
|
|
abort(HTTPStatus.NOT_FOUND, "Ticket does not exist.")
|
|
|
|
|
|
|
|
event = await get_event(ticket.event)
|
|
|
|
if not event:
|
|
|
|
abort(HTTPStatus.NOT_FOUND, "Event does not exist.")
|
|
|
|
|
2020-09-13 21:31:05 -03:00
|
|
|
return await render_template(
|
2021-03-24 00:40:32 -03:00
|
|
|
"events/ticket.html",
|
|
|
|
ticket_id=ticket_id,
|
|
|
|
ticket_name=event.name,
|
|
|
|
ticket_info=event.info,
|
2020-09-13 21:31:05 -03:00
|
|
|
)
|
2020-02-19 23:51:26 +00:00
|
|
|
|
|
|
|
|
2020-05-09 22:26:58 +01:00
|
|
|
@events_ext.route("/register/<event_id>")
|
2020-09-13 21:31:05 -03:00
|
|
|
async def register(event_id):
|
2020-11-21 18:04:39 -03:00
|
|
|
event = await get_event(event_id)
|
|
|
|
if not event:
|
|
|
|
abort(HTTPStatus.NOT_FOUND, "Event does not exist.")
|
2020-02-25 23:07:59 +00:00
|
|
|
|
2020-09-13 21:31:05 -03:00
|
|
|
return await render_template(
|
2021-03-24 00:40:32 -03:00
|
|
|
"events/register.html",
|
|
|
|
event_id=event_id,
|
|
|
|
event_name=event.name,
|
|
|
|
wallet_id=event.wallet,
|
2020-09-13 21:31:05 -03:00
|
|
|
)
|