summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkeroth <keroth@janssen-jan.de>2015-05-10 00:10:26 +0200
committerkeroth <keroth@janssen-jan.de>2015-05-10 00:10:26 +0200
commitc7fd8c443357879aab51134e6679ace45baec103 (patch)
tree29b8e55b352ea8b22207cc6bb8b9ebb8d97745a9
parentb518d7011419a3c9e5d2352eab21020cb6031d29 (diff)
downloadktt-inventory-system-c7fd8c443357879aab51134e6679ace45baec103.tar.bz2
Added file support
-rw-r--r--inventar/templates/base.html3
-rw-r--r--inventar/templates/item.html6
-rw-r--r--inventar/templates/upload.html20
-rw-r--r--inventar/urls.py3
-rw-r--r--inventory/forms.py9
-rw-r--r--inventory/models.py11
-rw-r--r--inventory/views.py63
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(),