general: add a generic connector view (#11200)

This commit is contained in:
Frédéric Péters 2016-06-05 20:16:59 +02:00
parent 72ae98d529
commit 22184d8a90
21 changed files with 15 additions and 134 deletions

View File

@ -21,9 +21,6 @@ class BaseAdresse(BaseResource):
class Meta:
verbose_name = _('Base Adresse Web Service')
def get_absolute_url(self):
return reverse('base_adresse-view', kwargs={'slug': self.slug})
@classmethod
def get_icon_class(cls):
return 'gis'

View File

@ -1,11 +1,7 @@
from django.views.decorators.csrf import csrf_exempt
from django.conf.urls import patterns, include, url
from django.conf.urls import patterns, url
from passerelle.urls_utils import decorated_includes, required, app_enabled
from views import *
from views import SearchPathView
urlpatterns = patterns('',
url(r'^(?P<slug>[\w,-]+)/$', BaseAdresseDetailView.as_view(), name='base_adresse-view'),
url(r'^(?P<slug>[\w,-]+)/search/(?P<path>.*)$', SearchPathView.as_view(), name='base_adresse-path-search'),
)

View File

@ -1,16 +1,4 @@
from django.views.generic.detail import DetailView
from passerelle.views import GenericEndpointView
from .models import BaseAdresse
class BaseAdresseDetailView(DetailView):
model = BaseAdresse
template_name = 'base_adresse/base_adresse_detail.html'
def get_context_data(self, **kwargs):
context = super(BaseAdresseDetailView, self).get_context_data(**kwargs)
return context
class SearchPathView(GenericEndpointView):
def get_connector(self, **kwargs):

View File

@ -41,15 +41,6 @@ class MobytSMSGateway(BaseResource, SMSGatewayMixin):
def get_icon_class(cls):
return 'phone'
def get_absolute_url(self):
return reverse('mobyt-view', kwargs={'slug': self.slug})
def get_edit_url(self):
return reverse('edit-connector', kwargs={'connector': 'mobyt', 'slug': self.slug})
def get_delete_url(self):
return reverse('delete-connector', kwargs={'connector': 'mobyt', 'slug': self.slug})
def send_msg(self, text, sender, destinations):
"""Send a SMS using the Mobyt provider"""
# unfortunately it lacks a batch API...

View File

@ -1,6 +0,0 @@
from django.conf.urls import patterns, url
from views import *
urlpatterns = patterns('',
url(r'^(?P<slug>[\w,-]+)/$', MobytDetailView.as_view(), name='mobyt-view'),
)

View File

@ -1,8 +0,0 @@
from passerelle.base.views import ResourceView
from .models import MobytSMSGateway
class MobytDetailView(ResourceView):
model = MobytSMSGateway
template_name = 'passerelle/manage/messages_service_view.html'

View File

@ -1,31 +0,0 @@
# passerelle - uniform access to multiple data sources and services
# Copyright (C) 2016 Entr'ouvert
#
# This program is free software: you can redistribute it and/or modify it
# under the terms of the GNU Affero General Public License as published
# by the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import django.apps
class AppConfig(django.apps.AppConfig):
name = 'ovh'
label = 'ovh'
def get_after_urls(self):
from . import urls
return urls.urlpatterns
def get_connector_model(self):
from . import models
return models.OVHSMSGateway
default_app_config = 'ovh.AppConfig'

View File

@ -4,7 +4,6 @@ import json
from django.utils.translation import ugettext_lazy as _
from django.db import models
from django.core.urlresolvers import reverse
from passerelle.base.models import BaseResource
from passerelle.sms import SMSGatewayMixin
@ -47,15 +46,6 @@ class OVHSMSGateway(BaseResource, SMSGatewayMixin):
def get_icon_class(cls):
return 'phone'
def get_absolute_url(self):
return reverse('ovh-view', kwargs={'slug': self.slug})
def get_edit_url(self):
return reverse('edit-connector', kwargs={'connector': 'ovh', 'slug': self.slug})
def get_delete_url(self):
return reverse('delete-connector', kwargs={'connector': 'ovh', 'slug': self.slug})
def send_msg(self, text, sender, destinations):
"""Send a SMS using the OVH provider"""
# unfortunately it lacks a batch API...

View File

@ -1,6 +0,0 @@
from django.conf.urls import patterns, url
from views import *
urlpatterns = patterns('',
url(r'^(?P<slug>[\w,-]+)/$', OvhDetailView.as_view(), name='ovh-view'),
)

View File

@ -1,8 +0,0 @@
from passerelle.base.views import ResourceView
from .models import OVHSMSGateway
class OvhDetailView(ResourceView):
model = OVHSMSGateway
template_name = 'passerelle/manage/messages_service_view.html'

View File

@ -29,15 +29,6 @@ class OxydSMSGateway(BaseResource, SMSGatewayMixin):
def get_icon_class(cls):
return 'phone'
def get_absolute_url(self):
return reverse('oxyd-view', kwargs={'slug': self.slug})
def get_edit_url(self):
return reverse('edit-connector', kwargs={'connector': 'oxyd', 'slug': self.slug})
def get_delete_url(self):
return reverse('delete-connector', kwargs={'connector': 'oxyd', 'slug': self.slug})
def send_msg(self, text, sender, destinations):
"""Send a SMS using the Oxyd provider"""
# unfortunately it lacks a batch API...

View File

@ -1,6 +0,0 @@
from django.conf.urls import patterns, url
from views import *
urlpatterns = patterns('',
url(r'^(?P<slug>[\w,-]+)/$', OxydDetailView.as_view(), name='oxyd-view'),
)

View File

@ -1,8 +0,0 @@
from passerelle.base.views import ResourceView
from .models import OxydSMSGateway
class OxydDetailView(ResourceView):
model = OxydSMSGateway
template_name = 'passerelle/manage/messages_service_view.html'

View File

@ -133,6 +133,10 @@ class BaseResource(models.Model):
def get_connector_slug(cls):
return cls._meta.app_label.replace('_', '-')
def get_absolute_url(self):
return reverse('view-connector',
kwargs={'connector': self.get_connector_slug(), 'slug': self.slug})
@classmethod
def get_add_url(cls):
return reverse('create-connector', kwargs={'connector': cls.get_connector_slug()})

View File

@ -36,9 +36,6 @@ class StubInvoicesConnector(BaseResource):
def get_icon_class(cls):
return 'ressources'
def get_absolute_url(self):
return reverse('stub-invoices-view', kwargs={'slug': self.slug})
# generate a serie of stub invoices
invoices = {}
for i in range(15):

View File

@ -22,8 +22,6 @@ from .views import *
urlpatterns = patterns('',
url(r'^(?P<slug>[\w,-]+)/$', StubInvoicesConnectorDetailView.as_view(),
name='stub-invoices-view'),
url(r'^(?P<slug>[\w,-]+)/invoices/history/$', HistoryInvoicesView.as_view(),
name='stub-invoices-invoices-history'),
url(r'^(?P<slug>[\w,-]+)/invoices/$', InvoicesView.as_view(),

View File

@ -28,11 +28,6 @@ from passerelle import utils
from .models import StubInvoicesConnector
class StubInvoicesConnectorDetailView(DetailView):
model = StubInvoicesConnector
template_name = 'passerelle/stub-invoices/detail.html'
class InvoicesView(DetailView):
model = StubInvoicesConnector

View File

@ -8,7 +8,7 @@ from django.views.static import serve as static_serve
from .views import (HomePageView, ManageView, ManageAddView,
GenericCreateConnectorView, GenericDeleteConnectorView,
GenericEditConnectorView, GenericEndpointView,
GenericEditConnectorView, GenericEndpointView, GenericConnectorView,
LEGACY_APPS_PATTERNS, LegacyPageView, login, logout)
from .urls_utils import decorated_includes, required, app_enabled
from .base.urls import access_urlpatterns
@ -85,6 +85,8 @@ urlpatterns += patterns('',
)))))
urlpatterns += patterns('',
url(r'^(?P<connector>[\w,-]+)/(?P<slug>[\w,-]+)/$',
GenericConnectorView.as_view(), name='view-connector'),
url(r'^(?P<connector>[\w,-]+)/(?P<slug>[\w,-]+)/(?P<endpoint>[\w,-]+)$',
GenericEndpointView.as_view(), name='generic-endpoint')
)

View File

@ -4,7 +4,8 @@ from django.contrib.auth import logout as auth_logout
from django.contrib.auth import views as auth_views
from django.http import HttpResponseBadRequest, HttpResponseRedirect, Http404
from django.views.decorators.csrf import csrf_exempt
from django.views.generic import RedirectView, View, TemplateView, CreateView, DeleteView, UpdateView
from django.views.generic import (RedirectView, View, TemplateView, CreateView,
DeleteView, UpdateView, DetailView)
from django.views.generic.detail import SingleObjectMixin
from django.conf import settings
from django.db import models
@ -91,6 +92,10 @@ class GenericConnectorMixin(object):
request, *args, **kwargs)
class GenericConnectorView(GenericConnectorMixin, DetailView):
pass
class GenericCreateConnectorView(GenericConnectorMixin, CreateView):
template_name = 'passerelle/manage/service_form.html'