general: don't repeat management views in all connectors (#11199)
This commit is contained in:
parent
714a857e55
commit
0b58219f06
|
@ -0,0 +1,32 @@
|
|||
# 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 = 'passerelle.apps.base_adresse'
|
||||
label = 'base_adresse'
|
||||
url_prefix = 'base_adresse'
|
||||
|
||||
def get_after_urls(self):
|
||||
from . import urls
|
||||
return urls.urlpatterns
|
||||
|
||||
def get_connector_model(self):
|
||||
from . import models
|
||||
return models.BaseAdresse
|
||||
|
||||
default_app_config = 'passerelle.apps.base_adresse.AppConfig'
|
|
@ -1,15 +0,0 @@
|
|||
from django.utils.text import slugify
|
||||
from django import forms
|
||||
|
||||
from .models import BaseAdresse
|
||||
|
||||
class BaseAdresseForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = BaseAdresse
|
||||
exclude = ('slug', 'users')
|
||||
|
||||
def save(self, commit=True):
|
||||
if not self.instance.slug:
|
||||
self.instance.slug = slugify(self.instance.title)
|
||||
return super(BaseAdresseForm, self).save(commit=commit)
|
||||
|
|
@ -19,14 +19,6 @@ class BaseAdresse(BaseResource):
|
|||
def get_absolute_url(self):
|
||||
return reverse('base_adresse-view', kwargs={'slug': self.slug})
|
||||
|
||||
@classmethod
|
||||
def get_add_url(cls):
|
||||
return reverse('base_adresse-add')
|
||||
|
||||
@classmethod
|
||||
def get_verbose_name(cls):
|
||||
return cls._meta.verbose_name
|
||||
|
||||
@classmethod
|
||||
def get_icon_class(cls):
|
||||
return 'gis'
|
||||
|
|
|
@ -1,8 +0,0 @@
|
|||
{% extends "passerelle/manage.html" %}
|
||||
|
||||
{% block breadcrumb %}
|
||||
{{ block.super }}
|
||||
{% if object.id %}
|
||||
<a href="{% url 'gdc-view' slug=object.slug %}">{{ object.title }}</a>
|
||||
{% endif %}
|
||||
{% endblock %}
|
|
@ -1,13 +1,19 @@
|
|||
{% extends "base_adresse/base.html" %}
|
||||
{% extends "passerelle/manage.html" %}
|
||||
{% load i18n passerelle %}
|
||||
|
||||
{% block breadcrumb %}
|
||||
{{ block.super }}
|
||||
{% if object.id %}
|
||||
<a href="{% url 'base_adresse-view' slug=object.slug %}">{{ object.title }}</a>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
{% block appbar %}
|
||||
<h2>BaseAddresse - {{ object.title }}</h2>
|
||||
{% if perms.base_adresse.change_base_adresse %}
|
||||
<a rel="popup" class="button" href="{% url 'base_adresse-edit' slug=object.slug %}">{% trans 'edit' %}</a>
|
||||
<a rel="popup" class="button" href="{% url 'edit-connector' slug=object.slug connector="base_adresse" %}">{% trans 'edit' %}</a>
|
||||
{% endif %}
|
||||
{% if perms.base_adresse.delete_base_adresse %}
|
||||
<a rel="popup" class="button" href="{% url 'base_adresse-delete' slug=object.slug %}">{% trans 'delete' %}</a>
|
||||
<a rel="popup" class="button" href="{% url 'delete-connector' slug=object.slug connector="base_adresse" %}">{% trans 'delete' %}</a>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
from django.views.decorators.csrf import csrf_exempt
|
||||
from django.conf.urls import patterns, url
|
||||
from django.contrib.auth.decorators import login_required
|
||||
from django.conf.urls import patterns, include, url
|
||||
|
||||
from passerelle.urls_utils import decorated_includes, required, app_enabled
|
||||
|
||||
from views import *
|
||||
|
||||
urlpatterns = patterns('',
|
||||
|
@ -10,9 +12,3 @@ urlpatterns = patterns('',
|
|||
url(r'^(?P<slug>[\w,-]+)/search/(?P<path>.*)$', SearchPathView.as_view(), name='base_adresse-path-search'),
|
||||
url(r'^(?P<slug>[\w,-]+)/reverse$', ReverseView.as_view(), name='base_adresse-reverse'),
|
||||
)
|
||||
|
||||
management_urlpatterns = patterns('',
|
||||
url(r'^add$', BaseAdresseCreateView.as_view(), name='base_adresse-add'),
|
||||
url(r'^(?P<slug>[\w,-]+)/edit$', BaseAdresseUpdateView.as_view(), name='base_adresse-edit'),
|
||||
url(r'^(?P<slug>[\w,-]+)/delete$', BaseAdresseDeleteView.as_view(), name='base_adresse-delete'),
|
||||
)
|
||||
|
|
|
@ -2,20 +2,14 @@ import requests
|
|||
import urllib
|
||||
import urlparse
|
||||
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.http import Http404, HttpResponseBadRequest
|
||||
from django.shortcuts import redirect
|
||||
from django.views.generic.base import View, RedirectView
|
||||
from django.http import HttpResponseBadRequest
|
||||
from django.views.generic.base import View
|
||||
from django.views.generic.detail import SingleObjectMixin, DetailView
|
||||
from django.views.generic.edit import CreateView, UpdateView, DeleteView
|
||||
|
||||
from passerelle import utils
|
||||
from passerelle.base.views import ResourceView
|
||||
|
||||
from .models import BaseAdresse
|
||||
|
||||
from .forms import BaseAdresseForm
|
||||
|
||||
|
||||
class BaseAdresseDetailView(DetailView):
|
||||
model = BaseAdresse
|
||||
|
@ -26,26 +20,6 @@ class BaseAdresseDetailView(DetailView):
|
|||
return context
|
||||
|
||||
|
||||
class BaseAdresseCreateView(CreateView):
|
||||
model = BaseAdresse
|
||||
form_class = BaseAdresseForm
|
||||
template_name = 'passerelle/manage/service_form.html'
|
||||
|
||||
|
||||
class BaseAdresseUpdateView(UpdateView):
|
||||
model = BaseAdresse
|
||||
form_class = BaseAdresseForm
|
||||
template_name = 'passerelle/manage/service_form.html'
|
||||
|
||||
|
||||
class BaseAdresseDeleteView(DeleteView):
|
||||
model = BaseAdresse
|
||||
template_name = 'passerelle/manage/service_confirm_delete.html'
|
||||
|
||||
def get_success_url(self):
|
||||
return reverse('manage-home')
|
||||
|
||||
|
||||
class SearchView(View, SingleObjectMixin):
|
||||
model = BaseAdresse
|
||||
|
||||
|
|
|
@ -0,0 +1,31 @@
|
|||
# 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 = 'bdp'
|
||||
label = 'bdp'
|
||||
|
||||
def get_after_urls(self):
|
||||
from . import urls
|
||||
return urls.urlpatterns
|
||||
|
||||
def get_connector_model(self):
|
||||
from . import models
|
||||
return models.Bdp
|
||||
|
||||
default_app_config = 'bdp.AppConfig'
|
|
@ -1,20 +0,0 @@
|
|||
from django.utils.text import slugify
|
||||
from django import forms
|
||||
|
||||
from .models import Bdp
|
||||
|
||||
class BdpForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = Bdp
|
||||
exclude = ('slug', 'users')
|
||||
|
||||
def save(self, commit=True):
|
||||
if not self.instance.slug:
|
||||
self.instance.slug = slugify(self.instance.title)
|
||||
return super(BdpForm, self).save(commit=commit)
|
||||
|
||||
|
||||
class BdpUpdateForm(BdpForm):
|
||||
class Meta:
|
||||
model = Bdp
|
||||
exclude = ('users',)
|
|
@ -31,14 +31,6 @@ class Bdp(BaseResource):
|
|||
def get_absolute_url(self):
|
||||
return reverse('bdp-view', kwargs={'slug': self.slug})
|
||||
|
||||
@classmethod
|
||||
def get_add_url(cls):
|
||||
return reverse('bdp-add')
|
||||
|
||||
@classmethod
|
||||
def get_verbose_name(cls):
|
||||
return cls._meta.verbose_name
|
||||
|
||||
@classmethod
|
||||
def get_icon_class(cls):
|
||||
return 'bdp'
|
||||
|
|
|
@ -1,8 +0,0 @@
|
|||
{% extends "passerelle/manage.html" %}
|
||||
|
||||
{% block breadcrumb %}
|
||||
{{ block.super }}
|
||||
{% if object.id %}
|
||||
<a href="{% url 'bdp-view' slug=object.slug %}">{{ object.title }}</a>
|
||||
{% endif %}
|
||||
{% endblock %}
|
|
@ -1,13 +1,20 @@
|
|||
{% extends "bdp/base.html" %}
|
||||
{% extends "passerelle/manage.html" %}
|
||||
{% load i18n passerelle %}
|
||||
|
||||
{% block breadcrumb %}
|
||||
{{ block.super }}
|
||||
{% if object.id %}
|
||||
<a href="{% url 'bdp-view' slug=object.slug %}">{{ object.title }}</a>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
{% block appbar %}
|
||||
<h2>BDP - {{ object.title }}</h2>
|
||||
{% if perms.bdp.change_bdp %}
|
||||
<a rel="popup" class="button" href="{% url 'bdp-edit' slug=object.slug %}">{% trans 'edit' %}</a>
|
||||
<a rel="popup" class="button" href="{% url 'edit-connector' slug=object.slug connector="bdp" %}">{% trans 'edit' %}</a>
|
||||
{% endif %}
|
||||
{% if perms.bdp.delete_bdp %}
|
||||
<a rel="popup" class="button" href="{% url 'bdp-delete' slug=object.slug %}">{% trans 'delete' %}</a>
|
||||
<a rel="popup" class="button" href="{% url 'delete-connector' slug=object.slug connector="bdp" %}">{% trans 'delete' %}</a>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
from django.views.decorators.csrf import csrf_exempt
|
||||
from django.conf.urls import patterns, url
|
||||
from django.contrib.auth.decorators import login_required
|
||||
from views import *
|
||||
|
||||
urlpatterns = patterns('',
|
||||
|
@ -8,9 +7,3 @@ urlpatterns = patterns('',
|
|||
url(r'^(?P<slug>[\w,-]+)/(?P<resources>[\w,-]+)/$', ResourcesView.as_view(), name='bdp-resources'),
|
||||
url(r'^(?P<slug>[\w,-]+)/post/adherent/$', csrf_exempt(PostAdherentView.as_view()), name='bdp-post-adherent'),
|
||||
)
|
||||
|
||||
management_urlpatterns = patterns('',
|
||||
url(r'^add$', BdpCreateView.as_view(), name='bdp-add'),
|
||||
url(r'^(?P<slug>[\w,-]+)/edit$', BdpUpdateView.as_view(), name='bdp-edit'),
|
||||
url(r'^(?P<slug>[\w,-]+)/delete$', BdpDeleteView.as_view(), name='bdp-delete'),
|
||||
)
|
||||
|
|
|
@ -1,15 +1,12 @@
|
|||
import json
|
||||
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.http import Http404
|
||||
from django.views.generic.base import View
|
||||
from django.views.generic.detail import SingleObjectMixin, DetailView
|
||||
from django.views.generic.edit import CreateView, UpdateView, DeleteView
|
||||
|
||||
from passerelle import utils
|
||||
|
||||
from .models import Bdp
|
||||
from .forms import BdpForm, BdpUpdateForm
|
||||
|
||||
# See documentation:
|
||||
# https://dev.entrouvert.org/projects/bdp/wiki/WebServices
|
||||
|
@ -70,23 +67,3 @@ class PostAdherentView(View, SingleObjectMixin):
|
|||
class BdpDetailView(DetailView):
|
||||
model = Bdp
|
||||
template_name = 'bdp/bdp_detail.html'
|
||||
|
||||
|
||||
class BdpCreateView(CreateView):
|
||||
model = Bdp
|
||||
form_class = BdpForm
|
||||
template_name = 'passerelle/manage/service_form.html'
|
||||
|
||||
|
||||
class BdpUpdateView(UpdateView):
|
||||
model = Bdp
|
||||
form_class = BdpUpdateForm
|
||||
template_name = 'passerelle/manage/service_form.html'
|
||||
|
||||
|
||||
class BdpDeleteView(DeleteView):
|
||||
model = Bdp
|
||||
template_name = 'passerelle/manage/service_confirm_delete.html'
|
||||
|
||||
def get_success_url(self):
|
||||
return reverse('manage-home')
|
||||
|
|
|
@ -0,0 +1,31 @@
|
|||
# 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 = 'choosit'
|
||||
label = 'choosit'
|
||||
|
||||
def get_after_urls(self):
|
||||
from . import urls
|
||||
return urls.urlpatterns
|
||||
|
||||
def get_connector_model(self):
|
||||
from . import models
|
||||
return models.ChoositSMSGateway
|
||||
|
||||
default_app_config = 'choosit.AppConfig'
|
|
@ -1,18 +1,7 @@
|
|||
from django.utils.text import slugify
|
||||
from django import forms
|
||||
|
||||
from .models import ChoositSMSGateway, ChoositRegisterGateway
|
||||
|
||||
class ChoositSMSGatewayForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = ChoositSMSGateway
|
||||
exclude = ('slug', 'users')
|
||||
|
||||
def save(self, commit=True):
|
||||
if not self.instance.slug:
|
||||
self.instance.slug = slugify(self.instance.title)
|
||||
return super(ChoositSMSGatewayForm, self).save(commit=commit)
|
||||
|
||||
from .models import ChoositRegisterGateway
|
||||
|
||||
class ChoositRegisterGatewayForm(forms.ModelForm):
|
||||
class Meta:
|
||||
|
|
|
@ -36,16 +36,6 @@ class ChoositSMSGateway(BaseResource, SMSGatewayMixin):
|
|||
def get_absolute_url(self):
|
||||
return reverse('choosit-view', kwargs={'slug': self.slug})
|
||||
|
||||
@classmethod
|
||||
def get_add_url(cls):
|
||||
return reverse('choosit-add')
|
||||
|
||||
def get_edit_url(self):
|
||||
return reverse('choosit-edit', kwargs={'slug': self.slug})
|
||||
|
||||
def get_delete_url(self):
|
||||
return reverse('choosit-delete', kwargs={'slug': self.slug})
|
||||
|
||||
def send(self, text, sender, destinations):
|
||||
"""Send a SMS using the Choosit provider"""
|
||||
# from http://sms.choosit.com/documentation_technique.html
|
||||
|
|
|
@ -9,9 +9,6 @@ urlpatterns = patterns('',
|
|||
)
|
||||
|
||||
management_urlpatterns = patterns('',
|
||||
url(r'^add$', ChoositCreateView.as_view(), name='choosit-add'),
|
||||
url(r'^(?P<slug>[\w,-]+)/edit$', ChoositUpdateView.as_view(), name='choosit-edit'),
|
||||
url(r'^(?P<slug>[\w,-]+)/delete$', ChoositDeleteView.as_view(), name='choosit-delete'),
|
||||
url(r'^register/add$', ChoositRegisterCreateView.as_view(), name='choosit-register-add'),
|
||||
url(r'^register/(?P<slug>[\w,-]+)/edit$', ChoositRegisterUpdateView.as_view(), name='choosit-register-edit'),
|
||||
url(r'^register/(?P<slug>[\w,-]+)/delete$', ChoositRegisterDeleteView.as_view(), name='choosit-register-delete'),
|
||||
|
|
|
@ -11,7 +11,7 @@ from passerelle.sms.views import SendView
|
|||
from passerelle import utils
|
||||
|
||||
from .models import ChoositSMSGateway, ChoositRegisterGateway
|
||||
from .forms import ChoositSMSGatewayForm, ChoositRegisterGatewayForm
|
||||
from .forms import ChoositRegisterGatewayForm
|
||||
|
||||
|
||||
class ChoositDetailView(ResourceView):
|
||||
|
@ -19,26 +19,6 @@ class ChoositDetailView(ResourceView):
|
|||
template_name = 'passerelle/manage/messages_service_view.html'
|
||||
|
||||
|
||||
class ChoositCreateView(CreateView):
|
||||
model = ChoositSMSGateway
|
||||
template_name = 'passerelle/manage/service_form.html'
|
||||
form_class = ChoositSMSGatewayForm
|
||||
|
||||
|
||||
class ChoositUpdateView(UpdateView):
|
||||
model = ChoositSMSGateway
|
||||
template_name = 'passerelle/manage/service_form.html'
|
||||
form_class = ChoositSMSGatewayForm
|
||||
|
||||
|
||||
class ChoositDeleteView(DeleteView):
|
||||
model = ChoositSMSGateway
|
||||
template_name = 'passerelle/manage/service_confirm_delete.html'
|
||||
|
||||
def get_success_url(self):
|
||||
return reverse('manage-home')
|
||||
|
||||
|
||||
class ChoositSendView(SendView):
|
||||
model = ChoositSMSGateway
|
||||
|
||||
|
|
|
@ -0,0 +1,31 @@
|
|||
# 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 = 'clicrdv'
|
||||
label = 'clicrdv'
|
||||
|
||||
def get_after_urls(self):
|
||||
from . import urls
|
||||
return urls.urlpatterns
|
||||
|
||||
def get_connector_model(self):
|
||||
from . import models
|
||||
return models.ClicRdv
|
||||
|
||||
default_app_config = 'clicrdv.AppConfig'
|
|
@ -1,14 +0,0 @@
|
|||
from django.utils.text import slugify
|
||||
from django import forms
|
||||
|
||||
from .models import ClicRdv
|
||||
|
||||
class ClicRdvForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = ClicRdv
|
||||
exclude = ('slug', 'users')
|
||||
|
||||
def save(self, commit=True):
|
||||
if not self.instance.slug:
|
||||
self.instance.slug = slugify(self.instance.title)
|
||||
return super(ClicRdvForm, self).save(commit=commit)
|
|
@ -44,17 +44,6 @@ class ClicRdv(BaseDataSource):
|
|||
def get_absolute_url(self):
|
||||
return reverse('clicrdv-view', kwargs={'slug': self.slug})
|
||||
|
||||
@classmethod
|
||||
def get_add_url(cls):
|
||||
return reverse('clicrdv-add')
|
||||
|
||||
def get_edit_url(self):
|
||||
return reverse('clicrdv-edit', kwargs={'slug': self.slug})
|
||||
|
||||
def get_delete_url(self):
|
||||
return reverse('clicrdv-delete', kwargs={'slug': self.slug})
|
||||
|
||||
|
||||
@classmethod
|
||||
def get_verbose_name(cls):
|
||||
return cls._meta.verbose_name
|
||||
|
@ -63,7 +52,6 @@ class ClicRdv(BaseDataSource):
|
|||
def get_icon_class(cls):
|
||||
return 'clock'
|
||||
|
||||
|
||||
def get_request(self, uri):
|
||||
url = 'https://%s/api/v1/%s' % (self.server, uri)
|
||||
if '?' in url:
|
||||
|
|
|
@ -1,8 +0,0 @@
|
|||
{% extends "passerelle/manage.html" %}
|
||||
|
||||
{% block breadcrumb %}
|
||||
{{ block.super }}
|
||||
{% if object.id %}
|
||||
<a href="{% url 'clicrdv-view' slug=object.slug %}">{{ object.title }}</a>
|
||||
{% endif %}
|
||||
{% endblock %}
|
|
@ -1,13 +1,20 @@
|
|||
{% extends "clicrdv/base.html" %}
|
||||
{% extends "passerelle/manage.html" %}
|
||||
{% load i18n passerelle %}
|
||||
|
||||
{% block breadcrumb %}
|
||||
{{ block.super }}
|
||||
{% if object.id %}
|
||||
<a href="{% url 'clicrdv-view' slug=object.slug %}">{{ object.title }}</a>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
{% block appbar %}
|
||||
<h2>ClicRdv - {{ object.title }}</h2>
|
||||
{% if perms.clicrdv.change_clicrdv %}
|
||||
<a rel="popup" class="button" href="{% url 'clicrdv-edit' slug=object.slug %}">{% trans 'edit' %}</a>
|
||||
<a rel="popup" class="button" href="{% url 'edit-connector' slug=object.slug connector="clicrdv" %}">{% trans 'edit' %}</a>
|
||||
{% endif %}
|
||||
{% if perms.clicrdv.delete_clicrdv %}
|
||||
<a rel="popup" class="button" href="{% url 'clicrdv-delete' slug=object.slug %}">{% trans 'delete' %}</a>
|
||||
<a rel="popup" class="button" href="{% url 'delete-connector' slug=object.slug connector="clicrdv" %}">{% trans 'delete' %}</a>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
from django.views.decorators.csrf import csrf_exempt
|
||||
from django.conf.urls import patterns, url
|
||||
from django.contrib.auth.decorators import login_required
|
||||
from django.conf.urls import patterns, include, url
|
||||
|
||||
from passerelle.urls_utils import decorated_includes, required, app_enabled
|
||||
|
||||
from views import *
|
||||
|
||||
urlpatterns = patterns('',
|
||||
|
@ -23,10 +25,3 @@ urlpatterns = patterns('',
|
|||
url(r'^(?P<slug>[\w,-]+)/(?P<appointment_id>\d+)/cancel$',
|
||||
CancelAppointmentView.as_view(), name='clicrdv-cancel-appointment'),
|
||||
)
|
||||
|
||||
|
||||
management_urlpatterns = patterns('',
|
||||
url(r'^add$', ClicRdvCreateView.as_view(), name='clicrdv-add'),
|
||||
url(r'^(?P<slug>[\w,-]+)/edit$', ClicRdvUpdateView.as_view(), name='clicrdv-edit'),
|
||||
url(r'^(?P<slug>[\w,-]+)/delete$', ClicRdvDeleteView.as_view(), name='clicrdv-delete'),
|
||||
)
|
||||
|
|
|
@ -1,43 +1,17 @@
|
|||
import json
|
||||
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.http import Http404
|
||||
from django.shortcuts import redirect
|
||||
from django.views.generic.base import View, RedirectView
|
||||
from django.views.generic.base import View
|
||||
from django.views.generic.detail import SingleObjectMixin, DetailView
|
||||
from django.views.generic.edit import CreateView, UpdateView, DeleteView
|
||||
|
||||
from passerelle import utils
|
||||
from passerelle.base.views import ResourceView
|
||||
|
||||
from .models import ClicRdv
|
||||
from .forms import ClicRdvForm
|
||||
|
||||
|
||||
class ClicRdvDetailView(DetailView):
|
||||
model = ClicRdv
|
||||
|
||||
|
||||
class ClicRdvCreateView(CreateView):
|
||||
model = ClicRdv
|
||||
form_class = ClicRdvForm
|
||||
template_name = 'passerelle/manage/service_form.html'
|
||||
|
||||
|
||||
class ClicRdvUpdateView(UpdateView):
|
||||
model = ClicRdv
|
||||
form_class = ClicRdvForm
|
||||
template_name = 'passerelle/manage/service_form.html'
|
||||
|
||||
|
||||
class ClicRdvDeleteView(DeleteView):
|
||||
model = ClicRdv
|
||||
template_name = 'passerelle/manage/service_confirm_delete.html'
|
||||
|
||||
def get_success_url(self):
|
||||
return reverse('manage-home')
|
||||
|
||||
|
||||
class InterventionSetsView(View, SingleObjectMixin):
|
||||
"""list of all sets
|
||||
|
||||
|
|
|
@ -0,0 +1,31 @@
|
|||
# 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 = 'concerto'
|
||||
label = 'concerto'
|
||||
|
||||
def get_after_urls(self):
|
||||
from . import urls
|
||||
return urls.urlpatterns
|
||||
|
||||
def get_connector_model(self):
|
||||
from . import models
|
||||
return models.Concerto
|
||||
|
||||
default_app_config = 'concerto.AppConfig'
|
|
@ -1,14 +0,0 @@
|
|||
from django.utils.text import slugify
|
||||
from django import forms
|
||||
|
||||
from .models import Concerto
|
||||
|
||||
class ConcertoForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = Concerto
|
||||
exclude = ('slug', 'users')
|
||||
|
||||
def save(self, commit=True):
|
||||
if not self.instance.slug:
|
||||
self.instance.slug = slugify(self.instance.title)
|
||||
return super(ConcertoForm, self).save(commit=commit)
|
|
@ -45,20 +45,6 @@ class Concerto(BaseDataSource):
|
|||
def get_absolute_url(self):
|
||||
return reverse('concerto-view', kwargs={'slug': self.slug})
|
||||
|
||||
@classmethod
|
||||
def get_add_url(cls):
|
||||
return reverse('concerto-add')
|
||||
|
||||
def get_edit_url(self):
|
||||
return reverse('concerto-edit', kwargs={'slug': self.slug})
|
||||
|
||||
def get_delete_url(self):
|
||||
return reverse('concerto-delete', kwargs={'slug': self.slug})
|
||||
|
||||
@classmethod
|
||||
def get_verbose_name(cls):
|
||||
return cls._meta.verbose_name
|
||||
|
||||
@classmethod
|
||||
def get_icon_class(cls):
|
||||
return 'family'
|
||||
|
|
|
@ -1,8 +0,0 @@
|
|||
{% extends "passerelle/manage.html" %}
|
||||
|
||||
{% block breadcrumb %}
|
||||
{{ block.super }}
|
||||
{% if object.id %}
|
||||
<a href="{% url 'concerto-view' slug=object.slug %}">{{ object.title }}</a>
|
||||
{% endif %}
|
||||
{% endblock %}
|
|
@ -1,13 +1,20 @@
|
|||
{% extends "concerto/base.html" %}
|
||||
{% extends "passerelle/manage.html" %}
|
||||
{% load i18n passerelle %}
|
||||
|
||||
{% block breadcrumb %}
|
||||
{{ block.super }}
|
||||
{% if object.id %}
|
||||
<a href="{% url 'concerto-view' slug=object.slug %}">{{ object.title }}</a>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
{% block appbar %}
|
||||
<h2>Concerto - {{ object.title }}</h2>
|
||||
{% if perms.concerto.change_concerto %}
|
||||
<a rel="popup" class="button" href="{% url 'concerto-edit' slug=object.slug %}">{% trans 'edit' %}</a>
|
||||
<a rel="popup" class="button" href="{% url 'edit-connector' slug=object.slug connector="concerto" %}">{% trans 'edit' %}</a>
|
||||
{% endif %}
|
||||
{% if perms.concerto.delete_concerto %}
|
||||
<a rel="popup" class="button" href="{% url 'concerto-delete' slug=object.slug %}">{% trans 'delete' %}</a>
|
||||
<a rel="popup" class="button" href="{% url 'delete-connector' slug=object.slug connector="concerto" %}">{% trans 'delete' %}</a>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
|
|
|
@ -1,6 +1,4 @@
|
|||
from django.views.decorators.csrf import csrf_exempt
|
||||
from django.conf.urls import patterns, url
|
||||
from django.contrib.auth.decorators import login_required
|
||||
from views import *
|
||||
|
||||
urlpatterns = patterns('',
|
||||
|
@ -21,10 +19,3 @@ urlpatterns = patterns('',
|
|||
url(r'^(?P<slug>[\w,-]+)/invoice/(?P<invoice_id>\w+)/(?P<invoice_hash>\w+)$',
|
||||
InvoiceView.as_view(), name='concerto-invoiceview'),
|
||||
)
|
||||
|
||||
|
||||
management_urlpatterns = patterns('',
|
||||
url(r'^add$', ConcertoCreateView.as_view(), name='concerto-add'),
|
||||
url(r'^(?P<slug>[\w,-]+)/edit$', ConcertoUpdateView.as_view(), name='concerto-edit'),
|
||||
url(r'^(?P<slug>[\w,-]+)/delete$', ConcertoDeleteView.as_view(), name='concerto-delete'),
|
||||
)
|
||||
|
|
|
@ -1,44 +1,16 @@
|
|||
import json
|
||||
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.http import Http404
|
||||
from django.shortcuts import redirect
|
||||
from django.views.generic.base import View, RedirectView
|
||||
from django.views.generic.base import View
|
||||
from django.views.generic.detail import SingleObjectMixin, DetailView
|
||||
from django.views.generic.edit import CreateView, UpdateView, DeleteView
|
||||
|
||||
from passerelle.utils import to_json
|
||||
from passerelle import utils
|
||||
|
||||
from passerelle.base.views import ResourceView
|
||||
|
||||
from .models import Concerto
|
||||
from .forms import ConcertoForm
|
||||
|
||||
|
||||
class ConcertoDetailView(DetailView):
|
||||
model = Concerto
|
||||
|
||||
|
||||
class ConcertoCreateView(CreateView):
|
||||
model = Concerto
|
||||
form_class = ConcertoForm
|
||||
template_name = 'passerelle/manage/service_form.html'
|
||||
|
||||
|
||||
class ConcertoUpdateView(UpdateView):
|
||||
model = Concerto
|
||||
form_class = ConcertoForm
|
||||
template_name = 'passerelle/manage/service_form.html'
|
||||
|
||||
|
||||
class ConcertoDeleteView(DeleteView):
|
||||
model = Concerto
|
||||
template_name = 'passerelle/manage/service_confirm_delete.html'
|
||||
|
||||
def get_success_url(self):
|
||||
return reverse('manage-home')
|
||||
|
||||
class FamilyLink(View, SingleObjectMixin):
|
||||
model = Concerto
|
||||
|
||||
|
|
|
@ -0,0 +1,31 @@
|
|||
# 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 = 'gdc'
|
||||
label = 'gdc'
|
||||
|
||||
def get_after_urls(self):
|
||||
from . import urls
|
||||
return urls.urlpatterns
|
||||
|
||||
def get_connector_model(self):
|
||||
from . import models
|
||||
return models.Gdc
|
||||
|
||||
default_app_config = 'gdc.AppConfig'
|
|
@ -1,15 +0,0 @@
|
|||
from django.utils.text import slugify
|
||||
from django import forms
|
||||
|
||||
from .models import Gdc
|
||||
|
||||
class GdcForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = Gdc
|
||||
exclude = ('slug', 'users')
|
||||
|
||||
def save(self, commit=True):
|
||||
if not self.instance.slug:
|
||||
self.instance.slug = slugify(self.instance.title)
|
||||
return super(GdcForm, self).save(commit=commit)
|
||||
|
|
@ -18,14 +18,6 @@ class Gdc(BaseResource):
|
|||
def get_absolute_url(self):
|
||||
return reverse('gdc-view', kwargs={'slug': self.slug})
|
||||
|
||||
@classmethod
|
||||
def get_add_url(cls):
|
||||
return reverse('gdc-add')
|
||||
|
||||
@classmethod
|
||||
def get_verbose_name(cls):
|
||||
return cls._meta.verbose_name
|
||||
|
||||
@classmethod
|
||||
def get_icon_class(cls):
|
||||
return 'ressources'
|
||||
|
|
|
@ -1,8 +0,0 @@
|
|||
{% extends "passerelle/manage.html" %}
|
||||
|
||||
{% block breadcrumb %}
|
||||
{{ block.super }}
|
||||
{% if object.id %}
|
||||
<a href="{% url 'gdc-view' slug=object.slug %}">{{ object.title }}</a>
|
||||
{% endif %}
|
||||
{% endblock %}
|
|
@ -1,16 +0,0 @@
|
|||
{% extends "gdc/base.html" %}
|
||||
{% load i18n %}
|
||||
|
||||
{% block appbar %}
|
||||
<h2>GDC - {{ object.title }}</h2>
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<form method="post">
|
||||
{% csrf_token %}
|
||||
<div class="buttons">
|
||||
<button>{% trans 'Confirm Deletion' %}</button>
|
||||
<a class="cancel" href="{{ object.get_absolute_url }}">{% trans 'Cancel' %}</a>
|
||||
</div>
|
||||
</form>
|
||||
{% endblock %}
|
|
@ -1,13 +1,20 @@
|
|||
{% extends "gdc/base.html" %}
|
||||
{% extends "passerelle/manage.html" %}
|
||||
{% load i18n passerelle %}
|
||||
|
||||
{% block breadcrumb %}
|
||||
{{ block.super }}
|
||||
{% if object.id %}
|
||||
<a href="{% url 'gdc-view' slug=object.slug %}">{{ object.title }}</a>
|
||||
{% endif %}
|
||||
|
||||
{% endblock %}
|
||||
{% block appbar %}
|
||||
<h2>GDC - {{ object.title }}</h2>
|
||||
{% if perms.gdc.change_gdc %}
|
||||
<a rel="popup" class="button" href="{% url 'gdc-edit' slug=object.slug %}">{% trans 'edit' %}</a>
|
||||
<a rel="popup" class="button" href="{% url 'edit-connector' slug=object.slug connector="gdc" %}">{% trans 'edit' %}</a>
|
||||
{% endif %}
|
||||
{% if perms.gdc.delete_gdc %}
|
||||
<a rel="popup" class="button" href="{% url 'gdc-delete' slug=object.slug %}">{% trans 'delete' %}</a>
|
||||
<a rel="popup" class="button" href="{% url 'delete-connector' slug=object.slug connector="gdc" %}">{% trans 'delete' %}</a>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
|
|
|
@ -1,35 +0,0 @@
|
|||
{% extends "gdc/base.html" %}
|
||||
{% load i18n %}
|
||||
{% load url from future %}
|
||||
|
||||
{% block breadcrumb %}
|
||||
{{ block.super }}
|
||||
{% if not object.id %}
|
||||
<a href="{% url 'gdc-add' %}">{% trans 'Add GDC Connector' %}</a>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
{% block appbar %}
|
||||
<h2>GDC - {% if object.id %}{{ object.title }}{% else %}{% trans 'New' %}{% endif %}</h2>
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<form method="post" enctype="multipart/form-data">
|
||||
<div id="form-content">
|
||||
{% csrf_token %}
|
||||
{{ form.as_p }}
|
||||
</div>
|
||||
{% block buttons %}
|
||||
<div class="buttons">
|
||||
<button>{% trans "Save" %}</button>
|
||||
{% if object.id %}
|
||||
<a class="cancel" href="{{ object.get_absolute_url }}">{% trans 'Cancel' %}</a>
|
||||
{% else %}
|
||||
<a class="cancel" href="{% url 'add-connector' %}">{% trans 'Cancel' %}</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endblock %}
|
||||
</form>
|
||||
|
||||
{% endblock %}
|
|
@ -1,6 +1,5 @@
|
|||
from django.views.decorators.csrf import csrf_exempt
|
||||
from django.conf.urls import patterns, url
|
||||
from django.contrib.auth.decorators import login_required
|
||||
from views import *
|
||||
|
||||
urlpatterns = patterns('',
|
||||
|
@ -12,9 +11,3 @@ urlpatterns = patterns('',
|
|||
url(r'^(?P<slug>[\w,-]+)/post/demande$', csrf_exempt(PostDemandeView.as_view()), name='gdc-post'),
|
||||
url(r'^(?P<slug>[\w,-]+)/status/(?P<ref>\d+)', StatusView.as_view(), name='gdc-status'),
|
||||
)
|
||||
|
||||
management_urlpatterns = patterns('',
|
||||
url(r'^add$', GdcCreateView.as_view(), name='gdc-add'),
|
||||
url(r'^(?P<slug>[\w,-]+)/edit$', GdcUpdateView.as_view(), name='gdc-edit'),
|
||||
url(r'^(?P<slug>[\w,-]+)/delete$', GdcDeleteView.as_view(), name='gdc-delete'),
|
||||
)
|
||||
|
|
|
@ -11,18 +11,13 @@ try:
|
|||
except ImportError:
|
||||
phpserialize = None
|
||||
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.http import Http404
|
||||
from django.shortcuts import redirect
|
||||
from django.views.generic.base import View, RedirectView
|
||||
from django.views.generic.base import View
|
||||
from django.views.generic.detail import SingleObjectMixin, DetailView
|
||||
from django.views.generic.edit import CreateView, UpdateView, DeleteView
|
||||
|
||||
from passerelle import utils
|
||||
from passerelle.base.views import ResourceView
|
||||
|
||||
from .models import Gdc
|
||||
from .forms import GdcForm
|
||||
|
||||
def phpserialize_loads(s):
|
||||
if phpserialize is None:
|
||||
|
@ -214,20 +209,3 @@ class GdcDetailView(DetailView):
|
|||
if SOAPpy is None:
|
||||
context['missing_soappy'] = True
|
||||
return context
|
||||
|
||||
|
||||
class GdcCreateView(CreateView):
|
||||
model = Gdc
|
||||
form_class = GdcForm
|
||||
|
||||
|
||||
class GdcUpdateView(UpdateView):
|
||||
model = Gdc
|
||||
form_class = GdcForm
|
||||
|
||||
|
||||
class GdcDeleteView(DeleteView):
|
||||
model = Gdc
|
||||
|
||||
def get_success_url(self):
|
||||
return reverse('manage-home')
|
||||
|
|
|
@ -0,0 +1,31 @@
|
|||
# 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 = 'mobyt'
|
||||
label = 'mobyt'
|
||||
|
||||
def get_after_urls(self):
|
||||
from . import urls
|
||||
return urls.urlpatterns
|
||||
|
||||
def get_connector_model(self):
|
||||
from . import models
|
||||
return models.MobytSMSGateway
|
||||
|
||||
default_app_config = 'mobyt.AppConfig'
|
|
@ -1,14 +0,0 @@
|
|||
from django.utils.text import slugify
|
||||
from django import forms
|
||||
|
||||
from .models import MobytSMSGateway
|
||||
|
||||
class MobytSMSGatewayForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = MobytSMSGateway
|
||||
exclude = ('slug', 'users')
|
||||
|
||||
def save(self, commit=True):
|
||||
if not self.instance.slug:
|
||||
self.instance.slug = slugify(self.instance.title)
|
||||
return super(MobytSMSGatewayForm, self).save(commit=commit)
|
|
@ -37,10 +37,6 @@ class MobytSMSGateway(BaseResource, SMSGatewayMixin):
|
|||
verbose_name = 'Mobyt'
|
||||
db_table = 'sms_mobyt'
|
||||
|
||||
@classmethod
|
||||
def get_verbose_name(cls):
|
||||
return cls._meta.verbose_name
|
||||
|
||||
@classmethod
|
||||
def get_icon_class(cls):
|
||||
return 'phone'
|
||||
|
@ -48,15 +44,11 @@ class MobytSMSGateway(BaseResource, SMSGatewayMixin):
|
|||
def get_absolute_url(self):
|
||||
return reverse('mobyt-view', kwargs={'slug': self.slug})
|
||||
|
||||
@classmethod
|
||||
def get_add_url(cls):
|
||||
return reverse('mobyt-add')
|
||||
|
||||
def get_edit_url(self):
|
||||
return reverse('mobyt-edit', kwargs={'slug': self.slug})
|
||||
return reverse('edit-connector', kwargs={'connector': 'mobyt', 'slug': self.slug})
|
||||
|
||||
def get_delete_url(self):
|
||||
return reverse('mobyt-delete', kwargs={'slug': self.slug})
|
||||
return reverse('delete-connector', kwargs={'connector': 'mobyt', 'slug': self.slug})
|
||||
|
||||
def send(self, text, sender, destinations):
|
||||
"""Send a SMS using the Mobyt provider"""
|
||||
|
|
|
@ -5,9 +5,3 @@ urlpatterns = patterns('',
|
|||
url(r'^(?P<slug>[\w,-]+)/$', MobytDetailView.as_view(), name='mobyt-view'),
|
||||
url(r'^(?P<slug>[\w,-]+)/send$', MobytSendView.as_view(), name='mobyt-send'),
|
||||
)
|
||||
|
||||
management_urlpatterns = patterns('',
|
||||
url(r'^add$', MobytCreateView.as_view(), name='mobyt-add'),
|
||||
url(r'^(?P<slug>[\w,-]+)/edit$', MobytUpdateView.as_view(), name='mobyt-edit'),
|
||||
url(r'^(?P<slug>[\w,-]+)/delete$', MobytDeleteView.as_view(), name='mobyt-delete'),
|
||||
)
|
||||
|
|
|
@ -1,11 +1,7 @@
|
|||
from django.core.urlresolvers import reverse
|
||||
from django.views.generic.edit import CreateView, UpdateView, DeleteView
|
||||
|
||||
from passerelle.base.views import ResourceView
|
||||
from passerelle.sms.views import SendView
|
||||
|
||||
from .models import MobytSMSGateway
|
||||
from .forms import MobytSMSGatewayForm
|
||||
|
||||
|
||||
class MobytDetailView(ResourceView):
|
||||
|
@ -13,25 +9,5 @@ class MobytDetailView(ResourceView):
|
|||
template_name = 'passerelle/manage/messages_service_view.html'
|
||||
|
||||
|
||||
class MobytCreateView(CreateView):
|
||||
model = MobytSMSGateway
|
||||
template_name = 'passerelle/manage/service_form.html'
|
||||
form_class = MobytSMSGatewayForm
|
||||
|
||||
|
||||
class MobytUpdateView(UpdateView):
|
||||
model = MobytSMSGateway
|
||||
template_name = 'passerelle/manage/service_form.html'
|
||||
form_class = MobytSMSGatewayForm
|
||||
|
||||
|
||||
class MobytDeleteView(DeleteView):
|
||||
model = MobytSMSGateway
|
||||
template_name = 'passerelle/manage/service_confirm_delete.html'
|
||||
|
||||
def get_success_url(self):
|
||||
return reverse('manage-home')
|
||||
|
||||
|
||||
class MobytSendView(SendView):
|
||||
model = MobytSMSGateway
|
||||
|
|
|
@ -0,0 +1,31 @@
|
|||
# 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 = 'orange'
|
||||
label = 'orange'
|
||||
|
||||
def get_after_urls(self):
|
||||
from . import urls
|
||||
return urls.urlpatterns
|
||||
|
||||
def get_connector_model(self):
|
||||
from . import models
|
||||
return models.OrangeSMSGateway
|
||||
|
||||
default_app_config = 'orange.AppConfig'
|
|
@ -1,14 +0,0 @@
|
|||
from django.utils.text import slugify
|
||||
from django import forms
|
||||
|
||||
from .models import OrangeSMSGateway
|
||||
|
||||
class OrangeSMSGatewayForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = OrangeSMSGateway
|
||||
exclude = ('slug', 'users')
|
||||
|
||||
def save(self, commit=True):
|
||||
if not self.instance.slug:
|
||||
self.instance.slug = slugify(self.instance.title)
|
||||
return super(OrangeSMSGatewayForm, self).save(commit=commit)
|
|
@ -28,10 +28,6 @@ class OrangeSMSGateway(BaseResource, SMSGatewayMixin):
|
|||
verbose_name = 'Orange'
|
||||
db_table = 'sms_orange'
|
||||
|
||||
@classmethod
|
||||
def get_verbose_name(cls):
|
||||
return cls._meta.verbose_name
|
||||
|
||||
@classmethod
|
||||
def get_icon_class(cls):
|
||||
return 'phone'
|
||||
|
@ -39,15 +35,11 @@ class OrangeSMSGateway(BaseResource, SMSGatewayMixin):
|
|||
def get_absolute_url(self):
|
||||
return reverse('orange-view', kwargs={'slug': self.slug})
|
||||
|
||||
@classmethod
|
||||
def get_add_url(cls):
|
||||
return reverse('orange-add')
|
||||
|
||||
def get_edit_url(self):
|
||||
return reverse('orange-edit', kwargs={'slug': self.slug})
|
||||
return reverse('edit-connector', kwargs={'connector': 'orange', 'slug': self.slug})
|
||||
|
||||
def get_delete_url(self):
|
||||
return reverse('orange-delete', kwargs={'slug': self.slug})
|
||||
return reverse('delete-connector', kwargs={'connector': 'orange', 'slug': self.slug})
|
||||
|
||||
def send(self, text, sender, destinations):
|
||||
logger = logging.getLogger('passerelle.apps.orange')
|
||||
|
|
|
@ -5,9 +5,3 @@ urlpatterns = patterns('',
|
|||
url(r'^(?P<slug>[\w,-]+)/$', OrangeDetailView.as_view(), name='orange-view'),
|
||||
url(r'^(?P<slug>[\w,-]+)/send$', OrangeSendView.as_view(), name='orange-send'),
|
||||
)
|
||||
|
||||
management_urlpatterns = patterns('',
|
||||
url(r'^add$', OrangeCreateView.as_view(), name='orange-add'),
|
||||
url(r'^(?P<slug>[\w,-]+)/edit$', OrangeUpdateView.as_view(), name='orange-edit'),
|
||||
url(r'^(?P<slug>[\w,-]+)/delete$', OrangeDeleteView.as_view(), name='orange-delete'),
|
||||
)
|
||||
|
|
|
@ -1,11 +1,7 @@
|
|||
from django.core.urlresolvers import reverse
|
||||
from django.views.generic.edit import CreateView, UpdateView, DeleteView
|
||||
|
||||
from passerelle.base.views import ResourceView
|
||||
from passerelle.sms.views import SendView
|
||||
|
||||
from .models import OrangeSMSGateway
|
||||
from .forms import OrangeSMSGatewayForm
|
||||
|
||||
|
||||
class OrangeDetailView(ResourceView):
|
||||
|
@ -13,25 +9,5 @@ class OrangeDetailView(ResourceView):
|
|||
template_name = 'passerelle/manage/messages_service_view.html'
|
||||
|
||||
|
||||
class OrangeCreateView(CreateView):
|
||||
model = OrangeSMSGateway
|
||||
template_name = 'passerelle/manage/service_form.html'
|
||||
form_class = OrangeSMSGatewayForm
|
||||
|
||||
|
||||
class OrangeUpdateView(UpdateView):
|
||||
model = OrangeSMSGateway
|
||||
template_name = 'passerelle/manage/service_form.html'
|
||||
form_class = OrangeSMSGatewayForm
|
||||
|
||||
|
||||
class OrangeDeleteView(DeleteView):
|
||||
model = OrangeSMSGateway
|
||||
template_name = 'passerelle/manage/service_confirm_delete.html'
|
||||
|
||||
def get_success_url(self):
|
||||
return reverse('manage-home')
|
||||
|
||||
|
||||
class OrangeSendView(SendView):
|
||||
model = OrangeSMSGateway
|
||||
|
|
|
@ -0,0 +1,31 @@
|
|||
# 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'
|
|
@ -1,14 +0,0 @@
|
|||
from django.utils.text import slugify
|
||||
from django import forms
|
||||
|
||||
from .models import OVHSMSGateway
|
||||
|
||||
class OVHSMSGatewayForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = OVHSMSGateway
|
||||
exclude = ('slug', 'users')
|
||||
|
||||
def save(self, commit=True):
|
||||
if not self.instance.slug:
|
||||
self.instance.slug = slugify(self.instance.title)
|
||||
return super(OVHSMSGatewayForm, self).save(commit=commit)
|
|
@ -1,6 +1,4 @@
|
|||
import re
|
||||
import urllib
|
||||
import urllib2
|
||||
import logging
|
||||
import json
|
||||
|
||||
|
@ -45,10 +43,6 @@ class OVHSMSGateway(BaseResource, SMSGatewayMixin):
|
|||
verbose_name = 'OVH'
|
||||
db_table = 'sms_ovh'
|
||||
|
||||
@classmethod
|
||||
def get_verbose_name(cls):
|
||||
return cls._meta.verbose_name
|
||||
|
||||
@classmethod
|
||||
def get_icon_class(cls):
|
||||
return 'phone'
|
||||
|
@ -56,15 +50,11 @@ class OVHSMSGateway(BaseResource, SMSGatewayMixin):
|
|||
def get_absolute_url(self):
|
||||
return reverse('ovh-view', kwargs={'slug': self.slug})
|
||||
|
||||
@classmethod
|
||||
def get_add_url(cls):
|
||||
return reverse('ovh-add')
|
||||
|
||||
def get_edit_url(self):
|
||||
return reverse('ovh-edit', kwargs={'slug': self.slug})
|
||||
return reverse('edit-connector', kwargs={'connector': 'ovh', 'slug': self.slug})
|
||||
|
||||
def get_delete_url(self):
|
||||
return reverse('ovh-delete', kwargs={'slug': self.slug})
|
||||
return reverse('delete-connector', kwargs={'connector': 'ovh', 'slug': self.slug})
|
||||
|
||||
def send(self, text, sender, destinations):
|
||||
"""Send a SMS using the OVH provider"""
|
||||
|
|
|
@ -5,9 +5,3 @@ urlpatterns = patterns('',
|
|||
url(r'^(?P<slug>[\w,-]+)/$', OvhDetailView.as_view(), name='ovh-view'),
|
||||
url(r'^(?P<slug>[\w,-]+)/send$', OvhSendView.as_view(), name='ovh-send'),
|
||||
)
|
||||
|
||||
management_urlpatterns = patterns('',
|
||||
url(r'^add$', OvhCreateView.as_view(), name='ovh-add'),
|
||||
url(r'^(?P<slug>[\w,-]+)/edit$', OvhUpdateView.as_view(), name='ovh-edit'),
|
||||
url(r'^(?P<slug>[\w,-]+)/delete$', OvhDeleteView.as_view(), name='ovh-delete'),
|
||||
)
|
||||
|
|
|
@ -1,11 +1,7 @@
|
|||
from django.core.urlresolvers import reverse
|
||||
from django.views.generic.edit import CreateView, UpdateView, DeleteView
|
||||
|
||||
from passerelle.base.views import ResourceView
|
||||
from passerelle.sms.views import SendView
|
||||
|
||||
from .models import OVHSMSGateway
|
||||
from .forms import OVHSMSGatewayForm
|
||||
|
||||
|
||||
class OvhDetailView(ResourceView):
|
||||
|
@ -13,25 +9,5 @@ class OvhDetailView(ResourceView):
|
|||
template_name = 'passerelle/manage/messages_service_view.html'
|
||||
|
||||
|
||||
class OvhCreateView(CreateView):
|
||||
model = OVHSMSGateway
|
||||
template_name = 'passerelle/manage/service_form.html'
|
||||
form_class = OVHSMSGatewayForm
|
||||
|
||||
|
||||
class OvhUpdateView(UpdateView):
|
||||
model = OVHSMSGateway
|
||||
template_name = 'passerelle/manage/service_form.html'
|
||||
form_class = OVHSMSGatewayForm
|
||||
|
||||
|
||||
class OvhDeleteView(DeleteView):
|
||||
model = OVHSMSGateway
|
||||
template_name = 'passerelle/manage/service_confirm_delete.html'
|
||||
|
||||
def get_success_url(self):
|
||||
return reverse('manage-home')
|
||||
|
||||
|
||||
class OvhSendView(SendView):
|
||||
model = OVHSMSGateway
|
||||
|
|
|
@ -0,0 +1,31 @@
|
|||
# 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 = 'oxyd'
|
||||
label = 'oxyd'
|
||||
|
||||
def get_after_urls(self):
|
||||
from . import urls
|
||||
return urls.urlpatterns
|
||||
|
||||
def get_connector_model(self):
|
||||
from . import models
|
||||
return models.OxydSMSGateway
|
||||
|
||||
default_app_config = 'oxyd.AppConfig'
|
|
@ -1,14 +0,0 @@
|
|||
from django.utils.text import slugify
|
||||
from django import forms
|
||||
|
||||
from .models import OxydSMSGateway
|
||||
|
||||
class OxydSMSGatewayForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = OxydSMSGateway
|
||||
exclude = ('slug', 'users')
|
||||
|
||||
def save(self, commit=True):
|
||||
if not self.instance.slug:
|
||||
self.instance.slug = slugify(self.instance.title)
|
||||
return super(OxydSMSGatewayForm, self).save(commit=commit)
|
|
@ -1,8 +1,6 @@
|
|||
import re
|
||||
import urllib
|
||||
import urllib2
|
||||
import logging
|
||||
import json
|
||||
|
||||
from django.db import models
|
||||
from django.core.urlresolvers import reverse
|
||||
|
@ -27,10 +25,6 @@ class OxydSMSGateway(BaseResource, SMSGatewayMixin):
|
|||
verbose_name = 'Oxyd'
|
||||
db_table = 'sms_oxyd'
|
||||
|
||||
@classmethod
|
||||
def get_verbose_name(cls):
|
||||
return cls._meta.verbose_name
|
||||
|
||||
@classmethod
|
||||
def get_icon_class(cls):
|
||||
return 'phone'
|
||||
|
@ -38,15 +32,11 @@ class OxydSMSGateway(BaseResource, SMSGatewayMixin):
|
|||
def get_absolute_url(self):
|
||||
return reverse('oxyd-view', kwargs={'slug': self.slug})
|
||||
|
||||
@classmethod
|
||||
def get_add_url(cls):
|
||||
return reverse('oxyd-add')
|
||||
|
||||
def get_edit_url(self):
|
||||
return reverse('oxyd-edit', kwargs={'slug': self.slug})
|
||||
return reverse('edit-connector', kwargs={'connector': 'oxyd', 'slug': self.slug})
|
||||
|
||||
def get_delete_url(self):
|
||||
return reverse('oxyd-delete', kwargs={'slug': self.slug})
|
||||
return reverse('delete-connector', kwargs={'connector': 'oxyd', 'slug': self.slug})
|
||||
|
||||
def send(self, text, sender, destinations):
|
||||
"""Send a SMS using the Oxyd provider"""
|
||||
|
|
|
@ -5,9 +5,3 @@ urlpatterns = patterns('',
|
|||
url(r'^(?P<slug>[\w,-]+)/$', OxydDetailView.as_view(), name='oxyd-view'),
|
||||
url(r'^(?P<slug>[\w,-]+)/send$', OxydSendView.as_view(), name='oxyd-send'),
|
||||
)
|
||||
|
||||
management_urlpatterns = patterns('',
|
||||
url(r'^add$', OxydCreateView.as_view(), name='oxyd-add'),
|
||||
url(r'^(?P<slug>[\w,-]+)/edit$', OxydUpdateView.as_view(), name='oxyd-edit'),
|
||||
url(r'^(?P<slug>[\w,-]+)/delete$', OxydDeleteView.as_view(), name='oxyd-delete'),
|
||||
)
|
||||
|
|
|
@ -1,11 +1,7 @@
|
|||
from django.core.urlresolvers import reverse
|
||||
from django.views.generic.edit import CreateView, UpdateView, DeleteView
|
||||
|
||||
from passerelle.base.views import ResourceView
|
||||
from passerelle.sms.views import SendView
|
||||
|
||||
from .models import OxydSMSGateway
|
||||
from .forms import OxydSMSGatewayForm
|
||||
|
||||
|
||||
class OxydDetailView(ResourceView):
|
||||
|
@ -13,25 +9,5 @@ class OxydDetailView(ResourceView):
|
|||
template_name = 'passerelle/manage/messages_service_view.html'
|
||||
|
||||
|
||||
class OxydCreateView(CreateView):
|
||||
model = OxydSMSGateway
|
||||
template_name = 'passerelle/manage/service_form.html'
|
||||
form_class = OxydSMSGatewayForm
|
||||
|
||||
|
||||
class OxydUpdateView(UpdateView):
|
||||
model = OxydSMSGateway
|
||||
template_name = 'passerelle/manage/service_form.html'
|
||||
form_class = OxydSMSGatewayForm
|
||||
|
||||
|
||||
class OxydDeleteView(DeleteView):
|
||||
model = OxydSMSGateway
|
||||
template_name = 'passerelle/manage/service_confirm_delete.html'
|
||||
|
||||
def get_success_url(self):
|
||||
return reverse('manage-home')
|
||||
|
||||
|
||||
class OxydSendView(SendView):
|
||||
model = OxydSMSGateway
|
||||
|
|
|
@ -0,0 +1,35 @@
|
|||
# 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 = 'pastell'
|
||||
label = 'pastell'
|
||||
|
||||
def get_after_urls(self):
|
||||
from . import urls
|
||||
return urls.urlpatterns
|
||||
|
||||
def get_connector_model(self):
|
||||
from . import models
|
||||
return models.Pastell
|
||||
|
||||
def get_form_class(self):
|
||||
from . import forms
|
||||
return forms.PastellForm
|
||||
|
||||
default_app_config = 'pastell.AppConfig'
|
|
@ -1,19 +1,14 @@
|
|||
from django.utils.text import slugify
|
||||
from django import forms
|
||||
|
||||
from passerelle.forms import GenericConnectorForm
|
||||
|
||||
from .models import Pastell
|
||||
|
||||
class PastellForm(forms.ModelForm):
|
||||
class PastellForm(GenericConnectorForm):
|
||||
class Meta:
|
||||
model = Pastell
|
||||
exclude = ('slug', 'users', 'document_type', 'document_fields')
|
||||
|
||||
def save(self, commit=True):
|
||||
if not self.instance.slug:
|
||||
self.instance.slug = slugify(self.instance.title)
|
||||
return super(PastellForm, self).save(commit=commit)
|
||||
|
||||
|
||||
|
||||
class PastellTypeForm(forms.ModelForm):
|
||||
class Meta:
|
||||
|
|
|
@ -1,8 +0,0 @@
|
|||
{% extends "passerelle/manage.html" %}
|
||||
|
||||
{% block breadcrumb %}
|
||||
{{ block.super }}
|
||||
{% if object.id %}
|
||||
<a href="{% url 'pastell-view' slug=object.slug %}">{{ object.title }}</a>
|
||||
{% endif %}
|
||||
{% endblock %}
|
|
@ -1,13 +1,20 @@
|
|||
{% extends "pastell/base.html" %}
|
||||
{% extends "passerelle/manage.html" %}
|
||||
{% load i18n passerelle %}
|
||||
|
||||
{% block breadcrumb %}
|
||||
{{ block.super }}
|
||||
{% if object.id %}
|
||||
<a href="{% url 'pastell-view' slug=object.slug %}">{{ object.title }}</a>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
{% block appbar %}
|
||||
<h2>Pastell - {{ object.title }}</h2>
|
||||
{% if perms.pastell.change_pastell %}
|
||||
<a rel="popup" class="button" href="{% url 'pastell-edit' slug=object.slug %}">{% trans 'edit' %}</a>
|
||||
<a rel="popup" class="button" href="{% url 'edit-connector' slug=object.slug connector="pastell" %}">{% trans 'edit' %}</a>
|
||||
{% endif %}
|
||||
{% if perms.pastell.delete_pastell %}
|
||||
<a rel="popup" class="button" href="{% url 'pastell-delete' slug=object.slug %}">{% trans 'delete' %}</a>
|
||||
<a rel="popup" class="button" href="{% url 'delete-connector' slug=object.slug connector="pastell" %}">{% trans 'delete' %}</a>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
from django.views.decorators.csrf import csrf_exempt
|
||||
from django.conf.urls import patterns, url
|
||||
from django.contrib.auth.decorators import login_required
|
||||
from views import *
|
||||
|
||||
urlpatterns = patterns('',
|
||||
|
@ -10,9 +9,6 @@ urlpatterns = patterns('',
|
|||
)
|
||||
|
||||
management_urlpatterns = patterns('',
|
||||
url(r'^add$', PastellCreateView.as_view(), name='pastell-add'),
|
||||
url(r'^(?P<slug>[\w,-]+)/edit$', PastellUpdateView.as_view(), name='pastell-edit'),
|
||||
url(r'^(?P<slug>[\w,-]+)/type$', PastellTypeView.as_view(), name='pastell-type'),
|
||||
url(r'^(?P<slug>[\w,-]+)/fields$', PastellFieldsView.as_view(), name='pastell-fields'),
|
||||
url(r'^(?P<slug>[\w,-]+)/delete$', PastellDeleteView.as_view(), name='pastell-delete'),
|
||||
)
|
||||
|
|
|
@ -1,17 +1,14 @@
|
|||
import json
|
||||
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.http import Http404
|
||||
from django.shortcuts import redirect
|
||||
from django.views.generic.base import View, RedirectView
|
||||
from django.views.generic.base import View
|
||||
from django.views.generic.detail import SingleObjectMixin, DetailView
|
||||
from django.views.generic.edit import CreateView, UpdateView, DeleteView
|
||||
from django.views.generic.edit import UpdateView
|
||||
|
||||
from passerelle import utils
|
||||
from passerelle.base.views import ResourceView
|
||||
|
||||
from .models import Pastell
|
||||
from .forms import PastellForm, PastellTypeForm, PastellFieldsForm
|
||||
from .forms import PastellTypeForm, PastellFieldsForm
|
||||
|
||||
class PostView(View, SingleObjectMixin):
|
||||
model = Pastell
|
||||
|
@ -38,26 +35,6 @@ class PastellDetailView(DetailView):
|
|||
return context
|
||||
|
||||
|
||||
class PastellCreateView(CreateView):
|
||||
model = Pastell
|
||||
form_class = PastellForm
|
||||
template_name = 'passerelle/manage/service_form.html'
|
||||
|
||||
|
||||
class PastellUpdateView(UpdateView):
|
||||
model = Pastell
|
||||
form_class = PastellForm
|
||||
template_name = 'passerelle/manage/service_form.html'
|
||||
|
||||
|
||||
class PastellDeleteView(DeleteView):
|
||||
model = Pastell
|
||||
template_name = 'passerelle/manage/service_confirm_delete.html'
|
||||
|
||||
def get_success_url(self):
|
||||
return reverse('manage-home')
|
||||
|
||||
|
||||
class PastellTypeView(UpdateView):
|
||||
model = Pastell
|
||||
form_class = PastellTypeForm
|
||||
|
|
|
@ -2,6 +2,7 @@ import logging
|
|||
|
||||
from django.conf import settings
|
||||
from django.core.exceptions import ValidationError, ObjectDoesNotExist
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.db import models
|
||||
from django.db.models import Q
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
@ -124,6 +125,18 @@ class BaseResource(models.Model):
|
|||
def requests(self):
|
||||
return passerelle.utils.LoggedRequest(logger=self.logger)
|
||||
|
||||
@classmethod
|
||||
def get_verbose_name(cls):
|
||||
return cls._meta.verbose_name
|
||||
|
||||
@classmethod
|
||||
def get_connector_slug(cls):
|
||||
return cls._meta.app_label.replace('_', '-')
|
||||
|
||||
@classmethod
|
||||
def get_add_url(cls):
|
||||
return reverse('create-connector', kwargs={'connector': cls.get_connector_slug()})
|
||||
|
||||
|
||||
class AccessRight(models.Model):
|
||||
codename = models.CharField(max_length=100, verbose_name='codename')
|
||||
|
|
|
@ -24,4 +24,8 @@ class AppConfig(django.apps.AppConfig):
|
|||
from . import urls
|
||||
return urls.urlpatterns
|
||||
|
||||
def get_connector_model(self):
|
||||
from . import models
|
||||
return models.StubInvoicesConnector
|
||||
|
||||
default_app_config = 'passerelle.contrib.stub_invoices.AppConfig'
|
||||
|
|
|
@ -36,17 +36,9 @@ class StubInvoicesConnector(BaseResource):
|
|||
def get_icon_class(cls):
|
||||
return 'ressources'
|
||||
|
||||
@classmethod
|
||||
def get_verbose_name(cls):
|
||||
return cls._meta.verbose_name
|
||||
|
||||
def get_absolute_url(self):
|
||||
return reverse('stub-invoices-view', kwargs={'slug': self.slug})
|
||||
|
||||
@classmethod
|
||||
def get_add_url(cls):
|
||||
return reverse('stub-invoices-add')
|
||||
|
||||
# generate a serie of stub invoices
|
||||
invoices = {}
|
||||
for i in range(15):
|
||||
|
|
|
@ -10,11 +10,11 @@
|
|||
|
||||
{% block appbar %}
|
||||
<h2>Stub Invoices - {{ object.title }}</h2>
|
||||
{% if perms.teamnet_axel.change_teamnet_axel %}
|
||||
<a rel="popup" class="button" href="{% url 'stub-invoices-edit' slug=object.slug %}">{% trans 'edit' %}</a>
|
||||
{% if perms.stub_invoices.change_stub_invoice_connector %}
|
||||
<a rel="popup" class="button" href="{% url 'edit-connector' slug=object.slug connector="stub-invoices" %}">{% trans 'edit' %}</a>
|
||||
{% endif %}
|
||||
{% if perms.teamnet_axel.delete_teamnet_axel %}
|
||||
<a rel="popup" class="button" href="{% url 'stub-invoices-delete' slug=object.slug %}">{% trans 'delete' %}</a>
|
||||
{% if perms.stub_invoices.delete_stub_invoice_connector %}
|
||||
<a rel="popup" class="button" href="{% url 'delete-connector' slug=object.slug connector="stub-invoices" %}">{% trans 'delete' %}</a>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
|
|
|
@ -16,13 +16,12 @@
|
|||
|
||||
|
||||
from django.conf.urls import patterns, include, url
|
||||
from passerelle.urls_utils import decorated_includes, required, app_enabled
|
||||
from django.contrib.auth.decorators import login_required
|
||||
|
||||
from .views import *
|
||||
|
||||
|
||||
public_urlpatterns = patterns('',
|
||||
urlpatterns = patterns('',
|
||||
url(r'^(?P<slug>[\w,-]+)/$', StubInvoicesConnectorDetailView.as_view(),
|
||||
name='stub-invoices-view'),
|
||||
url(r'^(?P<slug>[\w,-]+)/invoices/history/$', HistoryInvoicesView.as_view(),
|
||||
|
@ -37,21 +36,3 @@ public_urlpatterns = patterns('',
|
|||
InvoicePayView.as_view(),
|
||||
name='stub-invoices-invoice-payment'),
|
||||
)
|
||||
|
||||
management_urlpatterns = patterns('',
|
||||
url(r'^add$', StubInvoicesConnectorCreateView.as_view(),
|
||||
name='stub-invoices-add'),
|
||||
url(r'^(?P<slug>[\w,-]+)/edit$', StubInvoicesConnectorUpdateView.as_view(),
|
||||
name='stub-invoices-edit'),
|
||||
url(r'^(?P<slug>[\w,-]+)/delete$', StubInvoicesConnectorDeleteView.as_view(),
|
||||
name='stub-invoices-delete'),
|
||||
)
|
||||
|
||||
urlpatterns = required(
|
||||
app_enabled('stub_invoices'),
|
||||
patterns('',
|
||||
url(r'^stub-invoices/', include(public_urlpatterns)),
|
||||
url(r'^manage/stub-invoices/',
|
||||
decorated_includes(login_required, include(management_urlpatterns))),
|
||||
)
|
||||
)
|
||||
|
|
|
@ -26,7 +26,6 @@ from django.http import HttpResponse, Http404
|
|||
from passerelle import utils
|
||||
|
||||
from .models import StubInvoicesConnector
|
||||
from .forms import StubInvoicesConnectorForm
|
||||
|
||||
|
||||
class StubInvoicesConnectorDetailView(DetailView):
|
||||
|
@ -34,26 +33,6 @@ class StubInvoicesConnectorDetailView(DetailView):
|
|||
template_name = 'passerelle/stub-invoices/detail.html'
|
||||
|
||||
|
||||
class StubInvoicesConnectorCreateView(CreateView):
|
||||
model = StubInvoicesConnector
|
||||
form_class = StubInvoicesConnectorForm
|
||||
template_name = 'passerelle/manage/service_form.html'
|
||||
|
||||
|
||||
class StubInvoicesConnectorUpdateView(UpdateView):
|
||||
model = StubInvoicesConnector
|
||||
form_class = StubInvoicesConnectorForm
|
||||
template_name = 'passerelle/manage/service_form.html'
|
||||
|
||||
|
||||
class StubInvoicesConnectorDeleteView(DeleteView):
|
||||
model = StubInvoicesConnector
|
||||
template_name = 'passerelle/manage/service_confirm_delete.html'
|
||||
|
||||
def get_success_url(self):
|
||||
return reverse('manage-home')
|
||||
|
||||
|
||||
class InvoicesView(DetailView):
|
||||
model = StubInvoicesConnector
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# passerelle.contrib.tlmcom
|
||||
# passerelle - uniform access to multiple data sources and services
|
||||
# Copyright (C) 2015 Entr'ouvert
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify it
|
||||
|
@ -24,4 +24,8 @@ class AppConfig(django.apps.AppConfig):
|
|||
from . import urls
|
||||
return urls.urlpatterns
|
||||
|
||||
def get_connector_model(self):
|
||||
from . import models
|
||||
return models.TlmCom
|
||||
|
||||
default_app_config = 'passerelle.contrib.tlmcom.AppConfig'
|
||||
|
|
|
@ -1,35 +0,0 @@
|
|||
# passerelle.contrib.tlmcom.
|
||||
# Copyright (C) 2015 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/>.
|
||||
|
||||
from django.utils.text import slugify
|
||||
from django import forms
|
||||
|
||||
from .models import TlmCom
|
||||
|
||||
class TlmComForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = TlmCom
|
||||
exclude = ('slug', 'users')
|
||||
|
||||
def save(self, commit=True):
|
||||
if not self.instance.slug:
|
||||
self.instance.slug = slugify(self.instance.title)
|
||||
return super(TlmComForm, self).save(commit=commit)
|
||||
|
||||
class TlmComUpdateForm(TlmComForm):
|
||||
class Meta:
|
||||
model = TlmCom
|
||||
exclude = ('users',)
|
|
@ -5,17 +5,9 @@ from django.utils.translation import ugettext_lazy as _
|
|||
|
||||
|
||||
class TlmCom(PBXMixin):
|
||||
@classmethod
|
||||
def get_verbose_name(cls):
|
||||
return cls._meta.verbose_name
|
||||
|
||||
def get_absolute_url(self):
|
||||
return reverse('tlmcom-view', kwargs={'slug': self.slug})
|
||||
|
||||
@classmethod
|
||||
def get_add_url(cls):
|
||||
return reverse('tlmcom-add')
|
||||
|
||||
class Meta:
|
||||
verbose_name = _('TLM COM PBX')
|
||||
verbose_name_plural = _('TLM COM PBX')
|
||||
|
|
|
@ -11,10 +11,10 @@
|
|||
{% block appbar %}
|
||||
<h2>TlmCom - {{ object.title }}</h2>
|
||||
{% if perms.tlmcom.change_tlmcom %}
|
||||
<a rel="popup" class="button" href="{% url 'tlmcom-edit' slug=object.slug %}">{% trans 'edit' %}</a>
|
||||
<a rel="popup" class="button" href="{% url 'edit-connector' slug=object.slug connector="tlmcom" %}">{% trans 'edit' %}</a>
|
||||
{% endif %}
|
||||
{% if perms.tlmcom.delete_tlmcom %}
|
||||
<a rel="popup" class="button" href="{% url 'tlmcom-delete' slug=object.slug %}">{% trans 'delete' %}</a>
|
||||
<a rel="popup" class="button" href="{% url 'delete-connector' slug=object.slug connector="tlmcom" %}">{% trans 'delete' %}</a>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
|
|
|
@ -14,37 +14,14 @@
|
|||
# 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/>.
|
||||
|
||||
from django.conf.urls import patterns, include, url
|
||||
from passerelle.urls_utils import decorated_includes, required, app_enabled
|
||||
from django.contrib.auth.decorators import login_required
|
||||
from django.conf.urls import patterns, url
|
||||
from .views import TlmComDetailView, CallStart, CallStop
|
||||
|
||||
from .views import (TlmComDetailView, CallStart, CallStop, TlmComCreateView,
|
||||
TlmComUpdateView, TlmComDeleteView)
|
||||
|
||||
public_urlpatterns = patterns('',
|
||||
url(r'^(?P<slug>[\w,-]+)/$',
|
||||
TlmComDetailView.as_view(), name='tlmcom-view'),
|
||||
url(r'^(?P<slug>[\w,-]+)/call-start/$',
|
||||
CallStart.as_view(),
|
||||
name='tlmcom-call-start'),
|
||||
url(r'^(?P<slug>[\w,-]+)/call-stop/$',
|
||||
CallStop.as_view(), name='tlmcom-call-stop'),
|
||||
)
|
||||
|
||||
management_urlpatterns = patterns('',
|
||||
url(r'^add$', TlmComCreateView.as_view(),
|
||||
name='tlmcom-add'),
|
||||
url(r'^(?P<slug>[\w,-]+)/edit$', TlmComUpdateView.as_view(),
|
||||
name='tlmcom-edit'),
|
||||
url(r'^(?P<slug>[\w,-]+)/delete$', TlmComDeleteView.as_view(),
|
||||
name='tlmcom-delete'),
|
||||
)
|
||||
|
||||
urlpatterns = required(
|
||||
app_enabled('tlmcom'),
|
||||
patterns('',
|
||||
url(r'^tlmcom/', include(public_urlpatterns)),
|
||||
url(r'^manage/tlmcom/',
|
||||
decorated_includes(login_required, include(management_urlpatterns))),
|
||||
)
|
||||
urlpatterns = patterns('',
|
||||
url(r'^(?P<slug>[\w,-]+)/$',
|
||||
TlmComDetailView.as_view(), name='tlmcom-view'),
|
||||
url(r'^(?P<slug>[\w,-]+)/call-start/$',
|
||||
CallStart.as_view(), name='tlmcom-call-start'),
|
||||
url(r'^(?P<slug>[\w,-]+)/call-stop/$',
|
||||
CallStop.as_view(), name='tlmcom-call-stop'),
|
||||
)
|
||||
|
|
|
@ -14,42 +14,19 @@
|
|||
# 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/>.
|
||||
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.views.generic import DetailView as GenericDetailView
|
||||
from django.views.generic import DetailView
|
||||
from django.views.generic.base import View
|
||||
from django.views.generic.detail import SingleObjectMixin
|
||||
from django.views.generic.edit import CreateView, UpdateView, DeleteView
|
||||
from django.http import HttpResponse, HttpResponseBadRequest
|
||||
|
||||
from .models import TlmCom
|
||||
from .forms import TlmComForm, TlmComUpdateForm
|
||||
|
||||
|
||||
class TlmComDetailView(GenericDetailView):
|
||||
class TlmComDetailView(DetailView):
|
||||
model = TlmCom
|
||||
template_name = 'passerelle/contrib/tlmcom/detail.html'
|
||||
|
||||
|
||||
class TlmComCreateView(CreateView):
|
||||
model = TlmCom
|
||||
form_class = TlmComForm
|
||||
template_name = 'passerelle/manage/service_form.html'
|
||||
|
||||
|
||||
class TlmComUpdateView(UpdateView):
|
||||
model = TlmCom
|
||||
form_class = TlmComUpdateForm
|
||||
template_name = 'passerelle/manage/service_form.html'
|
||||
|
||||
|
||||
class TlmComDeleteView(DeleteView):
|
||||
model = TlmCom
|
||||
template_name = 'passerelle/manage/service_confirm_delete.html'
|
||||
|
||||
def get_success_url(self):
|
||||
return reverse('manage-home')
|
||||
|
||||
|
||||
class CallStart(SingleObjectMixin, View):
|
||||
event = 'start'
|
||||
model = TlmCom
|
||||
|
|
|
@ -17,14 +17,8 @@
|
|||
from django.utils.text import slugify
|
||||
from django import forms
|
||||
|
||||
from .models import StubInvoicesConnector
|
||||
|
||||
class StubInvoicesConnectorForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = StubInvoicesConnector
|
||||
exclude = ('slug', 'users')
|
||||
|
||||
class GenericConnectorForm(forms.ModelForm):
|
||||
def save(self, commit=True):
|
||||
if not self.instance.slug:
|
||||
self.instance.slug = slugify(self.instance.title)
|
||||
return super(StubInvoicesConnectorForm, self).save(commit=commit)
|
||||
return super(GenericConnectorForm, self).save(commit=commit)
|
|
@ -17,6 +17,8 @@
|
|||
from django.apps import apps
|
||||
from django.conf.urls import patterns, include, url
|
||||
|
||||
from .urls_utils import decorated_includes, required, app_enabled
|
||||
|
||||
|
||||
def register_apps_urls(urlpatterns):
|
||||
'''Call get_before_urls and get_after_urls on all apps providing them,
|
||||
|
@ -25,14 +27,17 @@ def register_apps_urls(urlpatterns):
|
|||
before_urls = []
|
||||
after_urls = []
|
||||
for app in apps.get_app_configs():
|
||||
url_prefix = '^%s/' % getattr(app, 'url_prefix', app.label.replace('_', '-'))
|
||||
if hasattr(app, 'get_before_urls'):
|
||||
urls = app.get_before_urls()
|
||||
if urls:
|
||||
before_urls.append(url('^', include(urls)))
|
||||
urls = required(app_enabled(app.label), urls)
|
||||
before_urls.append(url(url_prefix, include(urls)))
|
||||
if hasattr(app, 'get_after_urls'):
|
||||
urls = app.get_after_urls()
|
||||
if urls:
|
||||
after_urls.append(url('^', include(urls)))
|
||||
urls = required(app_enabled(app.label), urls)
|
||||
after_urls.append(url(url_prefix, include(urls)))
|
||||
before_patterns = patterns('', *before_urls)
|
||||
after_patterns = patterns('', *after_urls)
|
||||
return before_patterns + urlpatterns + after_patterns
|
||||
|
|
|
@ -7,22 +7,15 @@ from django.contrib.auth.decorators import login_required
|
|||
from django.views.static import serve as static_serve
|
||||
|
||||
from .views import (HomePageView, ManageView, ManageAddView,
|
||||
GenericCreateConnectorView, GenericDeleteConnectorView,
|
||||
GenericEditConnectorView,
|
||||
LEGACY_APPS_PATTERNS, LegacyPageView, login, logout)
|
||||
from .urls_utils import decorated_includes, required, app_enabled
|
||||
from .base.urls import access_urlpatterns
|
||||
from .plugins import register_apps_urls
|
||||
|
||||
import choosit.urls
|
||||
import clicrdv.urls
|
||||
import gdc.urls
|
||||
import mobyt.urls
|
||||
import ovh.urls
|
||||
import oxyd.urls
|
||||
import pastell.urls
|
||||
import concerto.urls
|
||||
import bdp.urls
|
||||
import base_adresse.urls
|
||||
import orange.urls
|
||||
|
||||
admin.autodiscover()
|
||||
|
||||
|
@ -51,96 +44,14 @@ urlpatterns += required(
|
|||
)
|
||||
)
|
||||
|
||||
urlpatterns += required(
|
||||
app_enabled('clicrdv'),
|
||||
patterns('',
|
||||
url(r'^clicrdv/', include(clicrdv.urls.urlpatterns)),
|
||||
url(r'^manage/clicrdv/',
|
||||
decorated_includes(login_required, include(clicrdv.urls.management_urlpatterns))),
|
||||
)
|
||||
)
|
||||
|
||||
urlpatterns += required(
|
||||
app_enabled('gdc'),
|
||||
patterns('',
|
||||
url(r'^gdc/', include(gdc.urls.urlpatterns)),
|
||||
url(r'^manage/gdc/',
|
||||
decorated_includes(login_required, include(gdc.urls.management_urlpatterns))),
|
||||
)
|
||||
)
|
||||
|
||||
urlpatterns += required(
|
||||
app_enabled('mobyt'),
|
||||
patterns('',
|
||||
url(r'^mobyt/', include(mobyt.urls.urlpatterns)),
|
||||
url(r'^manage/mobyt/',
|
||||
decorated_includes(login_required, include(mobyt.urls.management_urlpatterns))),
|
||||
)
|
||||
)
|
||||
|
||||
urlpatterns += required(
|
||||
app_enabled('ovh'),
|
||||
patterns('',
|
||||
url(r'^ovh/', include(ovh.urls.urlpatterns)),
|
||||
url(r'^manage/ovh/',
|
||||
decorated_includes(login_required, include(ovh.urls.management_urlpatterns))),
|
||||
)
|
||||
)
|
||||
|
||||
urlpatterns += required(
|
||||
app_enabled('oxyd'),
|
||||
patterns('',
|
||||
url(r'^oxyd/', include(oxyd.urls.urlpatterns)),
|
||||
url(r'^manage/oxyd/',
|
||||
decorated_includes(login_required, include(oxyd.urls.management_urlpatterns))),
|
||||
)
|
||||
)
|
||||
|
||||
urlpatterns += required(
|
||||
app_enabled('pastell'),
|
||||
patterns('',
|
||||
url(r'^pastell/', include(pastell.urls.urlpatterns)),
|
||||
url(r'^manage/pastell/',
|
||||
decorated_includes(login_required, include(pastell.urls.management_urlpatterns))),
|
||||
)
|
||||
)
|
||||
|
||||
urlpatterns += required(
|
||||
app_enabled('concerto'),
|
||||
patterns('',
|
||||
url(r'^concerto/', include(concerto.urls.urlpatterns)),
|
||||
url(r'^manage/concerto/',
|
||||
decorated_includes(login_required, include(concerto.urls.management_urlpatterns))),
|
||||
)
|
||||
)
|
||||
|
||||
urlpatterns += required(
|
||||
app_enabled('bdp'),
|
||||
patterns('',
|
||||
url(r'^bdp/', include(bdp.urls.urlpatterns)),
|
||||
url(r'^manage/bdp/',
|
||||
decorated_includes(login_required, include(bdp.urls.management_urlpatterns))),
|
||||
)
|
||||
)
|
||||
|
||||
urlpatterns += required(
|
||||
app_enabled('base_adresse'),
|
||||
patterns('',
|
||||
url(r'^base_adresse/', include(base_adresse.urls.urlpatterns)),
|
||||
url(r'^manage/base_adresse/',
|
||||
decorated_includes(login_required, include(base_adresse.urls.management_urlpatterns))),
|
||||
)
|
||||
)
|
||||
|
||||
urlpatterns += required(
|
||||
app_enabled('orange'),
|
||||
patterns('',
|
||||
url(r'^orange/', include(orange.urls.urlpatterns)),
|
||||
url(r'^manage/orange/',
|
||||
decorated_includes(login_required, include(orange.urls.management_urlpatterns))),
|
||||
)
|
||||
)
|
||||
|
||||
# add patterns from apps
|
||||
urlpatterns = register_apps_urls(urlpatterns)
|
||||
|
||||
|
@ -162,5 +73,16 @@ for app, d in LEGACY_APPS_PATTERNS.items():
|
|||
{'resource_name': d['name']}),
|
||||
)
|
||||
|
||||
urlpatterns += patterns('',
|
||||
url(r'^manage/(?P<connector>[\w,-]+)/', decorated_includes(login_required,
|
||||
include(patterns('',
|
||||
url(r'^add$',
|
||||
GenericCreateConnectorView.as_view(), name='create-connector'),
|
||||
url(r'^(?P<slug>[\w,-]+)/delete$',
|
||||
GenericDeleteConnectorView.as_view(), name='delete-connector'),
|
||||
url(r'^(?P<slug>[\w,-]+)/edit$',
|
||||
GenericEditConnectorView.as_view(), name='edit-connector'),
|
||||
)))))
|
||||
|
||||
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
|
||||
urlpatterns += staticfiles_urlpatterns()
|
||||
|
|
|
@ -1,15 +1,14 @@
|
|||
import json
|
||||
|
||||
from django.apps import apps
|
||||
from django.contrib.auth import logout as auth_logout
|
||||
from django.contrib.auth import views as auth_views
|
||||
from django.http import HttpResponseRedirect, HttpResponse
|
||||
from django.views.generic.base import RedirectView, TemplateView
|
||||
from django.http import HttpResponseRedirect, Http404
|
||||
from django.views.generic import RedirectView, TemplateView, CreateView, DeleteView, UpdateView
|
||||
from django.conf import settings
|
||||
from django.db import models
|
||||
from django.shortcuts import resolve_url
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from django.utils.encoding import force_text
|
||||
from django.forms.models import modelform_factory
|
||||
|
||||
try:
|
||||
from mellon.utils import get_idps
|
||||
|
@ -18,6 +17,8 @@ except ImportError:
|
|||
|
||||
from passerelle.base.models import BaseResource
|
||||
|
||||
from .forms import GenericConnectorForm
|
||||
|
||||
|
||||
def get_all_apps():
|
||||
return [x for x in models.get_models() if issubclass(x, BaseResource) and \
|
||||
|
@ -66,6 +67,38 @@ class ManageAddView(TemplateView):
|
|||
return context
|
||||
|
||||
|
||||
class GenericConnectorMixin(object):
|
||||
def dispatch(self, request, *args, **kwargs):
|
||||
connector = kwargs.get('connector')
|
||||
try:
|
||||
app = apps.get_app_config(connector.replace('-', '_'))
|
||||
except LookupError:
|
||||
raise Http404()
|
||||
self.model = app.get_connector_model()
|
||||
if hasattr(app, 'get_form_class'):
|
||||
self.form_class = app.get_form_class()
|
||||
else:
|
||||
self.form_class = modelform_factory(self.model,
|
||||
form=GenericConnectorForm, exclude=('slug', 'users'))
|
||||
return super(GenericConnectorMixin, self).dispatch(
|
||||
request, *args, **kwargs)
|
||||
|
||||
|
||||
class GenericCreateConnectorView(GenericConnectorMixin, CreateView):
|
||||
template_name = 'passerelle/manage/service_form.html'
|
||||
|
||||
|
||||
class GenericEditConnectorView(GenericConnectorMixin, UpdateView):
|
||||
template_name = 'passerelle/manage/service_form.html'
|
||||
|
||||
|
||||
class GenericDeleteConnectorView(GenericConnectorMixin, DeleteView):
|
||||
template_name = 'passerelle/manage/service_confirm_delete.html'
|
||||
|
||||
def get_success_url(self):
|
||||
return reverse('manage-home')
|
||||
|
||||
|
||||
# legacy
|
||||
LEGACY_APPS_PATTERNS = {
|
||||
'datasources': {'url': 'data', 'name': 'Data Sources'},
|
||||
|
|
Loading…
Reference in New Issue