mirror of
https://github.com/lucaspalomodevelop/eventcally.git
synced 2026-03-13 00:07:22 +00:00
Photo Upload
This commit is contained in:
parent
7dc40147aa
commit
37859688cc
29
app.py
29
app.py
@ -48,6 +48,11 @@ security = Security(app, user_datastore)
|
||||
def get_locale():
|
||||
return request.accept_languages.best_match(app.config['LANGUAGES'])
|
||||
|
||||
def get_event_category_name(category):
|
||||
return lazy_gettext('Event_' + category.name)
|
||||
|
||||
app.jinja_env.filters['event_category_name'] = lambda u: get_event_category_name(u)
|
||||
|
||||
def print_dynamic_texts():
|
||||
gettext('Event_Art')
|
||||
gettext('Event_Book')
|
||||
@ -165,12 +170,12 @@ def add_role_to_org_member(org_member, role):
|
||||
if OrgMemberRole.query.with_parent(org_member).filter_by(name = role.name).first() is None:
|
||||
org_member.roles.append(role)
|
||||
|
||||
def upsert_image_with_data(image, data):
|
||||
def upsert_image_with_data(image, data, encoding_format = "image/jpeg"):
|
||||
if image is None:
|
||||
image = Image()
|
||||
|
||||
image.data = b64decode(data)
|
||||
image.encoding_format = "image/jpeg"
|
||||
image.data = data
|
||||
image.encoding_format = encoding_format
|
||||
|
||||
return image
|
||||
|
||||
@ -319,6 +324,8 @@ def upsert_event(event_name, host, location_name, start, description, link = Non
|
||||
|
||||
if category is not None:
|
||||
result.category = upsert_event_category(category)
|
||||
else:
|
||||
result.category = upsert_event_category('Other')
|
||||
|
||||
return result
|
||||
|
||||
@ -969,22 +976,30 @@ def event_create():
|
||||
if not can_create_event():
|
||||
abort(401)
|
||||
|
||||
form = CreateEventForm()
|
||||
form = CreateEventForm(category_id=upsert_event_category('Other').id)
|
||||
|
||||
form.host_id.choices = sorted([(ooa.id, ooa.organization.name if ooa.organization is not None else ooa.admin_unit.name) for ooa in get_event_hosts()], key=lambda ooa: ooa[1])
|
||||
form.host_id.choices.insert(0, (0, ''))
|
||||
form.place_id.choices = [(p.id, p.name) for p in Place.query.order_by('name')]
|
||||
form.place_id.choices.insert(0, (0, ''))
|
||||
form.category_id.choices = sorted([(c.id, get_event_category_name(c)) for c in EventCategory.query.all()], key=lambda ooa: ooa[1])
|
||||
|
||||
if form.validate_on_submit():
|
||||
event = Event()
|
||||
form.populate_obj(event)
|
||||
|
||||
event.admin_unit = get_admin_unit('Stadt Goslar')
|
||||
|
||||
eventDate = EventDate(event_id = event.id, start=form.start.data)
|
||||
event.dates.append(eventDate)
|
||||
|
||||
if form.photo_file.data:
|
||||
fs = form.photo_file.data
|
||||
event.photo = upsert_image_with_data(event.photo, fs.read(), fs.content_type)
|
||||
|
||||
db.session.commit()
|
||||
flash(gettext('Event successfully created'))
|
||||
return redirect(url_for('events'))
|
||||
flash(gettext('Event successfully created'), 'success')
|
||||
return redirect(url_for('event', event_id=event.id))
|
||||
return render_template('event/create.html', form=form)
|
||||
|
||||
@app.route("/eventsuggestions")
|
||||
@ -1015,7 +1030,7 @@ def event_suggestion_create():
|
||||
eventDate = EventSuggestionDate(event_suggestion_id = event.id, start=form.start.data)
|
||||
event.dates.append(eventDate)
|
||||
db.session.commit()
|
||||
flash(gettext('Event suggestion successfully created'))
|
||||
flash(gettext('Event suggestion successfully created'), 'success')
|
||||
return redirect(url_for('home'))
|
||||
return render_template('event_suggestion/create.html', form=form)
|
||||
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
from flask_babelex import lazy_gettext
|
||||
from flask_wtf import FlaskForm
|
||||
from flask_wtf.file import FileField, FileAllowed
|
||||
from wtforms import StringField, SubmitField, TextAreaField, SelectField
|
||||
from wtforms.fields.html5 import DateTimeLocalField
|
||||
from wtforms.validators import DataRequired, Optional
|
||||
@ -14,3 +15,6 @@ class CreateEventForm(FlaskForm):
|
||||
|
||||
place_id = SelectField(lazy_gettext('Place'), validators=[DataRequired()], coerce=int)
|
||||
host_id = SelectField(lazy_gettext('Host'), validators=[DataRequired()], coerce=int)
|
||||
category_id = SelectField(lazy_gettext('Category'), validators=[DataRequired()], coerce=int)
|
||||
|
||||
photo_file = FileField(lazy_gettext('Photo'), validators=[FileAllowed(['jpg', 'jpeg', 'png'], lazy_gettext('Images only!'))])
|
||||
|
||||
@ -241,7 +241,7 @@ class Event(db.Model, TrackableMixin):
|
||||
verified = Column(Boolean())
|
||||
photo_id = db.Column(db.Integer, db.ForeignKey('image.id'))
|
||||
photo = db.relationship('Image', uselist=False)
|
||||
category_id = db.Column(db.Integer, db.ForeignKey('eventcategory.id'))
|
||||
category_id = db.Column(db.Integer, db.ForeignKey('eventcategory.id'), nullable=False)
|
||||
category = relationship('EventCategory', uselist=False)
|
||||
|
||||
dates = relationship('EventDate', backref=backref('event', lazy=False), cascade="all, delete-orphan")
|
||||
|
||||
@ -1,9 +1,11 @@
|
||||
{%- with messages = get_flashed_messages(with_categories=true) -%}
|
||||
<!-- Categories: success (green), info (blue), warning (yellow), danger (red) -->
|
||||
{% if messages %}
|
||||
<ul class="flashes">
|
||||
{% for category, message in messages %}
|
||||
<li class="{{ category }}">{{ message }}</li>
|
||||
<div class="alert alert-{{ category }} alert-dismissible" role="alert">
|
||||
<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button>
|
||||
<!-- <strong>Title</strong> --> {{ message }}
|
||||
</div>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% endif %}
|
||||
{%- endwith %}
|
||||
|
||||
@ -35,7 +35,7 @@
|
||||
|
||||
{% if event.category_id %}
|
||||
<div class="my-4">
|
||||
<div><i class="fa fa-fw fa-archive" data-toggle="tooltip" title="{{ _('Category') }}"></i> {{ _('Event_' + event.category.name) }}</div>
|
||||
<div><i class="fa fa-fw fa-archive" data-toggle="tooltip" title="{{ _('Category') }}"></i> {{ event.category | event_category_name }}</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
|
||||
@ -4,7 +4,7 @@
|
||||
{% block content %}
|
||||
|
||||
<h1>{{ _('Create event') }}</h1>
|
||||
<form action="{{ url_for('event_create') }}" method="POST">
|
||||
<form action="{{ url_for('event_create') }}" method="POST" enctype="multipart/form-data">
|
||||
{{ form.hidden_tag() }}
|
||||
|
||||
<div class="card mb-4">
|
||||
@ -41,6 +41,8 @@
|
||||
{{ _('Additional information') }}
|
||||
</div>
|
||||
<div class="card-body">
|
||||
{{ render_field_with_errors(form.photo_file) }}
|
||||
{{ render_field_with_errors(form.category_id, class="autocomplete w-100") }}
|
||||
{{ render_field_with_errors(form.external_link) }}
|
||||
{{ render_field_with_errors(form.ticket_link) }}
|
||||
</div>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user