Séparation des vues d’affichage d’événements en calendrier
This commit is contained in:
		@@ -17,6 +17,10 @@ from .sitemaps import (
 | 
				
			|||||||
)
 | 
					)
 | 
				
			||||||
from .models import Event, Place, Organisation, Category
 | 
					from .models import Event, Place, Organisation, Category
 | 
				
			||||||
from .views import (
 | 
					from .views import (
 | 
				
			||||||
 | 
					    # Calendar
 | 
				
			||||||
 | 
					    day_view,
 | 
				
			||||||
 | 
					    month_view,
 | 
				
			||||||
 | 
					    week_view,
 | 
				
			||||||
    # Categorisation rules
 | 
					    # Categorisation rules
 | 
				
			||||||
    CategorisationRuleCreateView,
 | 
					    CategorisationRuleCreateView,
 | 
				
			||||||
    CategorisationRuleDeleteView,
 | 
					    CategorisationRuleDeleteView,
 | 
				
			||||||
@@ -101,9 +105,6 @@ from .views import (
 | 
				
			|||||||
    delete_tag,
 | 
					    delete_tag,
 | 
				
			||||||
    TagCreateView,
 | 
					    TagCreateView,
 | 
				
			||||||
    # TODO pas encore trié
 | 
					    # TODO pas encore trié
 | 
				
			||||||
    week_view,
 | 
					 | 
				
			||||||
    month_view,
 | 
					 | 
				
			||||||
    day_view,
 | 
					 | 
				
			||||||
    upcoming_events,
 | 
					    upcoming_events,
 | 
				
			||||||
    recent,
 | 
					    recent,
 | 
				
			||||||
    administration,
 | 
					    administration,
 | 
				
			||||||
@@ -150,6 +151,34 @@ sitemaps = {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
urlpatterns = [
 | 
					urlpatterns = [
 | 
				
			||||||
 | 
					    # Calendar
 | 
				
			||||||
 | 
					    path(
 | 
				
			||||||
 | 
					        "cat:<cat>/jour/<int:year>/<int:month>/<int:day>/",
 | 
				
			||||||
 | 
					        day_view,
 | 
				
			||||||
 | 
					        name="day_view_category",
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    path("cat:<cat>/jour/", day_view, name="day_view_category_when"),
 | 
				
			||||||
 | 
					    path("cat:<cat>/aujourdhui/", day_view, name="aujourdhui_category"),
 | 
				
			||||||
 | 
					    path("jour/<int:year>/<int:month>/<int:day>/", day_view, name="day_view"),
 | 
				
			||||||
 | 
					    path("jour/", day_view, name="day_view_when"),
 | 
				
			||||||
 | 
					    path("aujourdhui/", day_view, name="aujourdhui"),
 | 
				
			||||||
 | 
					    path(
 | 
				
			||||||
 | 
					        "cat:<cat>/mois/<int:year>/<int:month>/",
 | 
				
			||||||
 | 
					        month_view,
 | 
				
			||||||
 | 
					        name="month_view_category",
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    path("cat:<cat>/ce-mois-ci", month_view, name="ce_mois_ci_category"),
 | 
				
			||||||
 | 
					    path("mois/<int:year>/<int:month>/", month_view, name="month_view"),
 | 
				
			||||||
 | 
					    path("ce-mois-ci", month_view, name="ce_mois_ci"),
 | 
				
			||||||
 | 
					    path(
 | 
				
			||||||
 | 
					        "cat:<cat>/semaine/<int:year>/<int:week>/",
 | 
				
			||||||
 | 
					        week_view,
 | 
				
			||||||
 | 
					        name="week_view_category",
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    path("cat:<cat>/cette-semaine/", week_view, name="cette_semaine_category"),
 | 
				
			||||||
 | 
					    path("cat:<cat>/cette-semaine/", week_view, name="cette_semaine_category"),
 | 
				
			||||||
 | 
					    path("semaine/<int:year>/<int:week>/", week_view, name="week_view"),
 | 
				
			||||||
 | 
					    path("cette-semaine/", week_view, name="cette_semaine"),
 | 
				
			||||||
    # Categorisation rules
 | 
					    # Categorisation rules
 | 
				
			||||||
    path(
 | 
					    path(
 | 
				
			||||||
        "catrules/add",
 | 
					        "catrules/add",
 | 
				
			||||||
@@ -407,45 +436,18 @@ urlpatterns = [
 | 
				
			|||||||
    path("tags/add", TagCreateView.as_view(), name="add_tag"),
 | 
					    path("tags/add", TagCreateView.as_view(), name="add_tag"),
 | 
				
			||||||
    # TODO pas encore trié
 | 
					    # TODO pas encore trié
 | 
				
			||||||
    path("cat:<cat>/", home, name="home_category"),
 | 
					    path("cat:<cat>/", home, name="home_category"),
 | 
				
			||||||
    path(
 | 
					 | 
				
			||||||
        "cat:<cat>/semaine/<int:year>/<int:week>/",
 | 
					 | 
				
			||||||
        week_view,
 | 
					 | 
				
			||||||
        name="week_view_category",
 | 
					 | 
				
			||||||
    ),
 | 
					 | 
				
			||||||
    path("cat:<cat>/cette-semaine/", week_view, name="cette_semaine_category"),
 | 
					 | 
				
			||||||
    path(
 | 
					 | 
				
			||||||
        "cat:<cat>/mois/<int:year>/<int:month>/",
 | 
					 | 
				
			||||||
        month_view,
 | 
					 | 
				
			||||||
        name="month_view_category",
 | 
					 | 
				
			||||||
    ),
 | 
					 | 
				
			||||||
    path(
 | 
					 | 
				
			||||||
        "cat:<cat>/jour/<int:year>/<int:month>/<int:day>/",
 | 
					 | 
				
			||||||
        day_view,
 | 
					 | 
				
			||||||
        name="day_view_category",
 | 
					 | 
				
			||||||
    ),
 | 
					 | 
				
			||||||
    path("cat:<cat>/jour/", day_view, name="day_view_category_when"),
 | 
					 | 
				
			||||||
    path("cat:<cat>/a-venir/", upcoming_events, name="a_venir_category"),
 | 
					    path("cat:<cat>/a-venir/", upcoming_events, name="a_venir_category"),
 | 
				
			||||||
    path("cat:<cat>/aujourdhui/", day_view, name="aujourdhui_category"),
 | 
					 | 
				
			||||||
    path(
 | 
					    path(
 | 
				
			||||||
        "cat:<cat>/a-venir/<int:year>/<int:month>/<int:day>/",
 | 
					        "cat:<cat>/a-venir/<int:year>/<int:month>/<int:day>/",
 | 
				
			||||||
        upcoming_events,
 | 
					        upcoming_events,
 | 
				
			||||||
        name="a_venir_jour_category",
 | 
					        name="a_venir_jour_category",
 | 
				
			||||||
    ),
 | 
					    ),
 | 
				
			||||||
    path("cat:<cat>/cette-semaine/", week_view, name="cette_semaine_category"),
 | 
					 | 
				
			||||||
    path("cat:<cat>/ce-mois-ci", month_view, name="ce_mois_ci_category"),
 | 
					 | 
				
			||||||
    path("semaine/<int:year>/<int:week>/", week_view, name="week_view"),
 | 
					 | 
				
			||||||
    path("mois/<int:year>/<int:month>/", month_view, name="month_view"),
 | 
					 | 
				
			||||||
    path("jour/<int:year>/<int:month>/<int:day>/", day_view, name="day_view"),
 | 
					 | 
				
			||||||
    path("jour/", day_view, name="day_view_when"),
 | 
					 | 
				
			||||||
    path("aujourdhui/", day_view, name="aujourdhui"),
 | 
					 | 
				
			||||||
    path("a-venir/", upcoming_events, name="a_venir"),
 | 
					    path("a-venir/", upcoming_events, name="a_venir"),
 | 
				
			||||||
    path(
 | 
					    path(
 | 
				
			||||||
        "a-venir/<int:year>/<int:month>/<int:day>/",
 | 
					        "a-venir/<int:year>/<int:month>/<int:day>/",
 | 
				
			||||||
        upcoming_events,
 | 
					        upcoming_events,
 | 
				
			||||||
        name="a_venir_jour",
 | 
					        name="a_venir_jour",
 | 
				
			||||||
    ),
 | 
					    ),
 | 
				
			||||||
    path("cette-semaine/", week_view, name="cette_semaine"),
 | 
					 | 
				
			||||||
    path("ce-mois-ci", month_view, name="ce_mois_ci"),
 | 
					 | 
				
			||||||
    path("recent/", recent, name="recent"),
 | 
					    path("recent/", recent, name="recent"),
 | 
				
			||||||
    path("administration/", administration, name="administration"),
 | 
					    path("administration/", administration, name="administration"),
 | 
				
			||||||
    path(
 | 
					    path(
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,4 +1,6 @@
 | 
				
			|||||||
from .oldviews import *
 | 
					from .oldviews import *
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from .calendar_views import *
 | 
				
			||||||
from .categorisation_rules_view import *
 | 
					from .categorisation_rules_view import *
 | 
				
			||||||
from .event_duplicate_views import *
 | 
					from .event_duplicate_views import *
 | 
				
			||||||
from .errors import *
 | 
					from .errors import *
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										143
									
								
								src/agenda_culturel/views/calendar_views.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										143
									
								
								src/agenda_culturel/views/calendar_views.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,143 @@
 | 
				
			|||||||
 | 
					from datetime import date
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from django.http import (
 | 
				
			||||||
 | 
					    HttpResponseRedirect,
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					from django.shortcuts import render
 | 
				
			||||||
 | 
					from django.urls import reverse_lazy
 | 
				
			||||||
 | 
					from django.utils.timezone import datetime
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from . import upcoming_events
 | 
				
			||||||
 | 
					from .utils import get_event_qs
 | 
				
			||||||
 | 
					from ..calendar import CalendarMonth, CalendarWeek
 | 
				
			||||||
 | 
					from ..filters import EventFilter
 | 
				
			||||||
 | 
					from ..models import Category
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def day_view(request, year=None, month=None, day=None, cat=None):
 | 
				
			||||||
 | 
					    if year is None or month is None or day is None:
 | 
				
			||||||
 | 
					        if "when" in request.POST:
 | 
				
			||||||
 | 
					            when = datetime.strptime(request.POST["when"], "%Y-%m-%d")
 | 
				
			||||||
 | 
					            year = when.year
 | 
				
			||||||
 | 
					            month = when.month
 | 
				
			||||||
 | 
					            day = when.day
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            request = EventFilter.set_default_values(request)
 | 
				
			||||||
 | 
					            qs = get_event_qs(request).select_related("exact_location")
 | 
				
			||||||
 | 
					            if cat is not None:
 | 
				
			||||||
 | 
					                category = Category.objects.filter(slug=cat).first()
 | 
				
			||||||
 | 
					                qs = qs.filter(category=category)
 | 
				
			||||||
 | 
					            else:
 | 
				
			||||||
 | 
					                category = None
 | 
				
			||||||
 | 
					            filter = EventFilter(request.GET, qs, request=request)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            return HttpResponseRedirect(
 | 
				
			||||||
 | 
					                reverse_lazy("day_view", args=[year, month, day])
 | 
				
			||||||
 | 
					                + "?"
 | 
				
			||||||
 | 
					                + filter.get_url()
 | 
				
			||||||
 | 
					            )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return upcoming_events(request, year, month, day, 0, cat)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def month_view(request, year=None, month=None, cat=None):
 | 
				
			||||||
 | 
					    now = date.today()
 | 
				
			||||||
 | 
					    if year is None and month is None:
 | 
				
			||||||
 | 
					        day = now.day
 | 
				
			||||||
 | 
					    else:
 | 
				
			||||||
 | 
					        day = None
 | 
				
			||||||
 | 
					    if year is None:
 | 
				
			||||||
 | 
					        year = now.year
 | 
				
			||||||
 | 
					    if month is None:
 | 
				
			||||||
 | 
					        month = now.month
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    request = EventFilter.set_default_values(request)
 | 
				
			||||||
 | 
					    qs = get_event_qs(request).only(
 | 
				
			||||||
 | 
					        "title",
 | 
				
			||||||
 | 
					        "start_day",
 | 
				
			||||||
 | 
					        "start_time",
 | 
				
			||||||
 | 
					        "category",
 | 
				
			||||||
 | 
					        "other_versions",
 | 
				
			||||||
 | 
					        "recurrences",
 | 
				
			||||||
 | 
					        "end_day",
 | 
				
			||||||
 | 
					        "end_time",
 | 
				
			||||||
 | 
					        "uuids",
 | 
				
			||||||
 | 
					        "status",
 | 
				
			||||||
 | 
					        "tags",
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					    if cat is not None:
 | 
				
			||||||
 | 
					        category = Category.objects.filter(slug=cat).first()
 | 
				
			||||||
 | 
					        qs = qs.filter(category=category)
 | 
				
			||||||
 | 
					    else:
 | 
				
			||||||
 | 
					        category = None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    filter = EventFilter(request.GET, qs, request=request)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if filter.has_category_parameters():
 | 
				
			||||||
 | 
					        return HttpResponseRedirect(filter.get_new_url())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    cmonth = CalendarMonth(year, month, filter, day=day)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    context = {
 | 
				
			||||||
 | 
					        "calendar": cmonth,
 | 
				
			||||||
 | 
					        "this_month": day is not None,
 | 
				
			||||||
 | 
					        "filter": filter,
 | 
				
			||||||
 | 
					        "category": category,
 | 
				
			||||||
 | 
					        "init_date": now if cmonth.today_in_calendar() else cmonth.firstdate,
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return render(request, "agenda_culturel/page-month.html", context)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def week_view(request, year=None, week=None, home=False, cat=None):
 | 
				
			||||||
 | 
					    now = date.today()
 | 
				
			||||||
 | 
					    if year is None:
 | 
				
			||||||
 | 
					        year = now.isocalendar()[0]
 | 
				
			||||||
 | 
					    if week is None:
 | 
				
			||||||
 | 
					        week = now.isocalendar()[1]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    request = EventFilter.set_default_values(request)
 | 
				
			||||||
 | 
					    qs = (
 | 
				
			||||||
 | 
					        get_event_qs(request)
 | 
				
			||||||
 | 
					        .select_related("exact_location")
 | 
				
			||||||
 | 
					        .only(
 | 
				
			||||||
 | 
					            "title",
 | 
				
			||||||
 | 
					            "start_day",
 | 
				
			||||||
 | 
					            "start_time",
 | 
				
			||||||
 | 
					            "category",
 | 
				
			||||||
 | 
					            "other_versions",
 | 
				
			||||||
 | 
					            "recurrences",
 | 
				
			||||||
 | 
					            "end_day",
 | 
				
			||||||
 | 
					            "end_time",
 | 
				
			||||||
 | 
					            "uuids",
 | 
				
			||||||
 | 
					            "status",
 | 
				
			||||||
 | 
					            "tags",
 | 
				
			||||||
 | 
					            "local_image",
 | 
				
			||||||
 | 
					            "image",
 | 
				
			||||||
 | 
					            "image_alt",
 | 
				
			||||||
 | 
					            "exact_location",
 | 
				
			||||||
 | 
					            "description",
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					    if cat is not None:
 | 
				
			||||||
 | 
					        category = Category.objects.filter(slug=cat).first()
 | 
				
			||||||
 | 
					        qs = qs.filter(category=category)
 | 
				
			||||||
 | 
					    else:
 | 
				
			||||||
 | 
					        category = None
 | 
				
			||||||
 | 
					    filter = EventFilter(request.GET, qs, request=request)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if filter.has_category_parameters():
 | 
				
			||||||
 | 
					        return HttpResponseRedirect(filter.get_new_url())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    cweek = CalendarWeek(year, week, filter)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    context = {
 | 
				
			||||||
 | 
					        "year": year,
 | 
				
			||||||
 | 
					        "week": week,
 | 
				
			||||||
 | 
					        "calendar": cweek,
 | 
				
			||||||
 | 
					        "filter": filter,
 | 
				
			||||||
 | 
					        "category": category,
 | 
				
			||||||
 | 
					        "init_date": now if cweek.today_in_calendar() else cweek.firstdate,
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if home:
 | 
				
			||||||
 | 
					        context["home"] = 1
 | 
				
			||||||
 | 
					    return render(request, "agenda_culturel/page-week.html", context)
 | 
				
			||||||
@@ -21,7 +21,6 @@ from django.shortcuts import get_object_or_404, render
 | 
				
			|||||||
from django.urls import reverse, reverse_lazy
 | 
					from django.urls import reverse, reverse_lazy
 | 
				
			||||||
from django.utils.html import escape
 | 
					from django.utils.html import escape
 | 
				
			||||||
from django.utils.safestring import mark_safe
 | 
					from django.utils.safestring import mark_safe
 | 
				
			||||||
from django.utils.timezone import datetime
 | 
					 | 
				
			||||||
from django.utils.translation import gettext_lazy as _
 | 
					from django.utils.translation import gettext_lazy as _
 | 
				
			||||||
from django.views.generic import DetailView
 | 
					from django.views.generic import DetailView
 | 
				
			||||||
from django.views.generic.edit import (
 | 
					from django.views.generic.edit import (
 | 
				
			||||||
@@ -32,7 +31,7 @@ from django.views.generic.edit import (
 | 
				
			|||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from .utils import get_event_qs
 | 
					from .utils import get_event_qs
 | 
				
			||||||
from ..calendar import CalendarList, CalendarMonth, CalendarWeek
 | 
					from ..calendar import CalendarList
 | 
				
			||||||
from ..celery import (
 | 
					from ..celery import (
 | 
				
			||||||
    import_events_from_url,
 | 
					    import_events_from_url,
 | 
				
			||||||
    import_events_from_urls,
 | 
					    import_events_from_urls,
 | 
				
			||||||
@@ -131,135 +130,6 @@ to_be_translated = [
 | 
				
			|||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def month_view(request, year=None, month=None, cat=None):
 | 
					 | 
				
			||||||
    now = date.today()
 | 
					 | 
				
			||||||
    if year is None and month is None:
 | 
					 | 
				
			||||||
        day = now.day
 | 
					 | 
				
			||||||
    else:
 | 
					 | 
				
			||||||
        day = None
 | 
					 | 
				
			||||||
    if year is None:
 | 
					 | 
				
			||||||
        year = now.year
 | 
					 | 
				
			||||||
    if month is None:
 | 
					 | 
				
			||||||
        month = now.month
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    request = EventFilter.set_default_values(request)
 | 
					 | 
				
			||||||
    qs = get_event_qs(request).only(
 | 
					 | 
				
			||||||
        "title",
 | 
					 | 
				
			||||||
        "start_day",
 | 
					 | 
				
			||||||
        "start_time",
 | 
					 | 
				
			||||||
        "category",
 | 
					 | 
				
			||||||
        "other_versions",
 | 
					 | 
				
			||||||
        "recurrences",
 | 
					 | 
				
			||||||
        "end_day",
 | 
					 | 
				
			||||||
        "end_time",
 | 
					 | 
				
			||||||
        "uuids",
 | 
					 | 
				
			||||||
        "status",
 | 
					 | 
				
			||||||
        "tags",
 | 
					 | 
				
			||||||
    )
 | 
					 | 
				
			||||||
    if cat is not None:
 | 
					 | 
				
			||||||
        category = Category.objects.filter(slug=cat).first()
 | 
					 | 
				
			||||||
        qs = qs.filter(category=category)
 | 
					 | 
				
			||||||
    else:
 | 
					 | 
				
			||||||
        category = None
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    filter = EventFilter(request.GET, qs, request=request)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if filter.has_category_parameters():
 | 
					 | 
				
			||||||
        return HttpResponseRedirect(filter.get_new_url())
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    cmonth = CalendarMonth(year, month, filter, day=day)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    context = {
 | 
					 | 
				
			||||||
        "calendar": cmonth,
 | 
					 | 
				
			||||||
        "this_month": day is not None,
 | 
					 | 
				
			||||||
        "filter": filter,
 | 
					 | 
				
			||||||
        "category": category,
 | 
					 | 
				
			||||||
        "init_date": now if cmonth.today_in_calendar() else cmonth.firstdate,
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    return render(request, "agenda_culturel/page-month.html", context)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
def week_view(request, year=None, week=None, home=False, cat=None):
 | 
					 | 
				
			||||||
    now = date.today()
 | 
					 | 
				
			||||||
    if year is None:
 | 
					 | 
				
			||||||
        year = now.isocalendar()[0]
 | 
					 | 
				
			||||||
    if week is None:
 | 
					 | 
				
			||||||
        week = now.isocalendar()[1]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    request = EventFilter.set_default_values(request)
 | 
					 | 
				
			||||||
    qs = (
 | 
					 | 
				
			||||||
        get_event_qs(request)
 | 
					 | 
				
			||||||
        .select_related("exact_location")
 | 
					 | 
				
			||||||
        .only(
 | 
					 | 
				
			||||||
            "title",
 | 
					 | 
				
			||||||
            "start_day",
 | 
					 | 
				
			||||||
            "start_time",
 | 
					 | 
				
			||||||
            "category",
 | 
					 | 
				
			||||||
            "other_versions",
 | 
					 | 
				
			||||||
            "recurrences",
 | 
					 | 
				
			||||||
            "end_day",
 | 
					 | 
				
			||||||
            "end_time",
 | 
					 | 
				
			||||||
            "uuids",
 | 
					 | 
				
			||||||
            "status",
 | 
					 | 
				
			||||||
            "tags",
 | 
					 | 
				
			||||||
            "local_image",
 | 
					 | 
				
			||||||
            "image",
 | 
					 | 
				
			||||||
            "image_alt",
 | 
					 | 
				
			||||||
            "exact_location",
 | 
					 | 
				
			||||||
            "description",
 | 
					 | 
				
			||||||
        )
 | 
					 | 
				
			||||||
    )
 | 
					 | 
				
			||||||
    if cat is not None:
 | 
					 | 
				
			||||||
        category = Category.objects.filter(slug=cat).first()
 | 
					 | 
				
			||||||
        qs = qs.filter(category=category)
 | 
					 | 
				
			||||||
    else:
 | 
					 | 
				
			||||||
        category = None
 | 
					 | 
				
			||||||
    filter = EventFilter(request.GET, qs, request=request)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if filter.has_category_parameters():
 | 
					 | 
				
			||||||
        return HttpResponseRedirect(filter.get_new_url())
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    cweek = CalendarWeek(year, week, filter)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    context = {
 | 
					 | 
				
			||||||
        "year": year,
 | 
					 | 
				
			||||||
        "week": week,
 | 
					 | 
				
			||||||
        "calendar": cweek,
 | 
					 | 
				
			||||||
        "filter": filter,
 | 
					 | 
				
			||||||
        "category": category,
 | 
					 | 
				
			||||||
        "init_date": now if cweek.today_in_calendar() else cweek.firstdate,
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    if home:
 | 
					 | 
				
			||||||
        context["home"] = 1
 | 
					 | 
				
			||||||
    return render(request, "agenda_culturel/page-week.html", context)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
def day_view(request, year=None, month=None, day=None, cat=None):
 | 
					 | 
				
			||||||
    if year is None or month is None or day is None:
 | 
					 | 
				
			||||||
        if "when" in request.POST:
 | 
					 | 
				
			||||||
            when = datetime.strptime(request.POST["when"], "%Y-%m-%d")
 | 
					 | 
				
			||||||
            year = when.year
 | 
					 | 
				
			||||||
            month = when.month
 | 
					 | 
				
			||||||
            day = when.day
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            request = EventFilter.set_default_values(request)
 | 
					 | 
				
			||||||
            qs = get_event_qs(request).select_related("exact_location")
 | 
					 | 
				
			||||||
            if cat is not None:
 | 
					 | 
				
			||||||
                category = Category.objects.filter(slug=cat).first()
 | 
					 | 
				
			||||||
                qs = qs.filter(category=category)
 | 
					 | 
				
			||||||
            else:
 | 
					 | 
				
			||||||
                category = None
 | 
					 | 
				
			||||||
            filter = EventFilter(request.GET, qs, request=request)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            return HttpResponseRedirect(
 | 
					 | 
				
			||||||
                reverse_lazy("day_view", args=[year, month, day])
 | 
					 | 
				
			||||||
                + "?"
 | 
					 | 
				
			||||||
                + filter.get_url()
 | 
					 | 
				
			||||||
            )
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    return upcoming_events(request, year, month, day, 0, cat)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
def upcoming_events(request, year=None, month=None, day=None, neighsize=1, cat=None):
 | 
					def upcoming_events(request, year=None, month=None, day=None, neighsize=1, cat=None):
 | 
				
			||||||
    now = date.today()
 | 
					    now = date.today()
 | 
				
			||||||
    if year is None:
 | 
					    if year is None:
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user