diff --git a/partdoc/partdoc/settings.py b/partdoc/partdoc/settings.py
index 31adb7d..94ae01c 100644
--- a/partdoc/partdoc/settings.py
+++ b/partdoc/partdoc/settings.py
@@ -45,7 +45,7 @@ MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
- 'django.middleware.csrf.CsrfViewMiddleware',
+ #'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
@@ -125,3 +125,7 @@ USE_TZ = True
STATIC_URL = '/static/'
STATIC_ROOT = 'static/'
+
+
+
+DATA_UPLOAD_MAX_NUMBER_FIELDS = 10000
\ No newline at end of file
diff --git a/partdoc/parts/models.py b/partdoc/parts/models.py
index d91dc22..8db21ce 100644
--- a/partdoc/parts/models.py
+++ b/partdoc/parts/models.py
@@ -67,7 +67,7 @@ class Part(PartModel):
class BrandedPart(PartModel):
part = models.ForeignKey(Part, null=True)
brand = models.ForeignKey(Brand)
- number = models.CharField(max_length=32, unique=True, blank=True, null=True)
+ number = models.CharField(max_length=64, unique=True, blank=True, null=True)
def get_name(self):
return self.part.name if self.part else "--None--"
@@ -105,4 +105,4 @@ class ProductUsage(PartModel):
def __str__(self):
no = self.usage.part.number if self.usage else "--(part.number)--"
- return "ProductUsage: " + self.product.name + " @ " + str(self.quantity) + "; "+ str(no)
\ No newline at end of file
+ return "ProductUsage: " + self.product.name + " @ " + str(self.quantity) + "; "+ str(no)
diff --git a/partdoc/parts/static/parts/add_sketch.js b/partdoc/parts/static/parts/add_sketch.js
index ad00576..f82f9a3 100644
--- a/partdoc/parts/static/parts/add_sketch.js
+++ b/partdoc/parts/static/parts/add_sketch.js
@@ -3,7 +3,14 @@ function addRow(){
var clone = src.cloneNode(true);
clone.id = "";
clone.className ="entry";
- clone.children[0].children[0].value = document.getElementsByClassName("entry").length + 1
+
+ var rows = $('#table > tr:last-child > td > input[name="fignumber"]');
+ var fignumber = 1;
+ if (rows.length){
+ fignumber = parseInt(rows[0].value) + 1;
+ }
+
+ clone.children[0].children[0].value = fignumber;
document.getElementById("table").appendChild(clone);
var number = $("input[name|='partnumber']", clone);
diff --git a/partdoc/parts/templates/parts/add.html b/partdoc/parts/templates/parts/add.html
index 724cde0..e2feecd 100644
--- a/partdoc/parts/templates/parts/add.html
+++ b/partdoc/parts/templates/parts/add.html
@@ -1,34 +1,64 @@
{% load static %}
-
-
-
-
+
+
+
+
-
add sketch to {{product.name}}
+{% if sketch.id %}
+ {% url "parts:continue_sketch" sketch.product_id sketch.id as form_action %}
+{% else %}
+ {% url 'parts:new_sketch' product.id as form_action %}
+{% endif %}
-
+
add sketch to {{ product.name }}
+
+
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/partdoc/parts/templates/parts/sketch.html b/partdoc/parts/templates/parts/sketch.html
index 4676218..cc4fb29 100644
--- a/partdoc/parts/templates/parts/sketch.html
+++ b/partdoc/parts/templates/parts/sketch.html
@@ -6,4 +6,6 @@
{% endfor %}
{{sketch.get_brand}}
-
{{sketch.get_brand.name.foo}}
\ No newline at end of file
+
{{sketch.get_brand.name.foo}}
+
+Edit
\ No newline at end of file
diff --git a/partdoc/parts/urls.py b/partdoc/parts/urls.py
index 37b7f6e..ded6360 100644
--- a/partdoc/parts/urls.py
+++ b/partdoc/parts/urls.py
@@ -7,6 +7,7 @@ urlpatterns = [
url(r'^$', views.index, name="index"),
url(r'^product/(?P[0-9]+)/$', views.product, name="detail"),
url(r'^sketch/(?P[0-9]+)/$', views.sketch, name="sketch"),
+ url(r'^add/(?P[0-9]+)/sketch/(?P[0-9]+)', views.sketch_add, name="continue_sketch"),
url(r'^add/(?P[0-9]+)/sketch', views.sketch_add, name="new_sketch"),
url(r'^search/part/$', views.part_search, name="part_search"),
]
\ No newline at end of file
diff --git a/partdoc/parts/views.py b/partdoc/parts/views.py
index 290cadd..f518dc4 100644
--- a/partdoc/parts/views.py
+++ b/partdoc/parts/views.py
@@ -43,12 +43,15 @@ def part_search(request):
return HttpResponse("404")
@transaction.atomic
-def sketch_add(request, product_id):
+def sketch_add(request, product_id, sketch_id=None):
product = get_object_or_404(Product, pk=product_id)
- print(request.POST)
+ print(sketch_id)
+ if sketch_id:
+ sketch = Sketch.objects.get(id=sketch_id)
+ else:
+ sketch = Sketch()
if not "sketch_name" in request.POST:
- return render(request, 'parts/add.html', {'product': product})
- sketch = Sketch()
+ return render(request, 'parts/add.html', {'product': product, "sketch": sketch})
sketch.name = request.POST["sketch_name"]
sketch.product = product
sketch.brand = product.brand
@@ -56,15 +59,14 @@ def sketch_add(request, product_id):
for i in range(len(request.POST.getlist('name'))):
print(i)
usage = Usage()
- print("ASDF2")
usage.sketch = sketch
usage.sketch_number = request.POST.getlist('fignumber')[i]
- if "ähn" in usage.sketch_number or "vgl" in usage.sketch_number:
- usage.exact_sketch = False
-
- print("ASDF3")
- branded_part, created = BrandedPart.objects.get_or_create(brand=product.brand, number=request.POST.getlist('partnumber')[i])
- print("ASDF", branded_part, created)
+ usage.exact_sketch = is_exact_sketchnumber(usage.sketch_number)
+
+ part_number = request.POST.getlist('partnumber')[i]
+ if len(part_number)<1:
+ continue
+ branded_part, created = BrandedPart.objects.get_or_create(brand=product.brand, number=part_number)
if created:
try:
part, _ = Part.objects.get_or_create(name=request.POST.getlist('name')[i])
@@ -73,14 +75,13 @@ def sketch_add(request, product_id):
branded_part.part = part
branded_part.brand = product.brand
branded_part.save()
- print("ASDF")
usage.part = branded_part
usage.save()
prod = ProductUsage()
prod.usage = usage
prod.product = product
- prod.quantity = int(request.POST.getlist('quantity')[i])
+ prod.quantity = get_quantity(request.POST.getlist('quantity')[i].strip())
last_version = request.POST.getlist('last_version')[i]
if len(last_version):
version, _ = Version.objects.get_or_create(product=product, name=last_version)
@@ -96,10 +97,21 @@ def sketch_add(request, product_id):
if len(replaced):
#replacement, _ = ProductUsage.objects.get_or_create(product=product, usage__part__number=replaced)
#prod.replaced_by = replacement
- prod.note+= "{REP:"+str(replaced)+"}"
+ prod.note+= "{REP:"+str(replaced)+"}" #TODO
internal = request.POST.getlist('internal')[i]
if len(internal):
prod.internal = internal
prod.save()
- return HttpResponseRedirect(reverse('parts:sketch', args=(sketch.id,)))
\ No newline at end of file
+ return HttpResponseRedirect(reverse('parts:sketch', args=(sketch.id,)))
+
+
+def get_quantity(qnty_str):
+ qnty = 0
+ if len(qnty_str):
+ qnty = int(qnty_str)
+ return qnty
+
+def is_exact_sketchnumber(sketch_number):
+ approximate = ("ähn", "vgl", "~", "zu")
+ return not any([i in sketch_number for i in approximate])
\ No newline at end of file
diff --git a/requirements.txt b/requirements.txt
deleted file mode 100644
index 2796b7c..0000000
--- a/requirements.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-django
-psycopg2
-django-extensions