possibility to save changes to services (#4575)

This commit is contained in:
Frédéric Péters 2014-04-10 15:54:09 +02:00
parent 4f1b60c11b
commit dbacf03d96
4 changed files with 41 additions and 2 deletions

View File

@ -44,7 +44,8 @@
{% endif %}
{% endif %}
<p>
<form class="small">
<form class="small" method="post" action="{{ service|save_url }}" >
{% csrf_token %}
{{ service|as_update_form }}
<button class="enable-on-change" disabled="disabled">{% trans 'Save' %}</button>
</form>

View File

@ -1,3 +1,4 @@
from django.core.urlresolvers import reverse_lazy
from django.template import Library
from .. import forms
@ -7,3 +8,9 @@ register = Library()
@register.filter(name='as_update_form')
def as_update_form(object):
return getattr(forms, object.__class__.__name__ + 'Form')(instance=object).as_p()
@register.filter(name='save_url')
def save_url(object):
return reverse_lazy('save-service', kwargs={
'service': object.Extra.service_id,
'slug': object.slug})

View File

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

View File

@ -5,7 +5,7 @@ from django.conf import settings
from django.core.urlresolvers import reverse_lazy
from django.http import HttpResponse
from django.views.generic.base import TemplateView
from django.views.generic.edit import CreateView
from django.views.generic.edit import CreateView, UpdateView
from .models import Authentic, Wcs, AVAILABLE_SERVICES
from . import forms, utils
@ -63,6 +63,36 @@ class ServiceCreateView(CreateView):
return None
class ServiceUpdateView(UpdateView):
success_url = reverse_lazy('environment-home')
def get_context_data(self, **kwargs):
context = super(ServiceUpdateView, self).get_context_data(**kwargs)
context['model_name'] = self.model._meta.verbose_name
return context
def get_template_names(self):
return 'environment/service_form.html'
def get(self, request, *args, **kwargs):
self.service_id = kwargs.pop('service')
self.get_form_class()
return super(ServiceUpdateView, self).get(request, *args, **kwargs)
def post(self, request, *args, **kwargs):
self.service_id = kwargs.pop('service')
self.get_form_class()
return super(ServiceUpdateView, self).post(request, *args, **kwargs)
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):
if service == 'wcs':
object = Wcs.objects.get(slug=slug)