mirror of
https://github.com/lucaspalomodevelop/eventcally.git
synced 2026-03-13 08:09:37 +00:00
Add current date and place filter to event search of organization #410
This commit is contained in:
parent
d39e11c88a
commit
e47a02557d
@ -51,6 +51,12 @@ app.config["ADMIN_UNIT_CREATE_REQUIRES_ADMIN"] = os.getenv(
|
||||
app.config["SEO_SITEMAP_PING_GOOGLE"] = getenv_bool("SEO_SITEMAP_PING_GOOGLE", "False")
|
||||
app.config["GOOGLE_MAPS_API_KEY"] = os.getenv("GOOGLE_MAPS_API_KEY")
|
||||
set_env_to_app(app, "SITE_NAME", "EventCally")
|
||||
app.config["FLASK_DEBUG"] = getenv_bool("FLASK_DEBUG", "False")
|
||||
|
||||
# if app.config["FLASK_DEBUG"]:
|
||||
# logging.basicConfig(level=logging.DEBUG)
|
||||
# logging.getLogger("sqlalchemy.engine").setLevel(logging.INFO)
|
||||
# logging.getLogger("authlib").setLevel(logging.DEBUG)
|
||||
|
||||
# Proxy handling
|
||||
if os.getenv("PREFERRED_URL_SCHEME"): # pragma: no cover
|
||||
|
||||
@ -438,6 +438,9 @@ class FindEventForm(FlaskForm):
|
||||
organizer_id = SelectField(
|
||||
lazy_gettext("Organizer"), validators=[Optional()], coerce=int
|
||||
)
|
||||
event_place_id = SelectField(
|
||||
lazy_gettext("Place"), validators=[Optional()], coerce=int
|
||||
)
|
||||
|
||||
submit = SubmitField(lazy_gettext("Find events"))
|
||||
|
||||
|
||||
@ -92,6 +92,9 @@ def fill_event_filter(event_filter, params):
|
||||
if params.organizer_id:
|
||||
event_filter = and_(event_filter, Event.organizer_id == params.organizer_id)
|
||||
|
||||
if params.event_place_id:
|
||||
event_filter = and_(event_filter, Event.event_place_id == params.event_place_id)
|
||||
|
||||
if params.latitude and params.longitude and params.distance:
|
||||
point = "POINT({} {})".format(params.longitude, params.latitude)
|
||||
event_filter = and_(
|
||||
|
||||
@ -24,6 +24,7 @@ class EventSearchParams(object):
|
||||
self.distance = None
|
||||
self.category_id = None
|
||||
self.organizer_id = None
|
||||
self.event_place_id = None
|
||||
self.event_list_id = None
|
||||
self.weekday = None
|
||||
self.sort = None
|
||||
@ -141,6 +142,9 @@ class EventSearchParams(object):
|
||||
if "organizer_id" in request.args:
|
||||
self.organizer_id = request.args["organizer_id"]
|
||||
|
||||
if "event_place_id" in request.args:
|
||||
self.event_place_id = request.args["event_place_id"]
|
||||
|
||||
if "event_list_id" in request.args:
|
||||
self.event_list_id = self.load_list_param("event_list_id")
|
||||
|
||||
|
||||
@ -984,6 +984,10 @@
|
||||
{{ render_field_with_errors(form.organizer_id, formrow="1") }}
|
||||
{% endif %}
|
||||
|
||||
{% if form.event_place_id and form.event_place_id.type != "HiddenField" %}
|
||||
{{ render_field_with_errors(form.event_place_id, formrow="1") }}
|
||||
{% endif %}
|
||||
|
||||
{{ render_event_dates_date_field(form.date_from, form.date_to) }}
|
||||
|
||||
{% if form.weekday and form.weekday.choices|length > 0 %}
|
||||
|
||||
@ -31,6 +31,7 @@ from project.services.admin_unit import (
|
||||
from project.services.event import get_events_query
|
||||
from project.services.event_search import EventSearchParams
|
||||
from project.services.event_suggestion import get_event_reviews_query
|
||||
from project.utils import get_place_str
|
||||
from project.views.event import get_event_category_choices
|
||||
from project.views.utils import (
|
||||
flash_errors,
|
||||
@ -151,6 +152,7 @@ def manage_admin_unit_events(id):
|
||||
set_current_admin_unit(admin_unit)
|
||||
|
||||
params = EventSearchParams()
|
||||
params.set_default_date_range()
|
||||
|
||||
form = FindEventForm(formdata=request.args, obj=params)
|
||||
form.category_id.choices = get_event_category_choices()
|
||||
@ -164,6 +166,14 @@ def manage_admin_unit_events(id):
|
||||
form.organizer_id.choices = [(o.id, o.name) for o in organizers]
|
||||
form.organizer_id.choices.insert(0, (0, ""))
|
||||
|
||||
event_places = (
|
||||
EventPlace.query.filter(EventPlace.admin_unit_id == admin_unit.id)
|
||||
.order_by(func.lower(EventPlace.name))
|
||||
.all()
|
||||
)
|
||||
form.event_place_id.choices = [(p.id, get_place_str(p)) for p in event_places]
|
||||
form.event_place_id.choices.insert(0, (0, ""))
|
||||
|
||||
if form.validate():
|
||||
form.populate_obj(params)
|
||||
|
||||
|
||||
@ -81,6 +81,10 @@ def test_search(client, seeder, utils, app, db):
|
||||
url = utils.get_url("api_v1_event_date_search", organizer_id=organizer_id)
|
||||
response = utils.get_ok(url)
|
||||
|
||||
event_place_id = seeder.upsert_default_event_place(admin_unit_id)
|
||||
url = utils.get_url("api_v1_event_date_search", event_place_id=event_place_id)
|
||||
response = utils.get_ok(url)
|
||||
|
||||
url = utils.get_url("api_v1_event_date_search", organization_id=admin_unit_id)
|
||||
response = utils.get_ok(url)
|
||||
|
||||
|
||||
@ -123,6 +123,16 @@ def test_admin_unit_events_invalidDateFormat(client, seeder, utils):
|
||||
)
|
||||
|
||||
|
||||
def test_admin_unit_events_place(client, seeder, utils):
|
||||
user_id, admin_unit_id = seeder.setup_base(admin_unit_verified=False)
|
||||
seeder.create_event(admin_unit_id, draft=True)
|
||||
event_place_id = seeder.upsert_default_event_place(admin_unit_id)
|
||||
|
||||
utils.get_endpoint_ok(
|
||||
"manage_admin_unit_events", id=admin_unit_id, event_place_id=event_place_id
|
||||
)
|
||||
|
||||
|
||||
def test_admin_unit_organizers(client, seeder, utils):
|
||||
user_id, admin_unit_id = seeder.setup_base()
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user