do not duplicate code for every kind of services

This commit is contained in:
Frédéric Péters 2014-04-10 15:10:55 +02:00
parent 904c83be25
commit f6b5877928
3 changed files with 17 additions and 18 deletions

View File

@ -1,14 +1,9 @@
from django.template import Library
from ..models import Authentic, Wcs, AVAILABLE_SERVICES
from ..forms import AuthenticForm, WcsForm
from .. import forms
register = Library()
@register.filter(name='as_update_form')
def as_update_form(object):
if isinstance(object, Authentic):
return AuthenticForm(instance=object).as_p()
if isinstance(object, Wcs):
return WcsForm(instance=object).as_p()
return None
return getattr(forms, object.__class__.__name__ + 'Form')(instance=object).as_p()

View File

@ -6,8 +6,7 @@ urlpatterns = patterns('',
url(r'^$', HomeView.as_view(), name='environment-home'),
url(r'^check_operational/(?P<service>\w+)/(?P<slug>[\w-]+)$',
operational_check_view, name='operational-check'),
url(r'^new-idp$', AuthenticCreateView.as_view()),
url(r'^new-wcs$', WcsCreateView.as_view()),
url(r'^new-(?P<service>\w+)$', ServiceCreateView.as_view()),
url(r'^installed_services.json$', installed_services_json_view),
url(r'^operational_services.json$', operational_services_json_view),
)

View File

@ -8,8 +8,7 @@ from django.views.generic.base import TemplateView
from django.views.generic.edit import CreateView
from .models import Authentic, Wcs, AVAILABLE_SERVICES
from .forms import AuthenticForm, WcsForm
from . import utils
from . import forms, utils
class AvailableService(object):
@ -47,15 +46,21 @@ class ServiceCreateView(CreateView):
def get_template_names(self):
return 'environment/service_form.html'
def get(self, request, *args, **kwargs):
self.service_id = kwargs.pop('service')
return super(ServiceCreateView, self).get(request, *args, **kwargs)
class AuthenticCreateView(ServiceCreateView):
form_class = AuthenticForm
model = Authentic
def post(self, request, *args, **kwargs):
self.service_id = kwargs.pop('service')
return super(ServiceCreateView, self).post(request, *args, **kwargs)
class WcsCreateView(ServiceCreateView):
form_class = WcsForm
model = Wcs
def get_form_class(self):
for service in AVAILABLE_SERVICES:
if service.Extra.service_id == self.service_id:
form_class = getattr(forms, service.__name__ + 'Form')
self.model = form_class.Meta.model
return form_class
return None
def operational_check_view(request, service, slug, **kwargs):