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