diff --git a/django/didgeridoo/didgeridoo/urls.py b/django/didgeridoo/didgeridoo/urls.py index ae9b924..1eef47b 100644 --- a/django/didgeridoo/didgeridoo/urls.py +++ b/django/didgeridoo/didgeridoo/urls.py @@ -17,6 +17,7 @@ from django.conf.urls import include, url from django.contrib import admin urlpatterns = [ - url(r'^webshop/', include('webshop.urls')), + url(r'', include('webshop.urls')), + url(r'^admin/', admin.site.urls), url(r'^admin/', admin.site.urls), ] diff --git a/django/didgeridoo/webshop/templates/webshop/article_details.html b/django/didgeridoo/webshop/templates/webshop/article_details.html new file mode 100644 index 0000000..aa66890 --- /dev/null +++ b/django/didgeridoo/webshop/templates/webshop/article_details.html @@ -0,0 +1,15 @@ + + + + + +
+

{{ article.name }}

+

Description

+

{{ article.description }}

+

Stock: {{ article.stock }}

+

Status: {{ article.status}}

+

Price: {{ article.price_in_chf }}

+
+ + diff --git a/django/didgeridoo/webshop/templates/webshop/category.html b/django/didgeridoo/webshop/templates/webshop/category.html new file mode 100644 index 0000000..7e42cfa --- /dev/null +++ b/django/didgeridoo/webshop/templates/webshop/category.html @@ -0,0 +1,21 @@ + + + + + + + +
+

{{ category.name }}

+{% if article_list %} + +{% else %} +

There are no articles in this category.

+{% endif %} +
+ + diff --git a/django/didgeridoo/webshop/templates/webshop/index.html b/django/didgeridoo/webshop/templates/webshop/index.html new file mode 100644 index 0000000..721caae --- /dev/null +++ b/django/didgeridoo/webshop/templates/webshop/index.html @@ -0,0 +1,24 @@ + + + + + +
+

Music Shop

+ {% if category_list %} + + {% else %} +

No categories are available.

+ {% endif %} +
+ + diff --git a/django/didgeridoo/webshop/urls.py b/django/didgeridoo/webshop/urls.py index a3780aa..ae62468 100644 --- a/django/didgeridoo/webshop/urls.py +++ b/django/didgeridoo/webshop/urls.py @@ -4,4 +4,10 @@ from . import views urlpatterns = [ url(r'^$', views.index, name='index'), + url(r'^details/(?P[0-9]+)/$', + views.article_details, + name='details'), + url(r'^category/(?P[0-9]+)/$', + views.articles_in_category, + name='category'), ] diff --git a/django/didgeridoo/webshop/views.py b/django/didgeridoo/webshop/views.py index 295a80f..0db7d06 100644 --- a/django/didgeridoo/webshop/views.py +++ b/django/didgeridoo/webshop/views.py @@ -1,8 +1,44 @@ -from django.shortcuts import render +from django.shortcuts import get_object_or_404, render from django.http import HttpResponse +from django.template import loader + +from .models import Article, Category, ArticleStatus # Create your views here. def index(request): - return HttpResponse("Hello, world. You're at the polls index.") + parent_category_list = Category.objects.filter(parent_category=None) + category_list = {} + + for i in parent_category_list: + category_list.update( + {i: Category.objects.filter(parent_category=i.id)}) + + template = loader.get_template('webshop/index.html') + context = { + 'category_list': category_list, + } + return HttpResponse(template.render(context, request)) + + +def articles_in_category(request, category_id): + selected_category = Category.objects.get(id=category_id) + hidden = ArticleStatus.objects.get(name="hidden") + + article_list = Article.objects.filter( + category=selected_category.id).exclude(status=hidden.id) + + template = loader.get_template('webshop/category.html') + context = { + 'article_list': article_list, + 'category': selected_category, + } + return HttpResponse(template.render(context, request)) + + +def article_details(request, article_id): + article = get_object_or_404(Article, pk=article_id) + return render(request, + 'webshop/article_details.html', + {'article': article})