+# -*- 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})