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 %} {% load render_table from django_tables2 %}
{% block section_title %}List of Customers{% endblock %} {% block section_title %}List of Customers{% endblock %}
{% block content %} {% 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 %} {% 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('', views.customers_table_view, name='customers'),
path('customer/<int:pk>/', views.CustomerDetailView.as_view(), path('customer/<int:pk>/', views.CustomerDetailView.as_view(),
name='customer'), 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.decorators import login_required
from django.contrib.auth.mixins import LoginRequiredMixin from django.contrib.auth.mixins import LoginRequiredMixin
from django.shortcuts import render from django.shortcuts import render
from django.urls import reverse
from django.views.generic import CreateView
from django.views.generic import DetailView from django.views.generic import DetailView
from django_tables2 import RequestConfig from django_tables2 import RequestConfig
@ -26,3 +28,15 @@ class CustomerDetailView(LoginRequiredMixin,
model = Customer model = Customer
template_name = 'customers/customer_details.html' template_name = 'customers/customer_details.html'
permission_required = 'view_customer' 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,))