From c7fd8c443357879aab51134e6679ace45baec103 Mon Sep 17 00:00:00 2001 From: keroth Date: Sun, 10 May 2015 00:10:26 +0200 Subject: Added file support --- inventory/forms.py | 9 ++++++++ inventory/models.py | 11 ++++++++++ inventory/views.py | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 83 insertions(+) create mode 100644 inventory/forms.py (limited to 'inventory') diff --git a/inventory/forms.py b/inventory/forms.py new file mode 100644 index 0000000..264f8cb --- /dev/null +++ b/inventory/forms.py @@ -0,0 +1,9 @@ +from django import forms + + +class UploadFileForm(forms.Form): + + types = (('1', 'Parent Tree'), ('2', 'Regal')) + + file = forms.FileField() + type = forms.ChoiceField(widget=forms.RadioSelect, choices=types) \ No newline at end of file diff --git a/inventory/models.py b/inventory/models.py index 6dfd7f6..f9069df 100644 --- a/inventory/models.py +++ b/inventory/models.py @@ -98,6 +98,17 @@ class Item(models.Model): return true return false + def add_shelf(self, code): + + self.name = 'Regalborte' + self.description = 'Borte im Hochregal \n Reihe: ' + code[1] + 'Regal: ' + code[2] + self.business_area = BusinessArea.objects.get(name='ideell') + self.category = Category.objects.get(name='Inventar') + self.parent = Barcode.objects.get(code='H0000') + self.inUse = 'X' + self.tag = Tag.objects.get(name='Regale & Storage') + self.save() + def __unicode__(self): return _(u"%(name)s (codes: %(barcodes)s)") % {'name': self.name, 'barcodes': self.barcodes()} diff --git a/inventory/views.py b/inventory/views.py index 77630d3..263e3ec 100644 --- a/inventory/views.py +++ b/inventory/views.py @@ -1,14 +1,21 @@ from django.shortcuts import get_object_or_404 from django.utils.translation import ugettext_lazy as _ from django.shortcuts import render_to_response +from django.shortcuts import render from django.http import HttpResponse from django.db.models import Q import models from django.core.mail import mail_admins +from forms import UploadFileForm +from django.core.exceptions import ObjectDoesNotExist +from models import Barcode + + def home(request): return render_to_response('home.html') + def item(request, selectedid): p = get_object_or_404(models.Barcode, pk=selectedid.upper()) @@ -58,6 +65,7 @@ def item(request, selectedid): } return render_to_response('item.html', parameters) + def search(request, term): results = models.Item.objects.filter(Q(name__contains = term) | Q(description__contains = term)) @@ -66,6 +74,7 @@ def search(request, term): "results": results }) + def graph(request): items = models.Item.objects.all() @@ -74,6 +83,60 @@ def graph(request): return result + +def upload(request): + #if request.method == 'POST': + form = UploadFileForm(request.POST, request.FILES) + if form.is_valid(): + codefile = request.FILES['file'] + data = codefile.read().splitlines() + + if request.POST['type'] == '1': + parent = '' + for code in data: + if code != 'NEWPARENT': + if parent == '': + p = get_object_or_404(models.Barcode, pk=code.upper()) + parent = code + else: + i = get_object_or_404(models.Barcode, pk=code.upper()) + i.item.parent = p.item + i.item.save() + else: + parent = '' + elif request.POST['type'] == '2': + print('Regal') + index = 0 + error = 0 + business_area = models.BusinessArea.objects.get(name='ideell') + category = models.Category.objects.get(name='Inventar') + parent = models.Barcode.objects.get(code='H0000') + tag = models.Tag.objects.get(name='Regale & Storage') + + for code in data: + if code[0] == 'H' and len(code) == 5: + try: + b = Barcode.objects.get(code=code.upper()) + error += 1 + data[index] = code + ' existiert bereits' + except ObjectDoesNotExist: + print('Yay!') + description = 'Borte im Hochregal \nReihe: ' + code[1] + '\nRegal: ' + code[2] + i = models.Item(name='Regalborte', description=description, business_area=business_area, category=category, parent=parent.item) + i.save() + barcode = Barcode(code=code, item=i) + barcode.save() + print(i) + else: + data[index] = code + ' ist nicht im richtigen Format' + error += 1 + index += 1 + return render(request, 'upload.html', {'form': form, 'data': data}) + else: + form = UploadFileForm() + return render(request, 'upload.html', {'form': form}) + + def stats(request): return render_to_response('stats.html', { "number_of_codes": models.Barcode.objects.count(), -- cgit v1.2.3