mirror of
https://github.com/nottinghamtec/PyRIGS.git
synced 2026-01-30 03:42:15 +00:00
Deduplicate OEmbed view
This commit is contained in:
@@ -3,6 +3,7 @@ import operator
|
|||||||
from functools import reduce
|
from functools import reduce
|
||||||
|
|
||||||
import simplejson
|
import simplejson
|
||||||
|
from django.contrib.auth.decorators import login_required
|
||||||
from django.contrib import messages
|
from django.contrib import messages
|
||||||
from django.core import serializers
|
from django.core import serializers
|
||||||
from django.core.exceptions import PermissionDenied
|
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.shortcuts import get_object_or_404
|
||||||
from django.urls import reverse_lazy, reverse, NoReverseMatch
|
from django.urls import reverse_lazy, reverse, NoReverseMatch
|
||||||
from django.views import generic
|
from django.views import generic
|
||||||
|
from django.views.decorators.clickjacking import xframe_options_exempt
|
||||||
|
|
||||||
from RIGS import models
|
from RIGS import models
|
||||||
from assets import models as asset_models
|
from assets import models as asset_models
|
||||||
@@ -19,10 +21,8 @@ from assets import models as asset_models
|
|||||||
def is_ajax(request):
|
def is_ajax(request):
|
||||||
return request.headers.get('x-requested-with') == 'XMLHttpRequest'
|
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): # Displays the current rig count along with a few other bits and pieces
|
||||||
class Index(generic.TemplateView):
|
|
||||||
template_name = 'index.html'
|
template_name = 'index.html'
|
||||||
|
|
||||||
def get_context_data(self, **kwargs):
|
def get_context_data(self, **kwargs):
|
||||||
@@ -230,15 +230,29 @@ class SearchHelp(generic.TemplateView):
|
|||||||
template_name = 'search_help.html'
|
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):
|
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'
|
template_name = 'closemodal.html'
|
||||||
|
|
||||||
def get_context_data(self, **kwargs):
|
def get_context_data(self, **kwargs):
|
||||||
return {'messages': messages.get_messages(self.request)}
|
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': '<iframe src="{0}" frameborder="0" width="100%" height="250"></iframe>'.format(full_url),
|
||||||
|
'version': '1.0',
|
||||||
|
'type': 'rich',
|
||||||
|
'height': '250'
|
||||||
|
}
|
||||||
|
|
||||||
|
json = simplejson.JSONEncoderForHTML().encode(data)
|
||||||
|
return HttpResponse(json, content_type="application/json")
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ from django.views import generic
|
|||||||
from z3c.rml import rml2pdf
|
from z3c.rml import rml2pdf
|
||||||
|
|
||||||
from PyRIGS import decorators
|
from PyRIGS import decorators
|
||||||
|
from PyRIGS.views import OEmbedView
|
||||||
from RIGS import models, forms
|
from RIGS import models, forms
|
||||||
|
|
||||||
__author__ = 'ghost'
|
__author__ = 'ghost'
|
||||||
@@ -60,28 +61,15 @@ class EventDetail(generic.DetailView):
|
|||||||
model = models.Event
|
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': '<iframe src="{0}" frameborder="0" width="100%" height="250"></iframe>'.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):
|
class EventEmbed(EventDetail):
|
||||||
template_name = 'event_embed.html'
|
template_name = 'event_embed.html'
|
||||||
|
|
||||||
|
|
||||||
|
class EventOEmbed(OEmbedView):
|
||||||
|
model = models.Event
|
||||||
|
url_name = 'event_embed'
|
||||||
|
|
||||||
|
|
||||||
class EventCreate(generic.CreateView):
|
class EventCreate(generic.CreateView):
|
||||||
model = models.Event
|
model = models.Event
|
||||||
form_class = forms.EventForm
|
form_class = forms.EventForm
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
from django.contrib.auth.decorators import login_required
|
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.urls import path, re_path
|
||||||
from django.views.decorators.clickjacking import xframe_options_exempt
|
from django.views.decorators.clickjacking import xframe_options_exempt
|
||||||
from django.views.generic import RedirectView
|
from django.views.generic import RedirectView
|
||||||
@@ -62,7 +61,7 @@ urlpatterns = [
|
|||||||
path('event/<int:pk>/embed/',
|
path('event/<int:pk>/embed/',
|
||||||
xframe_options_exempt(login_required(login_url='/user/login/embed/')(rigboard.EventEmbed.as_view())),
|
xframe_options_exempt(login_required(login_url='/user/login/embed/')(rigboard.EventEmbed.as_view())),
|
||||||
name='event_embed'),
|
name='event_embed'),
|
||||||
path('event/<int:pk>/oembed_json/', rigboard.EventOembed.as_view(),
|
path('event/<int:pk>/oembed_json/', rigboard.EventOEmbed.as_view(),
|
||||||
name='event_oembed'),
|
name='event_oembed'),
|
||||||
path('event/<int:pk>/print/', permission_required_with_403('RIGS.view_event')(rigboard.EventPrint.as_view()),
|
path('event/<int:pk>/print/', permission_required_with_403('RIGS.view_event')(rigboard.EventPrint.as_view()),
|
||||||
name='event_print'),
|
name='event_print'),
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ from django.urls import path
|
|||||||
from django.views.decorators.clickjacking import xframe_options_exempt
|
from django.views.decorators.clickjacking import xframe_options_exempt
|
||||||
|
|
||||||
from PyRIGS.decorators import has_oembed, permission_required_with_403
|
from PyRIGS.decorators import has_oembed, permission_required_with_403
|
||||||
|
from PyRIGS.views import OEmbedView
|
||||||
from assets import views
|
from assets import views
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
@@ -26,9 +27,7 @@ urlpatterns = [
|
|||||||
xframe_options_exempt(
|
xframe_options_exempt(
|
||||||
login_required(login_url='/user/login/embed/')(views.AssetEmbed.as_view())),
|
login_required(login_url='/user/login/embed/')(views.AssetEmbed.as_view())),
|
||||||
name='asset_embed'),
|
name='asset_embed'),
|
||||||
path('asset/id/<str:pk>/oembed_json/',
|
path('asset/id/<str:pk>/oembed_json/', views.AssetOEmbed.as_view(), name='asset_oembed'),
|
||||||
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/audit/', permission_required_with_403('assets.change_asset')(views.AssetAuditList.as_view()), name='asset_audit_list'),
|
||||||
path('asset/id/<str:pk>/audit/', permission_required_with_403('assets.change_asset')(views.AssetAudit.as_view()), name='asset_audit'),
|
path('asset/id/<str:pk>/audit/', permission_required_with_403('assets.change_asset')(views.AssetAudit.as_view()), name='asset_audit'),
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ from django.views import generic
|
|||||||
from django.views.decorators.csrf import csrf_exempt
|
from django.views.decorators.csrf import csrf_exempt
|
||||||
|
|
||||||
from PyRIGS.views import GenericListView, GenericDetailView, GenericUpdateView, GenericCreateView, ModalURLMixin, \
|
from PyRIGS.views import GenericListView, GenericDetailView, GenericUpdateView, GenericCreateView, ModalURLMixin, \
|
||||||
is_ajax
|
is_ajax, OEmbedView
|
||||||
from assets import forms, models
|
from assets import forms, models
|
||||||
|
|
||||||
|
|
||||||
@@ -166,29 +166,15 @@ class AssetDuplicate(DuplicateMixin, AssetIDUrlMixin, AssetCreate):
|
|||||||
return context
|
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': '<iframe src="{0}" frameborder="0" width="100%" height="250"></iframe>'.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):
|
class AssetEmbed(AssetDetail):
|
||||||
template_name = 'asset_embed.html'
|
template_name = 'asset_embed.html'
|
||||||
|
|
||||||
|
|
||||||
@method_decorator(csrf_exempt, name='dispatch')
|
class AssetOEmbed(OEmbedView):
|
||||||
|
model = models.Asset
|
||||||
|
url_name = 'asset_embed'
|
||||||
|
|
||||||
|
|
||||||
class AssetAuditList(AssetList):
|
class AssetAuditList(AssetList):
|
||||||
template_name = 'asset_audit_list.html'
|
template_name = 'asset_audit_list.html'
|
||||||
hide_hidden_status = False
|
hide_hidden_status = False
|
||||||
|
|||||||
Reference in New Issue
Block a user