Consolidated Views
This commit is contained in:
0
lib/__init__.py
Normal file
0
lib/__init__.py
Normal file
79
lib/views.py
Normal file
79
lib/views.py
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
from django.shortcuts import render, redirect, get_object_or_404
|
||||||
|
from django.views import View
|
||||||
|
from django.views.generic.base import TemplateView
|
||||||
|
from django.forms.models import model_to_dict
|
||||||
|
from django import forms
|
||||||
|
from django.db import models
|
||||||
|
from django.http import HttpResponse, HttpResponseBadRequest
|
||||||
|
from django.urls import reverse
|
||||||
|
# from .models import Event
|
||||||
|
# from .forms import EventForm
|
||||||
|
from django.http import HttpResponse
|
||||||
|
|
||||||
|
|
||||||
|
class BenchcoachListView(TemplateView):
|
||||||
|
Model = models.Model
|
||||||
|
template_name = 'list.html'
|
||||||
|
edit_url = 'edit item'
|
||||||
|
list_url = 'items list'
|
||||||
|
template_name = 'list.html'
|
||||||
|
page_title = f"{Model.__name__}s"
|
||||||
|
title_strf = "{item}"
|
||||||
|
subtitle_strf = ""
|
||||||
|
body_strf = ""
|
||||||
|
|
||||||
|
def get_context_data(self):
|
||||||
|
items = self.Model.objects.all()
|
||||||
|
context = {
|
||||||
|
'title': self.page_title,
|
||||||
|
'items': [
|
||||||
|
{
|
||||||
|
'id': item.id,
|
||||||
|
'title': self.title_strf.format(item=item, **model_to_dict(item)),
|
||||||
|
'subtitle': self.subtitle_strf.format(item=item, **model_to_dict(item)),
|
||||||
|
'body': self.body_strf.format(item=item, **model_to_dict(item)),
|
||||||
|
'buttons': [
|
||||||
|
{
|
||||||
|
'label': 'Edit',
|
||||||
|
'href': reverse(self.edit_url, args=[item.id])
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
for item in items
|
||||||
|
]
|
||||||
|
}
|
||||||
|
return context
|
||||||
|
|
||||||
|
class BenchcoachEditView(TemplateView):
|
||||||
|
Form: forms.ModelForm = None
|
||||||
|
Model: models.Model = None
|
||||||
|
edit_url = 'edit item'
|
||||||
|
list_url = 'items list'
|
||||||
|
|
||||||
|
def post(self, request, *args, **kwargs):
|
||||||
|
id = kwargs.get('id')
|
||||||
|
# create a form instance and populate it with data from the request:
|
||||||
|
if id:
|
||||||
|
instance = get_object_or_404(self.Model, id=id)
|
||||||
|
form = self.Form(request.POST or None, instance=instance)
|
||||||
|
else:
|
||||||
|
form = self.Form(request.POST or None)
|
||||||
|
# check whether it's valid:
|
||||||
|
if form.is_valid():
|
||||||
|
# process the data in form.cleaned_data as required
|
||||||
|
# ...
|
||||||
|
# redirect to a new URL:
|
||||||
|
new_item, did_create = self.Model.objects.update_or_create(pk=id, defaults=form.cleaned_data)
|
||||||
|
return render(request, 'success.html', {'call_back_url': reverse(self.list_url), 'id': new_item.id},
|
||||||
|
status=201 if did_create else 200)
|
||||||
|
return HttpResponseBadRequest()
|
||||||
|
|
||||||
|
def get(self, request, *args, **kwargs):
|
||||||
|
pass
|
||||||
|
id = kwargs.get('id')
|
||||||
|
if id:
|
||||||
|
instance = get_object_or_404(self.Model, id=id)
|
||||||
|
form = self.Form(request.POST or None, instance=instance)
|
||||||
|
else:
|
||||||
|
form = self.Form
|
||||||
|
return render(request, 'edit.html', {'form': form, 'id': id, 'call_back': self.edit_url})
|
||||||
Reference in New Issue
Block a user