mirror of
https://github.com/lucaspalomodevelop/eventcally.git
synced 2026-03-13 00:07:22 +00:00
Eine weitere Anstylung
This commit is contained in:
parent
d5f5f9a829
commit
3a472288da
15
app.py
15
app.py
@ -966,9 +966,9 @@ def place(place_id):
|
||||
|
||||
@app.route("/events")
|
||||
def events():
|
||||
dates = EventDate.query.filter(EventDate.start >= today).order_by(EventDate.start).all()
|
||||
events = Event.query.all()
|
||||
return render_template('events.html',
|
||||
dates=dates,
|
||||
events=events,
|
||||
user_can_create_event=can_create_event(),
|
||||
user_can_list_event_suggestion=can_list_event_suggestion())
|
||||
|
||||
@ -987,6 +987,17 @@ def event(event_id):
|
||||
|
||||
return render_template('event.html', event=event, user_can_verify_event=user_can_verify_event)
|
||||
|
||||
@app.route("/eventdates")
|
||||
def event_dates():
|
||||
dates = EventDate.query.filter(EventDate.start >= today).order_by(EventDate.start).all()
|
||||
return render_template('event_date/list.html',
|
||||
dates=dates)
|
||||
|
||||
@app.route('/eventdate/<int:id>', methods=('GET', 'POST'))
|
||||
def event_date(id):
|
||||
event_date = EventDate.query.get_or_404(id)
|
||||
return render_template('event_date/read.html', event_date=event_date)
|
||||
|
||||
from forms.event import CreateEventForm
|
||||
from forms.event_suggestion import CreateEventSuggestionForm
|
||||
|
||||
|
||||
24
models.py
24
models.py
@ -246,31 +246,7 @@ class Event(db.Model, TrackableMixin):
|
||||
|
||||
recurrence_rule = Column(UnicodeText())
|
||||
dates = relationship('EventDate', backref=backref('event', lazy=False), cascade="all, delete-orphan")
|
||||
# wiederkehrende Dates sind zeitlich eingeschränkt
|
||||
# beim event müsste man dann auch nochmal start_time (nullable=False) und end_time machen.
|
||||
#keywords/tags = Column(String(255)) oder liste?
|
||||
#kid_friendly: bool
|
||||
# target_group:
|
||||
# age_from: int
|
||||
# age_to: int
|
||||
# mainly_for_tourists: bool
|
||||
#
|
||||
#
|
||||
# = kärnten =
|
||||
# eventSchedules: RepeatFrequency (wiederkehrende Beschreibung, keine konkreten Daten)
|
||||
# allDay: bool
|
||||
# status: Scheduled (Default), Cancelled, MovedOnline, Postponed, Rescheduled
|
||||
# previousStartDates: DateTime (see status)
|
||||
# attendanceMode: Offline, Online, Mixed
|
||||
# isAccessibleForFree: bool
|
||||
# typicalAgeRange: string (9-99)
|
||||
|
||||
# (Multiple Events möglich, wiederholend oder frei, dann aber mit endzeit)
|
||||
# Facebook Limitations:
|
||||
# An event can't last longer than a day
|
||||
# An event can't span more than 52 weeks
|
||||
# Each event can have a max of 52 instances
|
||||
# Once the event has begun, you can't add instances totaling more than 52 weeks after the initial start date
|
||||
class EventDate(db.Model):
|
||||
__tablename__ = 'eventdate'
|
||||
id = Column(Integer(), primary_key=True)
|
||||
|
||||
@ -159,6 +159,37 @@
|
||||
|
||||
{% macro render_image(image_id) %}
|
||||
{% if image_id %}
|
||||
<img src="{{ url_for('image', id=image_id) }}"/>
|
||||
<img src="{{ url_for('image', id=image_id) }}" class="img-fluid rounded" />
|
||||
{% endif %}
|
||||
{% endmacro %}
|
||||
|
||||
{% macro render_event_props(event, date) %}
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
{{ event.name }}
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
<div><i class="fa fa-fw fa-calendar" data-toggle="tooltip" title="{{ _('Date') }}"></i> {{ date.start | datetimeformat }}</div>
|
||||
<div><i class="fa fa-fw fa-map-marker" data-toggle="tooltip" title="{{ _('Location') }}"></i> <a href="{{ url_for('place', place_id=event.place.id) }}">{{ render_place(event.place) }}</a></div>
|
||||
{% if event.verified %}
|
||||
<div><i class="fa fa-fw fa-check-circle text-success" data-toggle="tooltip" title="{{ _('Verified') }}"></i> {{ _('Verified') }}</div>
|
||||
{% endif %}
|
||||
|
||||
{% if event.photo_id %}
|
||||
<div class="my-4">{{ render_image(event.photo_id) }}</div>
|
||||
{% endif %}
|
||||
|
||||
<div class="my-4">{{ event.description }}</div>
|
||||
|
||||
<div class="mt-4">
|
||||
{{ render_link_prop(event.external_link) }}
|
||||
{{ render_link_prop(event.ticket_link) }}
|
||||
{% if event.category_id %}
|
||||
<div><i class="fa fa-fw fa-archive" data-toggle="tooltip" title="{{ _('Category') }}"></i> {{ event.category | event_category_name }}</div>
|
||||
{% endif %}
|
||||
<div><i class="fa fa-fw fa-users" data-toggle="tooltip" title="{{ _('Host') }}"></i> {{ render_ooa_with_link(event.host) }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endmacro %}
|
||||
@ -1,11 +1,16 @@
|
||||
{% extends "layout.html" %}
|
||||
{% from "_macros.html" import render_image, render_ooa_with_link, render_place, render_link_prop %}
|
||||
{% from "_macros.html" import render_event_props, render_image, render_ooa_with_link, render_place, render_link_prop %}
|
||||
{% block title %}
|
||||
{{ event.name }}
|
||||
{% endblock %}
|
||||
{% block content %}
|
||||
|
||||
<h1>{{ event.name }}</h1>
|
||||
<nav aria-label="breadcrumb">
|
||||
<ol class="breadcrumb">
|
||||
<li class="breadcrumb-item"><a href="{{ url_for('events') }}">{{ _('Events') }}</a></li>
|
||||
<li class="breadcrumb-item active" aria-current="page">{{ event.name }}</li>
|
||||
</ol>
|
||||
</nav>
|
||||
|
||||
{% if user_can_verify_event %}
|
||||
<div class="my-4">
|
||||
@ -21,35 +26,19 @@
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<div class="my-4">
|
||||
<div><i class="fa fa-fw fa-calendar" data-toggle="tooltip" title="{{ _('Date') }}"></i> {{ event.dates[0].start | datetimeformat }}</div>
|
||||
<div><i class="fa fa-fw fa-map-marker" data-toggle="tooltip" title="{{ _('Location') }}"></i> <a href="{{ url_for('place', place_id=event.place.id) }}">{{ render_place(event.place) }}</a></div>
|
||||
{% if event.verified %}
|
||||
<div><i class="fa fa-fw fa-check-circle text-success" data-toggle="tooltip" title="{{ _('Verified') }}"></i> {{ _('Verified') }}</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
{{ render_event_props(event, event.dates[0]) }}
|
||||
|
||||
{% if event.photo_id %}
|
||||
<div class="my-4">{{ render_image(event.photo_id) }}</div>
|
||||
{% endif %}
|
||||
|
||||
{% if event.category_id %}
|
||||
<div class="my-4">
|
||||
<div><i class="fa fa-fw fa-archive" data-toggle="tooltip" title="{{ _('Category') }}"></i> {{ event.category | event_category_name }}</div>
|
||||
{% if event.dates|length > 1 %}
|
||||
<div class="card mt-4">
|
||||
<div class="card-header">
|
||||
{{ _('Event Dates') }}
|
||||
</div>
|
||||
<div class="list-group list-group-flush">
|
||||
{% for date in event.dates %}
|
||||
<a href="{{ url_for('event_date', id=date.id) }}" class="list-group-item list-group-item-action">{{ date.start | datetimeformat('short') }}</a>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<div class="my-4">{{ event.description }}</div>
|
||||
|
||||
{% if event.external_link or event.ticket_link %}
|
||||
<div class="my-4">
|
||||
{{ render_link_prop(event.external_link) }}
|
||||
{{ render_link_prop(event.ticket_link) }}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<div class="my-4">
|
||||
<div><i class="fa fa-fw fa-users" data-toggle="tooltip" title="{{ _('Host') }}"></i> {{ render_ooa_with_link(event.host) }}</div>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
25
templates/event_date/list.html
Normal file
25
templates/event_date/list.html
Normal file
@ -0,0 +1,25 @@
|
||||
{% extends "layout.html" %}
|
||||
{% from "_macros.html" import render_ooa, render_place, render_events_sub_menu %}
|
||||
{% block title %}
|
||||
{{ _('Event Dates') }}
|
||||
{% endblock %}
|
||||
{% block content %}
|
||||
|
||||
<h1>{{ _('Event Dates') }}</h1>
|
||||
|
||||
{% for date in dates %}
|
||||
<div class="card mb-3" style="max-width: 768px;">
|
||||
{% if date.event.photo_id %}
|
||||
<img src="{{ url_for('image', id=date.event.photo_id) }}" class="card-img-top" style="object-fit: cover; height: 20vh;" />
|
||||
{% endif %}
|
||||
<div class="card-body" style="padding:1rem">
|
||||
<h5 class="card-title">{{ date.event.name }}</h5>
|
||||
<h6 class="card-subtitle mb-2 text-muted"><i class="fa fa-calendar"></i> {{ date.start | datetimeformat('short') }}</h6>
|
||||
<p class="card-text">{{ date.event.description | truncate(100) }}</p>
|
||||
<small class="text-muted"><i class="fa fa-map-marker"></i> {{ date.event.place.name }}</small>
|
||||
<a href="{{ url_for('event_date', id=date.id) }}" class="stretched-link"></a>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
|
||||
{% endblock %}
|
||||
19
templates/event_date/read.html
Normal file
19
templates/event_date/read.html
Normal file
@ -0,0 +1,19 @@
|
||||
{% extends "layout.html" %}
|
||||
{% from "_macros.html" import render_event_props, render_image, render_ooa_with_link, render_place, render_link_prop %}
|
||||
{% set event = event_date.event %}
|
||||
{% block title %}
|
||||
{{ event.name }}
|
||||
{% endblock %}
|
||||
{% block content %}
|
||||
|
||||
<nav aria-label="breadcrumb">
|
||||
<ol class="breadcrumb">
|
||||
<li class="breadcrumb-item"><a href="{{ url_for('events') }}">{{ _('Events') }}</a></li>
|
||||
<li class="breadcrumb-item"><a href="{{ url_for('event', event_id=event.id) }}">{{ event.name }}</a></li>
|
||||
<li class="breadcrumb-item active" aria-current="page">{{ event_date.start | datetimeformat('short') }}</li>
|
||||
</ol>
|
||||
</nav>
|
||||
|
||||
{{ render_event_props(event, event_date) }}
|
||||
|
||||
{% endblock %}
|
||||
@ -9,19 +9,32 @@
|
||||
|
||||
{{ render_events_sub_menu(user_can_create_event, user_can_list_event_suggestion) }}
|
||||
|
||||
{% for date in dates %}
|
||||
<div class="card mb-3" style="max-width: 768px;">
|
||||
{% if date.event.photo_id %}
|
||||
<img src="{{ url_for('image', id=date.event.photo_id) }}" class="card-img-top" style="object-fit: cover; height: 20vh;" />
|
||||
{% endif %}
|
||||
<div class="card-body" style="padding:1rem">
|
||||
<h5 class="card-title">{{ date.event.name }}</h5>
|
||||
<h6 class="card-subtitle mb-2 text-muted"><i class="fa fa-calendar"></i> {{ date.start | datetimeformat('short') }}</h6>
|
||||
<p class="card-text">{{ date.event.description | truncate(100) }}</p>
|
||||
<small class="text-muted"><i class="fa fa-map-marker"></i> {{ date.event.place.name }}</small>
|
||||
<a href="{{ url_for('event', event_id=date.event.id) }}" class="stretched-link"></a>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
<div class="table-responsive">
|
||||
<table class="table table-sm table-bordered table-hover table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{{ _('Date') }}</th>
|
||||
<th>{{ _('Name') }}</th>
|
||||
<th>{{ _('Host') }}</th>
|
||||
<th>{{ _('Location') }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for event in events %}
|
||||
<tr>
|
||||
<td>{{ event.dates[0].start | datetimeformat('short') }}</td>
|
||||
<td>
|
||||
<a href="{{ url_for('event', event_id=event.id) }}">{{ event.name }}</a>
|
||||
{% if event.verified %}
|
||||
<i class="fa fa-check-circle text-success" data-toggle="tooltip" title="{{ _('Verified') }}"></i>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>{{ render_ooa(event.host) }}</td>
|
||||
<td>{{ render_place(event.place) }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
||||
{% endblock %}
|
||||
@ -7,8 +7,8 @@ Prototyp
|
||||
<h1>{{ _('Hi there!') }}</h1>
|
||||
|
||||
<div class="list-group my-4">
|
||||
<a href="{{ url_for('events') }}" class="list-group-item list-group-item-action">
|
||||
{{ _('Events') }}
|
||||
<a href="{{ url_for('event_dates') }}" class="list-group-item list-group-item-action">
|
||||
{{ _('Event Dates') }}
|
||||
<i class="fa fa-caret-right"></i>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
@ -57,6 +57,7 @@
|
||||
</button>
|
||||
<div class="collapse navbar-collapse" id="navbarNavAltMarkup">
|
||||
<div class="navbar-nav mr-auto">
|
||||
<a class="nav-item nav-link" href="{{ url_for('event_dates') }}">{{ _('Event Dates') }}</a>
|
||||
<a class="nav-item nav-link" href="{{ url_for('events') }}">{{ _('Events') }}</a>
|
||||
<a class="nav-item nav-link" href="{{ url_for('places') }}">{{ _('Places') }}</a>
|
||||
<a class="nav-item nav-link" href="{{ url_for('admin_units') }}">{{ _('Admin Units') }}</a>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user