add a button to create a customer
This commit is contained in:
parent
61bbe30a3d
commit
37915ad039
|
@ -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 %}
|
|
@ -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 %}
|
||||||
|
|
|
@ -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
|
|
@ -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'),
|
||||||
]
|
]
|
||||||
|
|
|
@ -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,))
|
||||||
|
|
Loading…
Reference in New Issue