File diff b2d842037a63 → 5193ae7fc0e1
conntrackt/views.py
Show inline comments
 
@@ -30,6 +30,7 @@ from django.contrib import messages
 
from django.core.exceptions import ValidationError
 
from django.core.urlresolvers import reverse, reverse_lazy
 
from django.db.models import Q
 
from django.db.models.deletion import Collector
 
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, View
 
@@ -65,6 +66,43 @@ class RedirectToNextMixin(object):
 
        return self.request.GET.get(self.next_parameter, super(RedirectToNextMixin, self).get_success_url())
 

	
 

	
 
class RelatedItemsMixin(object):
 
    """
 
    View mixin that adds related items of a referenced model object to context
 
    data in form of a nested list, including the reference model object as the
 
    first element of a list.
 

	
 
    The context data will be passed using the "related_items" key.
 

	
 
    This data can be used in the template by passing it through the
 
    unordered_list template tag.
 

	
 
    The reference object is accessed via "object" property of calling view
 
    (i.e. self.object).
 

	
 
    For more details on implementation, see:
 

	
 
    RelatedCollectorMixin.get_dependant_objects_representation method
 
    """
 

	
 
    def get_context_data(self, **kwargs):
 
        """
 
        Adds the related items of a reference model object to context data.
 

	
 
        Returns:
 
          Context data.
 
        """
 

	
 
        # Set the context using the parent class.
 
        context = super(RelatedItemsMixin, self).get_context_data(**kwargs)
 

	
 
        # Add to context the nested list of string representations of related
 
        # items.
 
        context["related_items"] = self.object.get_dependant_objects_representation()
 

	
 
        return context
 

	
 

	
 
class IndexView(MultiplePermissionsRequiredMixin, TemplateView):
 
    """
 
    Custom view used for rendering the index page.
 
@@ -337,7 +375,7 @@ class ProjectUpdateView(RedirectToNextMi
 
        return "Update project %s" % self.object.name
 

	
 

	
 
class ProjectDeleteView(RedirectToNextMixin, SetHeadlineMixin, MultiplePermissionsRequiredMixin, DeleteView):
 
class ProjectDeleteView(RelatedItemsMixin, RedirectToNextMixin, SetHeadlineMixin, MultiplePermissionsRequiredMixin, DeleteView):
 
    """
 
    View for deleting a project.
 
    """
 
@@ -421,7 +459,7 @@ class LocationUpdateView(RedirectToNextM
 
        return "Update location %s" % self.object.name
 

	
 

	
 
class LocationDeleteView(RedirectToNextMixin, SetHeadlineMixin, MultiplePermissionsRequiredMixin, DeleteView):
 
class LocationDeleteView(RelatedItemsMixin, RedirectToNextMixin, SetHeadlineMixin, MultiplePermissionsRequiredMixin, DeleteView):
 
    """
 
    View for deleting a location.
 
    """
 
@@ -538,7 +576,7 @@ class EntityUpdateView(RedirectToNextMix
 
        return "Update entity %s" % self.object.name
 

	
 

	
 
class EntityDeleteView(RedirectToNextMixin, SetHeadlineMixin, MultiplePermissionsRequiredMixin, DeleteView):
 
class EntityDeleteView(RelatedItemsMixin, RedirectToNextMixin, SetHeadlineMixin, MultiplePermissionsRequiredMixin, DeleteView):
 
    """
 
    View for deleting an entity.
 
    """
 
@@ -694,7 +732,7 @@ class InterfaceUpdateView(RedirectToNext
 
        return "Update interface %s" % self.object.name
 

	
 

	
 
class InterfaceDeleteView(RedirectToNextMixin, SetHeadlineMixin, MultiplePermissionsRequiredMixin, DeleteView):
 
class InterfaceDeleteView(RelatedItemsMixin, RedirectToNextMixin, SetHeadlineMixin, MultiplePermissionsRequiredMixin, DeleteView):
 
    """
 
    View for deleting an interface.
 
    """
 
@@ -887,7 +925,7 @@ class CommunicationUpdateView(RedirectTo
 
        return "Update communication %s" % self.object
 

	
 

	
 
class CommunicationDeleteView(RedirectToNextMixin, SetHeadlineMixin, MultiplePermissionsRequiredMixin, DeleteView):
 
class CommunicationDeleteView(RelatedItemsMixin, RedirectToNextMixin, SetHeadlineMixin, MultiplePermissionsRequiredMixin, DeleteView):
 
    """
 
    View for deleting an communication.
 
    """