forked from rc/aircox
cfr #121 Co-authored-by: Christophe Siraut <d@tobald.eu.org> Co-authored-by: bkfox <thomas bkfox net> Co-authored-by: Thomas Kairos <thomas@bkfox.net> Reviewed-on: rc/aircox#131 Co-authored-by: Chris Tactic <ctactic@noreply.git.radiocampus.be> Co-committed-by: Chris Tactic <ctactic@noreply.git.radiocampus.be>
This commit is contained in:
@ -12,9 +12,9 @@ class GetDateMixin:
|
||||
date = None
|
||||
redirect_date_url = None
|
||||
|
||||
def get_date(self):
|
||||
date = self.request.GET.get("date")
|
||||
return str_to_date(date, "-") if date is not None else self.kwargs["date"] if "date" in self.kwargs else None
|
||||
def get_date(self, param="date"):
|
||||
date = self.request.GET.get(param)
|
||||
return str_to_date(date, "-") if date else self.kwargs[param] if param in self.kwargs else None
|
||||
|
||||
def get(self, *args, **kwargs):
|
||||
if self.redirect_date_url and self.request.GET.get("date"):
|
||||
@ -23,7 +23,7 @@ class GetDateMixin:
|
||||
date=self.request.GET["date"].replace("-", "/"),
|
||||
)
|
||||
|
||||
self.date = self.get_date()
|
||||
self.date = self.get_date("date")
|
||||
return super().get(*args, **kwargs)
|
||||
|
||||
|
||||
@ -44,16 +44,16 @@ class ParentMixin:
|
||||
parent = None
|
||||
"""Parent page object."""
|
||||
|
||||
def get_parent(self, request, *args, **kwargs):
|
||||
def get_parent(self, request, **kwargs):
|
||||
if self.parent_model is None or self.parent_url_kwarg not in kwargs:
|
||||
return
|
||||
|
||||
lookup = {self.parent_field: kwargs[self.parent_url_kwarg]}
|
||||
return get_object_or_404(self.parent_model.objects.select_related("cover"), **lookup)
|
||||
|
||||
def get(self, request, *args, **kwargs):
|
||||
self.parent = self.get_parent(request, *args, **kwargs)
|
||||
return super().get(request, *args, **kwargs)
|
||||
def dispatch(self, request, *args, **kwargs):
|
||||
self.parent = self.get_parent(request, **kwargs)
|
||||
return super().dispatch(request, *args, **kwargs)
|
||||
|
||||
def get_queryset(self):
|
||||
if self.parent is not None:
|
||||
@ -61,9 +61,10 @@ class ParentMixin:
|
||||
return super().get_queryset()
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
self.parent = kwargs.setdefault("parent", self.parent)
|
||||
if self.parent is not None:
|
||||
kwargs.setdefault("cover", self.parent.cover)
|
||||
parent = kwargs.setdefault("parent", self.parent)
|
||||
|
||||
if parent is not None and parent.cover:
|
||||
kwargs.setdefault("cover", parent.cover.url)
|
||||
return super().get_context_data(**kwargs)
|
||||
|
||||
|
||||
@ -107,3 +108,42 @@ class FiltersMixin:
|
||||
params = self.request.GET.copy()
|
||||
kwargs["get_params"] = params.pop("page", True) and params
|
||||
return super().get_context_data(**kwargs)
|
||||
|
||||
|
||||
class VueFormDataMixin:
|
||||
"""Provide form information as data to be used with vue components."""
|
||||
|
||||
# Note: values corresponds to AFormSet expected one
|
||||
|
||||
def get_form_items(self, formset):
|
||||
return [form.initial for form in formset.forms]
|
||||
|
||||
def get_form_field_data(self, form, values=None):
|
||||
"""Return form fields as data."""
|
||||
model = form.Meta.model
|
||||
fields = ((name, field, model._meta.get_field(name)) for name, field in form.base_fields.items())
|
||||
return [
|
||||
{
|
||||
"name": name,
|
||||
"label": str(m_field.verbose_name).capitalize(),
|
||||
"help": str(m_field.help_text).capitalize(),
|
||||
"hidden": field.widget.is_hidden,
|
||||
"value": values and values.get(name),
|
||||
}
|
||||
for name, field, m_field in fields
|
||||
]
|
||||
|
||||
def get_formset_data(self, formset, field_values=None, **kwargs):
|
||||
"""Return formset as data object."""
|
||||
return {
|
||||
"prefix": formset.prefix,
|
||||
"management": {
|
||||
"initial_forms": formset.initial_form_count(),
|
||||
"min_num_forms": formset.min_num,
|
||||
"max_num_forms": formset.max_num,
|
||||
},
|
||||
"fields": self.get_form_field_data(formset.form, field_values),
|
||||
"initial_extra": formset.initial_extra and formset.initial_extra[0],
|
||||
"initials": self.get_form_items(formset),
|
||||
**kwargs,
|
||||
}
|
||||
|
Reference in New Issue
Block a user