Skip to content
Snippets Groups Projects
Commit d02b2402 authored by shinedday's avatar shinedday
Browse files

Split views.py in a package for clean code

parent 95d57219
Branches
No related tags found
No related merge requests found
from .experiment import *
from .network import *
import os
import shutil
import zipfile
from django.conf import settings
from django.http import HttpResponse, HttpResponseRedirect
from django.template import loader
from django.urls import reverse
from ..models import Experiment, ExperimentForm
def entry(request):
if request.method == 'POST':
form = ExperimentForm(request.POST, request.FILES)
if form.is_valid():
form.save()
return HttpResponseRedirect(reverse('ping:experiment'))
else:
form = ExperimentForm()
template = loader.get_template('ping/entry.html')
context = {"form": form}
return HttpResponse(template.render(context, request))
def empty_tmp():
folder = str(settings.MEDIA_ROOT) + "/tmp"
for filename in os.listdir(folder):
file_path = os.path.join(folder, filename)
try:
if os.path.isfile(file_path) or os.path.islink(file_path):
os.unlink(file_path)
elif os.path.isdir(file_path):
shutil.rmtree(file_path)
except Exception as e:
print('Failed to delete %s. Reason: %s' % (file_path, e))
def check(request, experiment_id):
# get the path
print(experiment_id)
exp = Experiment.objects.get(pk=experiment_id)
print(str(exp.media))
print(str(settings.MEDIA_ROOT) + str(exp.media))
# check if it's a zip -> wrong format : not zip
print()
if not zipfile.is_zipfile(str(settings.MEDIA_ROOT) + str(exp.media)):
exp.status = "Wrong format : zip file expected"
exp.save()
return HttpResponseRedirect(reverse('ping:experiment'))
with zipfile.ZipFile(str(settings.MEDIA_ROOT) + str(exp.media), 'r') as zip_ref:
zip_ref.extractall(str(settings.MEDIA_ROOT) + "/tmp")
folder_path = str(settings.MEDIA_ROOT) + "/tmp/" + exp.name
if not os.path.isdir(folder_path):
exp.status = "Wrong format : zip should contain a folder"
exp.save()
empty_tmp()
return HttpResponseRedirect(reverse('ping:experiment'))
required_files = ["amas.py", "agent.py", "env.py", "scheduler.py"]
for required_file in required_files:
if not os.path.exists(folder_path + "/" + required_file):
exp.status = "Wrong format : " + required_file + " file is expected"
exp.save()
empty_tmp()
return HttpResponseRedirect(reverse('ping:experiment'))
exp.status = "Checked"
exp.save()
empty_tmp()
return HttpResponseRedirect(reverse('ping:experiment'))
def experiment(request):
template = loader.get_template('ping/experiment.html')
context = {
"experiments": Experiment.objects.all(),
}
return HttpResponse(template.render(context, request))
import os
import platform
import shutil
import subprocess
import re
import zipfile
from django.conf import settings
from django.http import HttpResponse, HttpResponseRedirect
from django.template import loader
......@@ -13,8 +8,7 @@ from django.urls import reverse
from iotAmak.tool.remote_client import RemoteClient
from iotAmak.tool.ssh_client import SSHClient, Cmd
from .models import Client, Agent, Experiment, ExperimentForm
from ..models import Client, Agent
def get_remote_client():
res = []
......@@ -106,77 +100,4 @@ def pressed(request):
c.status = "Offline"
c.save()
return HttpResponseRedirect(reverse('ping:index'))
def entry(request):
if request.method == 'POST':
form = ExperimentForm(request.POST, request.FILES)
if form.is_valid():
form.save()
return HttpResponseRedirect(reverse('ping:experiment'))
else:
form = ExperimentForm()
template = loader.get_template('ping/entry.html')
context = {"form": form}
return HttpResponse(template.render(context, request))
def empty_tmp():
folder = str(settings.MEDIA_ROOT) + "/tmp"
for filename in os.listdir(folder):
file_path = os.path.join(folder, filename)
try:
if os.path.isfile(file_path) or os.path.islink(file_path):
os.unlink(file_path)
elif os.path.isdir(file_path):
shutil.rmtree(file_path)
except Exception as e:
print('Failed to delete %s. Reason: %s' % (file_path, e))
def check(request, experiment_id):
# get the path
print(experiment_id)
exp = Experiment.objects.get(pk=experiment_id)
print(str(exp.media))
print(str(settings.MEDIA_ROOT) + str(exp.media))
# check if it's a zip -> wrong format : not zip
print()
if not zipfile.is_zipfile(str(settings.MEDIA_ROOT) + str(exp.media)):
exp.status = "Wrong format : zip file expected"
exp.save()
return HttpResponseRedirect(reverse('ping:experiment'))
with zipfile.ZipFile(str(settings.MEDIA_ROOT) + str(exp.media), 'r') as zip_ref:
zip_ref.extractall(str(settings.MEDIA_ROOT) + "/tmp")
folder_path = str(settings.MEDIA_ROOT) + "/tmp/" + exp.name
if not os.path.isdir(folder_path):
exp.status = "Wrong format : zip should contain a folder"
exp.save()
empty_tmp()
return HttpResponseRedirect(reverse('ping:experiment'))
required_files = ["amas.py", "agent.py", "env.py", "scheduler.py"]
for required_file in required_files:
if not os.path.exists(folder_path + "/" + required_file):
exp.status = "Wrong format : " + required_file + " file is expected"
exp.save()
empty_tmp()
return HttpResponseRedirect(reverse('ping:experiment'))
exp.status = "Checked"
exp.save()
empty_tmp()
return HttpResponseRedirect(reverse('ping:experiment'))
def experiment(request):
template = loader.get_template('ping/experiment.html')
context = {
"experiments": Experiment.objects.all(),
}
return HttpResponse(template.render(context, request))
return HttpResponseRedirect(reverse('ping:index'))
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment