Modify Objects

+ sort the object list
+ alter objects
+ delete objects
This commit is contained in:
Clemens-Dautermann 2018-12-26 23:41:37 +01:00
parent 32d60f51ac
commit 51c942746b
6 changed files with 249 additions and 27 deletions

View file

@ -1,6 +1,9 @@
from django.urls import path
from . import views
import uuid
urlpatterns = [
path('', views.objlist, name='objlist'),
path('<str:orderstr>', views.objlist, name='objlist_ordered'),
path('<str:uuid_url>/delete', views.delete, name='del_obj')
]

View file

@ -1,13 +1,80 @@
from django.shortcuts import render
from object_adder.models import Object
from django.shortcuts import render, get_object_or_404
from object_adder.models import Object, Category
from object_adder.forms import ObjectForm
from django.contrib.auth.decorators import login_required
import re
# Create your views here.
@login_required
def objlist(request):
def objlist(request, orderstr=None):
uuidv4pattern = r"(\d|[a-z]){8}-(\d|[a-z]){4}-4(\d|[a-z]){3}-(\d|[a-z]){4}-(\d|[a-z]){12}"
objects = Object.objects.all()
if request.method == 'GET':
context = {'title': 'Inventar', 'objects': objects}
return render(request, 'object_lister/index.html', context)
if orderstr is None:
objects = Object.objects.all()
elif orderstr == '0':
objects = Object.objects.all().order_by('title')
elif orderstr == '1':
objects = Object.objects.all().order_by('ammout')
elif orderstr == '2':
objects = Object.objects.all().order_by('category')
elif orderstr == '3':
objects = Object.objects.all().order_by('inventarized_date')
elif orderstr == '4':
objects = Object.objects.all().order_by('user_added')
else:
result = re.fullmatch(uuidv4pattern, orderstr)
if result is None:
objects = Object.objects.all()
else:
uuid = result.group(0)
obj = get_object_or_404(Object, pk=uuid)
form = ObjectForm(
initial={'ammout': obj.ammout, 'title': obj.title, 'description': obj.description,
'category': obj.category}
)
context = {'title': 'Details', 'obj': obj, 'form': form}
return render(request, 'object_lister/details.html', context)
categories = Category.categories.all()
context = {'title': 'Inventar', 'objects': objects, 'objammout': len(objects), 'categories': categories,
'ncats': len(categories)}
return render(request, 'object_lister/index.html', context)
elif request.method == 'POST':
form = ObjectForm(request.POST)
if form.is_valid():
result = re.fullmatch(uuidv4pattern, orderstr)
uuid = result.group(0)
obj = get_object_or_404(Object, pk=uuid)
obj.ammout = form.cleaned_data['ammout']
obj.title = form.cleaned_data['title']
obj.description = form.cleaned_data['description']
obj.category = form.cleaned_data['category']
obj.save()
form = ObjectForm(
initial={'ammout': obj.ammout, 'title': obj.title, 'description': obj.description,
'category': obj.category}
)
context = {'title': 'Details', 'obj': obj, 'form': form, 'message': 'changed'}
return render(request, 'object_lister/details.html', context)
@login_required
def delete(request, uuid_url):
obj = get_object_or_404(Object, pk=uuid_url)
obj.delete()
return render(request, 'object_lister/delete.html', {'uuid': uuid_url})