add a button to create a customer

This commit is contained in:
Andreas Zweili 2020-05-23 14:18:16 +02:00
parent 61bbe30a3d
commit 37915ad039
5 changed files with 62 additions and 1 deletions

View File

@ -0,0 +1,14 @@
{% extends "core/base.html" %}
{% load crispy_forms_tags %}
{% block section_title %}Create Customer{% endblock %}
{% block content %}
<div class="row">
<form method="post">
{% csrf_token %}
{{ form|crispy }}
<input type="submit" value="Save" class="btn btn-primary">
<a href="{% url 'customers' %}" class="btn btn-secondary">Cancel</a>
</form>
</div>
{% endblock %}

View File

@ -2,5 +2,19 @@
{% load render_table from django_tables2 %}
{% block section_title %}List of Customers{% endblock %}
{% block content %}
{% render_table customers %}
{% if request.user.is_superuser %}
<div class="row mb-3">
<div class="col">
<form action="{% url 'customer_create' %}">
<input type="submit" value="Add Customer" class="btn btn-primary">
</form>
</div>
</div>
{% endif %}
<div class="row">
<div class="col">
{% render_table customers %}
</div>
</div>
{% endblock %}

View File

@ -0,0 +1,16 @@
from django.test import Client
import pytest
pytestmark = pytest.mark.django_db
def test_customer_create_view(create_admin_user):
create_admin_user()
data = {'name': 'Big Pharma',
'description': 'Some text.'}
client = Client()
client.login(username="pharma-admin", password="password")
response = client.post('/create/customer/', data)
assert response.status_code == 302

View File

@ -6,4 +6,7 @@ urlpatterns = [
path('', views.customers_table_view, name='customers'),
path('customer/<int:pk>/', views.CustomerDetailView.as_view(),
name='customer'),
path('create/customer/',
views.CustomerCreateView.as_view(),
name='customer_create'),
]

View File

@ -1,6 +1,8 @@
from django.contrib.auth.decorators import login_required
from django.contrib.auth.mixins import LoginRequiredMixin
from django.shortcuts import render
from django.urls import reverse
from django.views.generic import CreateView
from django.views.generic import DetailView
from django_tables2 import RequestConfig
@ -26,3 +28,15 @@ class CustomerDetailView(LoginRequiredMixin,
model = Customer
template_name = 'customers/customer_details.html'
permission_required = 'view_customer'
class CustomerCreateView(LoginRequiredMixin, CreateView):
"""
A view to create a customer.
"""
model = Customer
template_name = 'customers/customer_create.html'
fields = '__all__'
def get_success_url(self):
return reverse('customer', args=(self.object.pk,))