X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=forge%2Fviews.py;fp=forge%2Fviews.py;h=6e5cc84643d1521eab327bd93639a670fc496c6c;hb=d642f7909de5af80dd951c7a2b2a728acc309b37;hp=0000000000000000000000000000000000000000;hpb=472a1ed07124ac7df43c71024c17ec72362486d8;p=myslice.git diff --git a/forge/views.py b/forge/views.py new file mode 100644 index 00000000..6e5cc846 --- /dev/null +++ b/forge/views.py @@ -0,0 +1,132 @@ +# -*- coding:utf-8 -*- +# Create your views here. + +# Several import from the django facilities +from django.template import RequestContext +from django.shortcuts import render, get_object_or_404, render_to_response, redirect +from django.template import RequestContext +from django.core.urlresolvers import reverse +from django.core.files import File + +# Import of the forms and models +from forge.models import * +from forge.forms import * + +# Import of the task and TaskState (used to link task in the database) +from forge.tasks import * +from djcelery.models import TaskState + +# Import the settings +from django.conf import settings + +import os + +# Import class used to create the environment +from forge.script.request import TransformRawXml + +from myslice.theme import ThemeView +from unfold.loginrequired import FreeAccessView + +class CreateCourseViev (FreeAccessView, ThemeView): + template_name = 'create-course.html' + + def get (self, request, slicename, state=None): + username = self.request.user + split_slicename = slicename.split('.') + ple_slicename = split_slicename[0] + '8' + split_slicename[1] + '_' + split_slicename[2] + if not Course.objects.get(sliceName = ple_slicename).exists(): + if request.method == 'POST': + form = courseForm(request.POST) + if form.is_valid(): + result = taskCreateCourse.delay(form) + else: + labs = Lab.objects.all() + form = courseForm() + return render_to_response(self.template, { 'theme' : self.theme,'slicename':slicename, 'ple_slicename':ple_slicename, 'username':username, 'form': form }, context_instance=RequestContext(request)) + +def mainView(request): + return render(request, 'mainView.html', locals()) + + +def createLab(request): + if request.method == 'POST': + form = LabForm(request.POST, request.FILES) + if form.is_valid(): + newLab = Lab( + title = form['title'].value(), + author = form['author'].value(), + subject = request.FILES['subject'], + configurationFile = request.FILES['configurationFile'], + linkFile = request.FILES['linkFile'], + ) + newLab.save() + else: + form = LabForm() + labs = Lab.objects.all() + return render_to_response('createLab.html', {'labs': labs, 'form':form}, context_instance=RequestContext(request)) + +def labDetails(request, id): + try: + lab = Lab.objects.get(id=id) + except Lab.DoesNotExist: + raise Http404 + return render(request, 'labDetails.html', locals()) + +def deleteLab(request, id): + try: + lab = Lab.objects.get(id=id) + except Lab.DoesNotExist: + raise Http404 + lab.delete() + return redirect('forge.views.createLab') + +def createCourse(request): + if request.method == 'POST': + form = courseForm(request.POST) + if form.is_valid(): + result = taskCreateCourse.delay(form) + else: + labs = Lab.objects.all() + form = courseForm() + return render(request, 'createCourse.html', locals()) + +def installEnvironment(request, id): + task = taskInstallEnvironment.delay(Environment.objects.get(id=id)) + return redirect('forge.views.listCourse') + +def renewSlice(request, id): + task = taskRenewSlice.delay(Course.objects.get(id=id)) + return redirect('forge.views.listCourse') + +def deleteCourse(request, id): + task = taskDeleteCourse.delay(Course.objects.get(id=id)) + return redirect('forge.views.listCourse') + +def listCourse(request): + courses = Course.objects.all() + environments = Environment.objects.all() + slices = Slice.objects.all() + hosts = Host.objects.all() + services = Service.objects.all() + renderCourses = [] + for course in courses: + renderEnvironment = [] + if course.ready: + for environment in course.environment_set.all(): + renderSlice = [] + for pleSlice in environment.slice_set.all(): + renderHost = [] + for host in pleSlice.host_set.all(): + renderService = [] + for service in host.service_set.all(): + renderService.append(service) + renderInterface = [] + for interface in host.interface_set.all(): + renderInterface.append(interface) + renderHost.append([host, renderService, renderInterface]) + renderSlice.append([pleSlice, renderHost]) + renderEnvironment.append([environment, renderSlice]) + renderCourses.append([course, renderEnvironment]) + + + return render(request, 'listCourse.html', {'courses': renderCourses})