new_contents: # coding: utf-8
  from django.conf.urls import url
  from django.contrib import messages
  from django.core.urlresolvers import reverse
  from django.http.response import HttpResponseRedirect
  
  
  class MixinEasyViews(object):
  
      def get_urls(self):
          urls = super(MixinEasyViews, self).get_urls()
  
          info = self.model._meta.app_label, self.model._meta.model_name
  
          easy_urls = [
              url(r'^(?P<pk>.+)/easy/(?P<action>.+)/$', self.admin_site.admin_view(self.easy_object_view),
                  name='%s_%s_easy' % info),
  
              url(r'^easy/(?P<action>.+)/$', self.admin_site.admin_view(self.easy_list_view),
                  name='%s_%s_easy' % info),
          ]
  
          return easy_urls + urls
  
      def easy_object_view(self, request, pk, action):
  
          method_name = 'easy_view_%s' % action
  
          view = getattr(self, method_name, None)
          if view:
              return view(request, pk)
  
          self.message_user(request, 'Easy view %s not founded' % method_name, messages.ERROR)
  
          info = self.model._meta.app_label, self.model._meta.model_name
          redirect = reverse('admin:%s_%s_change' % info, args=(pk,))
  
          return HttpResponseRedirect(redirect)
  
      def easy_list_view(self, request, action):
          method_name = 'easy_view_%s' % action
  
          view = getattr(self, method_name, None)
          if view:
              return view(request)
  
          self.message_user(request, 'Easy view %s not founded' % method_name, messages.ERROR)
  
          info = self.model._meta.app_label, self.model._meta.model_name
          redirect = reverse('admin:%s_%s_changelist' % info,)
  
          return HttpResponseRedirect(redirect)
subject: create first easy mixin