Commit 0a18c718 authored by Vasyl Bodnaruk's avatar Vasyl Bodnaruk

add CORS headers, make logic for acrivate job

parent 4fac6be2
......@@ -46,6 +46,7 @@ INSTALLED_APPS = [
]
MIDDLEWARE = [
'corsheaders.middleware.CorsMiddleware',
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
......@@ -53,8 +54,6 @@ MIDDLEWARE = [
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'corsheaders.middleware.CorsMiddleware',
'django.middleware.common.CommonMiddleware',
]
CORS_ORIGIN_ALLOW_ALL = True
......
......@@ -73,6 +73,7 @@ class Job(models.Model):
def json(self):
return {
'id': self.pk,
'name': self.name,
'uuid': self.job_uuid,
'create_time': self.create_time,
......
......@@ -21,8 +21,8 @@ class Service:
def run_job(self, job):
job = Job.objects.get(pk=job)
# uuid = self.api.schedule('exa', job.spider.sp_name)
# job.job_uuid = uuid
uuid = self.api.schedule('exa', job.spider.sp_name)
job.job_uuid = uuid
job.start_time = datetime.now()
job.status = 'RUN'
job.save()
......@@ -30,7 +30,7 @@ class Service:
def cancel_job(self, job):
job = Job.objects.get(pk=job)
# self.api.cancel('exa', job.job_uuid)
self.api.cancel('exa', job.job_uuid)
job.end_time = datetime.now()
job.status = 'FIN'
job.save()
......@@ -42,6 +42,14 @@ class Service:
job.save()
return job.json()
def activate_job(self, job):
job = Job.objects.get(pk=job)
job.start_time = None
job.end_time = None
job.status = 'PEN'
job.save()
return job.json()
def get_log(self, job):
job = Job.objects.get(pk=job)
url = 'http://127.0.0.1:6800/logs/exa/mhn/{}.log'.format(job.job_uuid)
......
from django.shortcuts import render, HttpResponseRedirect, reverse, HttpResponse
from django.http import JsonResponse
from django.views.generic import ListView, CreateView
from django.views.decorators.csrf import csrf_exempt
from .models import Spider, Job
from .service import Service
......@@ -16,6 +17,12 @@ class JobListView(ListView):
def get(self, request, *args, **kwargs):
j = Job.objects.all().order_by('-create_time')
print("NOOOOOT")
if request.is_ajax():
action = request.GET.get('action')
job_id = request.GET.get('id')
print("FOOOOOOO", action, job_id)
return self._logic(action, job_id)
jobs = {
'deleted': j.deleted(),
'running': j.running(),
......@@ -24,11 +31,12 @@ class JobListView(ListView):
}
return render(request, self.template_name, {'jobs': jobs})
@csrf_exempt
def post(self, request, *args, **kwargs):
if request.is_ajax():
action = request.POST.get('action')
job_id = request.POST.get('id')
self._logic(action, job_id)
return self._logic(action, job_id)
def _logic(self, action, job_id):
if action == 'run':
......@@ -39,6 +47,8 @@ class JobListView(ListView):
self.service.update_jobs_status()
if action == 'delete':
return JsonResponse(self.service.delete_job(job_id))
if action == 'activate':
return JsonResponse(self.service.activate_job(job_id))
if action == 'new':
return HttpResponseRedirect(reverse('new_job'))
if action == 'log':
......
......@@ -139,11 +139,18 @@ var tables = {
// ------------------------------
// AJAX SUCCESS
// ------------------------------
var response = {
created_date: '21.03.2012',
started_date: '21.03.2015',
finished_date: '21.03.2015'
}
$.ajax({
method: "GET",
cache: false,
dataType: 'json',
url: '/job/',
contentType: "application/json; charset=utf-8",
data: {'action': 'run', 'id': 2},
error: function(error) {
console.log(error)
},
success: function(response) {
console.log(response)
itemData.item.remove();
if(itemData.table === tablesTypes.PENDING) {
// Format item
......@@ -152,10 +159,12 @@ var tables = {
.append(templetes.buttonCancel)
.append(templetes.buttonDelete);
// Insert col
$(templetes.startDate(response.started_date)).insertAfter(itemData.item.find('td[data-col="' + cols.CREATED_DATE + '"]'));
$(templetes.startDate(response.start_time)).insertAfter(itemData.item.find('td[data-col="' + cols.CREATED_DATE + '"]'));
$(templetes.log('-')).insertAfter(itemData.item.find('td[data-col="' + cols.STATUS + '"]'));
}
vm.moveItem(itemData.item.outerHTML(), tablesTypes.RUNNING)
}
})
},
onActivate: function(vm, button) {
var itemData = vm.getItemData(button)
......
......@@ -8,3 +8,4 @@ dateparser==0.6.0
mysqlclient==1.3.10
Django==1.11.1
django-el-pagination==3.1.0
django-cors-headers==2.1.0
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment