diff options
author | keroth <keroth@janssen-jan.de> | 2015-05-10 00:10:26 +0200 |
---|---|---|
committer | keroth <keroth@janssen-jan.de> | 2015-05-10 00:10:26 +0200 |
commit | c7fd8c443357879aab51134e6679ace45baec103 (patch) | |
tree | 29b8e55b352ea8b22207cc6bb8b9ebb8d97745a9 | |
parent | b518d7011419a3c9e5d2352eab21020cb6031d29 (diff) | |
download | ktt-inventory-system-c7fd8c443357879aab51134e6679ace45baec103.tar.bz2 |
Added file support
-rw-r--r-- | inventar/templates/base.html | 3 | ||||
-rw-r--r-- | inventar/templates/item.html | 6 | ||||
-rw-r--r-- | inventar/templates/upload.html | 20 | ||||
-rw-r--r-- | inventar/urls.py | 3 | ||||
-rw-r--r-- | inventory/forms.py | 9 | ||||
-rw-r--r-- | inventory/models.py | 11 | ||||
-rw-r--r-- | inventory/views.py | 63 |
7 files changed, 110 insertions, 5 deletions
diff --git a/inventar/templates/base.html b/inventar/templates/base.html index 6883023..8304687 100644 --- a/inventar/templates/base.html +++ b/inventar/templates/base.html @@ -16,10 +16,11 @@ <li><a href="{% url "home" %}"><img src="/static/home.svg" width="24" height="24" /> {% trans "Home" %}</a></li> <li><a href="{% url "admin:index" %}"><img src="/static/admin.svg" width="24" height="24" /> {% trans "Admin Area" %}</a></li> <li><a href="{% url "stats" %}"><img src="/static/stats.svg" width="24" height="24" /> {% trans "Statistics" %}</a></li> + <li><a href="{% url "upload" %}"><img src="/static/stats.svg" width="24" height="24" /> {% trans "Upload" %}</a></li> <li><br></li> <li>{% trans "Search Item" %}: <ul> - <li><form action="?" target="_self" id="itemchooser" onsubmit="location.assign('/item/'+document.forms['itemchooser']['id'].value+'/'); return false;"><input maxlength="5" name="id" type="text" title="{% trans "Get Item by ID" %}"/></form></li> + <li><form action="?" target="_self" id="itemchooser" onsubmit="location.assign('/item/'+document.forms['itemchooser']['id'].value+'/'); return false;"><input maxlength="4" name="id" type="text" title="{% trans "Get Item by ID" %}"/></form></li> <li><form action="?" target="_self" id="itemsearch" onsubmit="location.assign('/search/'+document.forms['itemsearch']['term'].value+'/'); return false;"><input name="term" type="text" title="{% trans "Search Item by Name and Description" %}"/></form></li> </ul> </li> diff --git a/inventar/templates/item.html b/inventar/templates/item.html index 86845e3..28343e0 100644 --- a/inventar/templates/item.html +++ b/inventar/templates/item.html @@ -3,7 +3,7 @@ {% block content %} {% if user.is_authenticated %} - <h1>{{ name }} <a href="{% url admin:inventory_item_change id %}"><img src="/static/edit.svg" width="20" height="20" alt="[edit]"/></a></h1> + <h1>{{ name }} <a href="{% url "admin:inventory_item_change" id %}"><img src="/static/edit.svg" width="20" height="20" alt="[edit]"/></a></h1> {% else %} <h1>{{ name }}</h1> {% endif %} @@ -52,7 +52,7 @@ <td> {% for p in parentpath %} {% if p.one_barcode %} - <ul class="path"><li><a href="{% url item selectedid=p.one_barcode %}">{{ p.name }} [{{ p.barcodes }}]</a> + <ul class="path"><li><a href="{% url "item selectedid=p.one_barcode" %}">{{ p.name }} [{{ p.barcodes }}]</a> {% else %} <ul class="path"><li>{{ p.name }} [{{ p.barcodes }}] {% endif %} @@ -69,7 +69,7 @@ <td> {% for p in temporary_parentpath %} {% if p.one_barcode %} - <ul class="path"><li><a href="{% url item selectedid=p.one_barcode %}">{{ p.name }} [{{ p.barcodes }}]</a> + <ul class="path"><li><a href="{% url "item selectedid=p.one_barcode" %}">{{ p.name }} [{{ p.barcodes }}]</a> {% else %} <ul class="path"><li>{{ p.name }} [{{ p.barcodes }}] {% endif %} diff --git a/inventar/templates/upload.html b/inventar/templates/upload.html new file mode 100644 index 0000000..5371020 --- /dev/null +++ b/inventar/templates/upload.html @@ -0,0 +1,20 @@ +{% extends "base.html" %} +{% load i18n %} + +{% block content %} + {% if user.is_authenticated %} + <h2>Upload new Parent Tree:</h2> + + <form enctype="multipart/form-data" method="post" action="/upload/">{% csrf_token %} + {{form}} + <input type="submit" value="Submit" /> + <ul class="path"> + {% for code in data %} + <li>{{ code }} + {% endfor %} + {% for code in data %} + </li> + {% endfor %} + </ul> + {% endif %} +{% endblock %} diff --git a/inventar/urls.py b/inventar/urls.py index 23a2d4b..ffb1757 100644 --- a/inventar/urls.py +++ b/inventar/urls.py @@ -10,16 +10,17 @@ from inventory.views import item from inventory.views import search from inventory.views import graph from inventory.views import stats +from inventory.views import upload urlpatterns = patterns('', url(r'^$', home, name='home'), - #(r'^openid/', include('django_openid_auth.urls')), url(r'^item/(?P<selectedid>[0-9A-Za-z]{4})/$', item, name='item'), url(r'^search/(?P<term>[^/]+)/$', search, name='search'), url(r'^graph/$', graph, name='graph'), url(r'^stats/$', stats, name='stats'), + url(r'^upload/$', upload, name='upload'), url(r'^admin/', include(admin.site.urls)), ) + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) 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(), |