Changeset - 0d8ace5c1a99
[Not reviewed]
default
5 1 1
Branko Majic (branko) - 11 years ago 2013-07-25 19:33:31
branko@majic.rs
CONNT-15: Reduced repetition for the create form by using a mixin and single template.
7 files changed with 41 insertions and 142 deletions:
0 comments (0 inline, 0 general)
conntrackt/templates/conntrackt/communication_create_form.html
Show inline comments
 
deleted file
conntrackt/templates/conntrackt/create_form.html
Show inline comments
 
new file 100644
 
{% extends "conntrackt/base.html" %}
 

	
 
{# For html_link #}
 
{% load conntrackt_tags %}
 
{# For Bootstrapped forms #}
 
{% load crispy_forms_tags %}
 

	
 
{% block content %}
 
<div class="row">
 
  <h1 class="span12">{{headline}}</h1>
 
</div>
 
<div class="row">
 
  <div class="span6">
 
    <form action="" method="post">
 
      <div class="controls controls-row">
 
      {% csrf_token %}
 
      {{ form | crispy }}
 
      </div>
 
      <div class="controls">
 
        <button type="submit" class="btn btn-primary">Add</button>
 
      </div>
 
    </form>
 
  </div>
 
</div>
 
{% endblock content %}
conntrackt/templates/conntrackt/entity_create_form.html
Show inline comments
 
deleted file
conntrackt/templates/conntrackt/interface_create_form.html
Show inline comments
 
deleted file
conntrackt/templates/conntrackt/location_create_form.html
Show inline comments
 
deleted file
conntrackt/templates/conntrackt/project_create_form.html
Show inline comments
 
deleted file
conntrackt/views.py
Show inline comments
 
@@ -2,25 +2,25 @@
 
from StringIO import StringIO
 
from zipfile import ZipFile, ZIP_DEFLATED
 

	
 
# Django imports.
 
from django.contrib.auth.decorators import permission_required
 
from django.contrib import messages
 
from django.core.urlresolvers import reverse, reverse_lazy
 
from django.http import HttpResponse
 
from django.shortcuts import render_to_response, get_object_or_404
 
from django.views.generic import TemplateView, DetailView, CreateView, UpdateView, DeleteView
 

	
 
# Third-party application imports.
 
from braces.views import MultiplePermissionsRequiredMixin
 
from braces.views import MultiplePermissionsRequiredMixin, SetHeadlineMixin
 

	
 
# Application imports.
 
from .forms import ProjectForm, LocationForm, EntityForm, InterfaceForm, CommunicationForm
 
from .models import Project, Entity, Location, Interface, Communication
 
from .utils import generate_entity_iptables
 

	
 

	
 
class IndexView(MultiplePermissionsRequiredMixin, TemplateView):
 
    """
 
    Custom view used for rendering the index page.
 
    """
 

	
 
@@ -238,32 +238,33 @@ def project_iptables(request, project_id
 
    # close the IO string.
 
    response.write(buff.getvalue())
 
    buff.close()
 

	
 
    # Set the Content-Disposition so the browser would know it should download
 
    # the archive, and suggest the filename.
 
    response['Content-Disposition'] = 'attachment; filename="%s"' % filename
 

	
 
    # Finally return the response object.
 
    return response
 

	
 

	
 
class ProjectCreateView(MultiplePermissionsRequiredMixin, CreateView):
 
class ProjectCreateView(SetHeadlineMixin, MultiplePermissionsRequiredMixin, CreateView):
 
    """
 
    View for creating a new project.
 
    """
 

	
 
    model = Project
 
    form_class = ProjectForm
 
    template_name_suffix = "_create_form"
 
    headline = "Add new project"
 
    template_name = "conntrackt/create_form.html"
 

	
 
    # Required permissions.
 
    permissions = {
 
        "all": ("conntrackt.add_project",),
 
        }
 

	
 
    # Raise authorisation denied exception for unmet permissions.
 
    raise_exception = True
 

	
 

	
 
class ProjectUpdateView(MultiplePermissionsRequiredMixin, UpdateView):
 
    """
 
@@ -302,32 +303,33 @@ class ProjectDeleteView(MultiplePermissi
 

	
 
    def post(self, *args, **kwargs):
 
        """
 
        Add a success message that will be displayed to the user to confirm the
 
        project deletion.
 
        """
 

	
 
        messages.success(self.request, "Project %s has been removed." % self.get_object().name, extra_tags="alert alert-success")
 

	
 
        return super(ProjectDeleteView, self).post(*args, **kwargs)
 

	
 

	
 
class LocationCreateView(MultiplePermissionsRequiredMixin, CreateView):
 
class LocationCreateView(SetHeadlineMixin, MultiplePermissionsRequiredMixin, CreateView):
 
    """
 
    View for creating a new location.
 
    """
 

	
 
    model = Location
 
    form_class = LocationForm
 
    template_name_suffix = "_create_form"
 
    headline = "Add new location"
 
    template_name = "conntrackt/create_form.html"
 

	
 
    # Required permissions.
 
    permissions = {
 
        "all": ("conntrackt.add_location",),
 
        }
 

	
 
    # Raise authorisation denied exception for unmet permissions.
 
    raise_exception = True
 

	
 
    success_url = reverse_lazy("index")
 

	
 

	
 
@@ -370,32 +372,33 @@ class LocationDeleteView(MultiplePermiss
 

	
 
    def post(self, *args, **kwargs):
 
        """
 
        Add a success message that will be displayed to the user to confirm the
 
        location deletion.
 
        """
 

	
 
        messages.success(self.request, "Location %s has been removed." % self.get_object().name, extra_tags="alert alert-success")
 

	
 
        return super(LocationDeleteView, self).post(*args, **kwargs)
 

	
 

	
 
class EntityCreateView(MultiplePermissionsRequiredMixin, CreateView):
 
class EntityCreateView(SetHeadlineMixin, MultiplePermissionsRequiredMixin, CreateView):
 
    """
 
    View for creating a new entity.
 
    """
 

	
 
    model = Entity
 
    form_class = EntityForm
 
    template_name_suffix = "_create_form"
 
    headline = "Add new entity"
 
    template_name = "conntrackt/create_form.html"
 

	
 
    # Required permissions.
 
    permissions = {
 
        "all": ("conntrackt.add_entity",),
 
        }
 

	
 
    # Raise authorisation denied exception for unmet permissions.
 
    raise_exception = True
 

	
 
    def get_form(self, form_class):
 
        """
 
        Returns an instance of form that can be used by the view.
 
@@ -481,32 +484,33 @@ class EntityDeleteView(MultiplePermissio
 
        """
 
        Deletes the object. This method is overridden in order to obtain the
 
        project ID for success URL.
 

	
 
        @TODO: Fix this once Django 1.6 comes out with fix from ticket 19044.
 
        """
 

	
 
        self.success_url = reverse("project", args=(self.get_object().project.id,))
 

	
 
        return super(EntityDeleteView, self).delete(*args, **kwargs)
 

	
 

	
 
class InterfaceCreateView(MultiplePermissionsRequiredMixin, CreateView):
 
class InterfaceCreateView(SetHeadlineMixin, MultiplePermissionsRequiredMixin, CreateView):
 
    """
 
    View for creating a new interface.
 
    """
 

	
 
    model = Interface
 
    form_class = InterfaceForm
 
    template_name_suffix = "_create_form"
 
    headline = "Add new interface"
 
    template_name = "conntrackt/create_form.html"
 

	
 
    # Required permissions
 
    permissions = {
 
        "all": ("conntrackt.add_interface",),
 
        }
 

	
 
    # Raise authorisation denied exception for unmet permissions.
 
    raise_exception = True
 

	
 
    def get_form(self, form_class):
 
        """
 
        Returns an instance of form that can be used by the view.
 
@@ -621,32 +625,33 @@ class InterfaceDeleteView(MultiplePermis
 
        """
 
        Deletes the object. This method is overridden in order to obtain the
 
        entity ID for success URL.
 

	
 
        @TODO: Fix this once Django 1.6 comes out with fix from ticket 19044.
 
        """
 

	
 
        self.success_url = reverse("entity", args=(self.get_object().entity.id,))
 

	
 
        return super(InterfaceDeleteView, self).delete(*args, **kwargs)
 

	
 

	
 
class CommunicationCreateView(MultiplePermissionsRequiredMixin, CreateView):
 
class CommunicationCreateView(SetHeadlineMixin, MultiplePermissionsRequiredMixin, CreateView):
 
    """
 
    View for creating a new communication.
 
    """
 

	
 
    model = Communication
 
    form_class = CommunicationForm
 
    template_name_suffix = "_create_form"
 
    headline = "Add new communication"
 
    template_name = "conntrackt/create_form.html"
 

	
 
    # Required permissions
 
    permissions = {
 
        "all": ("conntrackt.add_communication",),
 
        }
 

	
 
    # Raise authorisation denied exception for unmet permissions.
 
    raise_exception = True
 

	
 
    def get_form(self, form_class):
 
        """
 
        Returns an instance of form that can be used by the view.
0 comments (0 inline, 0 general)