From 6c23d30897fc02fa812d51eab7955fc4e067f35b Mon Sep 17 00:00:00 2001 From: Seth Ladygo Date: Fri, 2 Aug 2019 15:40:51 -0700 Subject: [PATCH] add quickinfo app --- procat2/settings.py | 1 + procat2/urls.py | 2 + quickinfo/__init__.py | 0 quickinfo/apps.py | 5 ++ quickinfo/migrations/__init__.py | 0 quickinfo/tests.py | 26 ++++++++++ quickinfo/urls.py | 8 +++ quickinfo/views.py | 37 ++++++++++++++ templates/quickinfo/result.html | 85 ++++++++++++++++++++++++++++++++ templates/quickinfo/search.html | 24 +++++++++ 10 files changed, 188 insertions(+) create mode 100644 quickinfo/__init__.py create mode 100644 quickinfo/apps.py create mode 100644 quickinfo/migrations/__init__.py create mode 100644 quickinfo/tests.py create mode 100644 quickinfo/urls.py create mode 100644 quickinfo/views.py create mode 100644 templates/quickinfo/result.html create mode 100644 templates/quickinfo/search.html diff --git a/procat2/settings.py b/procat2/settings.py index 3618e33..67e2223 100644 --- a/procat2/settings.py +++ b/procat2/settings.py @@ -102,6 +102,7 @@ INSTALLED_APPS = [ 'procat2', 'dashboard', 'products', + 'quickinfo', ] MIDDLEWARE = [ diff --git a/procat2/urls.py b/procat2/urls.py index 143e885..a2334b1 100644 --- a/procat2/urls.py +++ b/procat2/urls.py @@ -48,6 +48,8 @@ urlpatterns = [ path("account/", include("account.urls")), path('convert/', convert, { 'form_class': UserCreationForm }, name='lazysignup_convert'), path('convert/done/', lazy_convert_done, name='lazysignup_convert_done'), + + path('quickinfo/', include('quickinfo.urls')), ] if settings.DJDT: diff --git a/quickinfo/__init__.py b/quickinfo/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/quickinfo/apps.py b/quickinfo/apps.py new file mode 100644 index 0000000..204220b --- /dev/null +++ b/quickinfo/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class QuickinfoConfig(AppConfig): + name = 'quickinfo' diff --git a/quickinfo/migrations/__init__.py b/quickinfo/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/quickinfo/tests.py b/quickinfo/tests.py new file mode 100644 index 0000000..1d09bfd --- /dev/null +++ b/quickinfo/tests.py @@ -0,0 +1,26 @@ +from django.test import SimpleTestCase + +from . import views + + +class IDCleanTest(SimpleTestCase): + + def test_clean_nothing(self): + self.assertEqual(None, views.clean_id(None)) + + def test_clean_digit(self): + self.assertEqual('1', views.clean_id('1')) + + def test_clean_character(self): + self.assertEqual(None, views.clean_id('a')) + + def test_clean_digits(self): + self.assertEqual('123456', views.clean_id('123456')) + + def test_clean_digits_space(self): + self.assertEqual('123456', views.clean_id("\t 123456 \t ")) + + def test_clean_multiple(self): + self.assertEqual('123456', views.clean_id('123456 2')) + self.assertEqual('123456', views.clean_id('123456,2')) + self.assertEqual('123456', views.clean_id('123456b2x')) diff --git a/quickinfo/urls.py b/quickinfo/urls.py new file mode 100644 index 0000000..206515d --- /dev/null +++ b/quickinfo/urls.py @@ -0,0 +1,8 @@ +from django.urls import path + +from . import views + +urlpatterns = [ + path('search', views.search, name='quickinfo_search'), + path('result', views.result, name='quickinfo_result'), +] diff --git a/quickinfo/views.py b/quickinfo/views.py new file mode 100644 index 0000000..63a0ce9 --- /dev/null +++ b/quickinfo/views.py @@ -0,0 +1,37 @@ +import re + +from django.shortcuts import render, get_object_or_404 +from django.core.exceptions import ObjectDoesNotExist + +from products.models import Product, ProductImage, ProductImageFormat + + +def search(request): + return render(request, 'quickinfo/search.html') + + +def result(request): + id = clean_id(request.GET['id']) + + context = { + 'id': id, + } + + try: + context['prod'] = Product.objects.filter(sap=id).first() + except ObjectDoesNotExist: + context['prod'] = None + + context['image'] = ProductImage.get_image_url(id, ProductImageFormat.MED_JPG) + + return render(request, 'quickinfo/result.html', context) + + +def clean_id(text): + if not text: return None + + words = list(filter(None, re.compile(r'[^\d]').split(text))) + if len(words): + return words[0] + else: + return None diff --git a/templates/quickinfo/result.html b/templates/quickinfo/result.html new file mode 100644 index 0000000..37f599c --- /dev/null +++ b/templates/quickinfo/result.html @@ -0,0 +1,85 @@ +{% load staticfiles i18n %} + + + + + + {{ settings.CUSTOMER_NAME }} ProCatalog: {% trans "Material Search"%}: {{ id }} + + + + +
+ + {% if image %} +
+ +
+ {% else %} +

Image not found

+ {% endif %} +
+ {% if prod %} +

{{ prod.name }}

+

{{ prod.sap }}

+

{{ prod.gender | title }} {{ prod.category | title }}

+

{{ prod.color }}

+ {% else %} +

{{ id }}

+

No data

+ {% endif %} +
+
+ + diff --git a/templates/quickinfo/search.html b/templates/quickinfo/search.html new file mode 100644 index 0000000..5365fc2 --- /dev/null +++ b/templates/quickinfo/search.html @@ -0,0 +1,24 @@ +{% load staticfiles i18n %} + + + + + + {{ settings.CUSTOMER_NAME }} ProCatalog: {% trans "Material Search"%} + + + + + {% trans "KEEN Quick Image Search" %} + {% trans "please input material number" %} +
+ + +
+ +