diff --git a/PyRIGS/views.py b/PyRIGS/views.py
index 2ba09f6c..0216b104 100644
--- a/PyRIGS/views.py
+++ b/PyRIGS/views.py
@@ -3,6 +3,7 @@ import operator
from functools import reduce
import simplejson
+from django.contrib.auth.decorators import login_required
from django.contrib import messages
from django.core import serializers
from django.core.exceptions import PermissionDenied
@@ -11,6 +12,7 @@ from django.http import HttpResponse
from django.shortcuts import get_object_or_404
from django.urls import reverse_lazy, reverse, NoReverseMatch
from django.views import generic
+from django.views.decorators.clickjacking import xframe_options_exempt
from RIGS import models
from assets import models as asset_models
@@ -19,10 +21,8 @@ from assets import models as asset_models
def is_ajax(request):
return request.headers.get('x-requested-with') == 'XMLHttpRequest'
-# Displays the current rig count along with a few other bits and pieces
-
-class Index(generic.TemplateView):
+class Index(generic.TemplateView): # Displays the current rig count along with a few other bits and pieces
template_name = 'index.html'
def get_context_data(self, **kwargs):
@@ -230,15 +230,29 @@ class SearchHelp(generic.TemplateView):
template_name = 'search_help.html'
-"""
-Called from a modal window (e.g. when an item is submitted to an event/invoice).
-May optionally also include some javascript in a success message to cause a load of
-the new information onto the page.
-"""
-
-
class CloseModal(generic.TemplateView):
+ """
+ Called from a modal window (e.g. when an item is submitted to an event/invoice).
+ May optionally also include some javascript in a success message to cause a load of
+ the new information onto the page.
+ """
template_name = 'closemodal.html'
def get_context_data(self, **kwargs):
return {'messages': messages.get_messages(self.request)}
+
+
+class OEmbedView(generic.View):
+ def get(self, request, pk=None):
+ embed_url = reverse(self.url_name, args=[pk])
+ full_url = "{0}://{1}{2}".format(request.scheme, request.META['HTTP_HOST'], embed_url)
+
+ data = {
+ 'html': ''.format(full_url),
+ 'version': '1.0',
+ 'type': 'rich',
+ 'height': '250'
+ }
+
+ json = simplejson.JSONEncoderForHTML().encode(data)
+ return HttpResponse(json, content_type="application/json")
diff --git a/RIGS/rigboard.py b/RIGS/rigboard.py
index 7ce12a26..715c38a8 100644
--- a/RIGS/rigboard.py
+++ b/RIGS/rigboard.py
@@ -27,6 +27,7 @@ from django.views import generic
from z3c.rml import rml2pdf
from PyRIGS import decorators
+from PyRIGS.views import OEmbedView
from RIGS import models, forms
__author__ = 'ghost'
@@ -60,28 +61,15 @@ class EventDetail(generic.DetailView):
model = models.Event
-class EventOembed(generic.View):
- model = models.Event
-
- def get(self, request, pk=None):
- embed_url = reverse('event_embed', args=[pk])
- full_url = "{0}://{1}{2}".format(request.scheme, request.META['HTTP_HOST'], embed_url)
-
- data = {
- 'html': ''.format(full_url),
- 'version': '1.0',
- 'type': 'rich',
- 'height': '250'
- }
-
- json = simplejson.JSONEncoderForHTML().encode(data)
- return HttpResponse(json, content_type="application/json")
-
-
class EventEmbed(EventDetail):
template_name = 'event_embed.html'
+class EventOEmbed(OEmbedView):
+ model = models.Event
+ url_name = 'event_embed'
+
+
class EventCreate(generic.CreateView):
model = models.Event
form_class = forms.EventForm
diff --git a/RIGS/urls.py b/RIGS/urls.py
index b1a4afc0..3b44c450 100644
--- a/RIGS/urls.py
+++ b/RIGS/urls.py
@@ -1,5 +1,4 @@
from django.contrib.auth.decorators import login_required
-from django.contrib.auth.decorators import login_required
from django.urls import path, re_path
from django.views.decorators.clickjacking import xframe_options_exempt
from django.views.generic import RedirectView
@@ -62,7 +61,7 @@ urlpatterns = [
path('event//embed/',
xframe_options_exempt(login_required(login_url='/user/login/embed/')(rigboard.EventEmbed.as_view())),
name='event_embed'),
- path('event//oembed_json/', rigboard.EventOembed.as_view(),
+ path('event//oembed_json/', rigboard.EventOEmbed.as_view(),
name='event_oembed'),
path('event//print/', permission_required_with_403('RIGS.view_event')(rigboard.EventPrint.as_view()),
name='event_print'),
diff --git a/assets/urls.py b/assets/urls.py
index 1fd2c850..6e467e08 100644
--- a/assets/urls.py
+++ b/assets/urls.py
@@ -3,6 +3,7 @@ from django.urls import path
from django.views.decorators.clickjacking import xframe_options_exempt
from PyRIGS.decorators import has_oembed, permission_required_with_403
+from PyRIGS.views import OEmbedView
from assets import views
urlpatterns = [
@@ -26,9 +27,7 @@ urlpatterns = [
xframe_options_exempt(
login_required(login_url='/user/login/embed/')(views.AssetEmbed.as_view())),
name='asset_embed'),
- path('asset/id//oembed_json/',
- views.AssetOembed.as_view(),
- name='asset_oembed'),
+ path('asset/id//oembed_json/', views.AssetOEmbed.as_view(), name='asset_oembed'),
path('asset/audit/', permission_required_with_403('assets.change_asset')(views.AssetAuditList.as_view()), name='asset_audit_list'),
path('asset/id//audit/', permission_required_with_403('assets.change_asset')(views.AssetAudit.as_view()), name='asset_audit'),
diff --git a/assets/views.py b/assets/views.py
index c4367d53..2a6e3284 100644
--- a/assets/views.py
+++ b/assets/views.py
@@ -11,7 +11,7 @@ from django.views import generic
from django.views.decorators.csrf import csrf_exempt
from PyRIGS.views import GenericListView, GenericDetailView, GenericUpdateView, GenericCreateView, ModalURLMixin, \
- is_ajax
+ is_ajax, OEmbedView
from assets import forms, models
@@ -166,29 +166,15 @@ class AssetDuplicate(DuplicateMixin, AssetIDUrlMixin, AssetCreate):
return context
-class AssetOembed(generic.View):
- model = models.Asset
-
- def get(self, request, pk=None):
- embed_url = reverse('asset_embed', args=[pk])
- full_url = "{0}://{1}{2}".format(request.scheme, request.META['HTTP_HOST'], embed_url)
-
- data = {
- 'html': ''.format(full_url),
- 'version': '1.0',
- 'type': 'rich',
- 'height': '250'
- }
-
- json = simplejson.JSONEncoderForHTML().encode(data)
- return HttpResponse(json, content_type="application/json")
-
-
class AssetEmbed(AssetDetail):
template_name = 'asset_embed.html'
-@method_decorator(csrf_exempt, name='dispatch')
+class AssetOEmbed(OEmbedView):
+ model = models.Asset
+ url_name = 'asset_embed'
+
+
class AssetAuditList(AssetList):
template_name = 'asset_audit_list.html'
hide_hidden_status = False