Commit 12b9e0e4 authored by Andrii Marynets's avatar Andrii Marynets

Refactor edit view

parent 5fd66ee8
...@@ -2,10 +2,10 @@ from django import forms ...@@ -2,10 +2,10 @@ from django import forms
from .models import Job, Spider from .models import Job, Spider
class CreateJobForm(forms.ModelForm): class JobForm(forms.ModelForm):
def is_valid(self): def is_valid(self):
super(CreateJobForm, self).is_valid() super(JobForm, self).is_valid()
if self.validate_query(): if self.validate_query():
return True return True
else: else:
......
...@@ -7,7 +7,7 @@ from django.utils.decorators import method_decorator ...@@ -7,7 +7,7 @@ from django.utils.decorators import method_decorator
from .models import Spider, Job from .models import Spider, Job
from .service import Service from .service import Service
from .periodic_task_creator import make_periodic_task, update_schedule from .periodic_task_creator import make_periodic_task, update_schedule
from .forms import CreateJobForm from .forms import JobForm
BAD_QUERY = 'Bab query' BAD_QUERY = 'Bab query'
...@@ -73,7 +73,7 @@ class NewJobCreateView(CreateView): ...@@ -73,7 +73,7 @@ class NewJobCreateView(CreateView):
return render(request, self.template_name, {'spiders': spiders}) return render(request, self.template_name, {'spiders': spiders})
def post(self, request, *args, **kwargs): def post(self, request, *args, **kwargs):
form = CreateJobForm(request.POST) form = JobForm(request.POST)
if form.is_valid(): if form.is_valid():
job = form.save() job = form.save()
job.schedule_job = make_periodic_task(job.id, schedule(job.interval, job.count)) job.schedule_job = make_periodic_task(job.id, schedule(job.interval, job.count))
...@@ -93,28 +93,17 @@ class EditJobView(UpdateView): ...@@ -93,28 +93,17 @@ class EditJobView(UpdateView):
return render(request, self.template_name, {'job': job, 'spiders': spiders}) return render(request, self.template_name, {'job': job, 'spiders': spiders})
def post(self, request, *args, **kwargs): def post(self, request, *args, **kwargs):
name = request.POST.get('name') form = JobForm(request.POST, instance=Job.objects.get(pk=kwargs.get('id')))
spider = Spider.objects.get(pk=request.POST.get('spider')) if form.is_valid():
query = validate_query(request.POST.get('query')) job = form.save()
if query == BAD_QUERY: else:
return HttpResponse('Bad request', status=400) return HttpResponse('Bad request', status=400)
scrap_old_news = True if request.POST.get('scrap_old_news') else False
interval = request.POST.get('interval', '').upper() interval = request.POST.get('interval', '').upper()
count = request.POST.get('count', 1)
count = 1 if count == '' else int(count)
job = Job.objects.get(pk=request.POST.get('job'))
job.name = name
job.spider = spider
job.query = query if len(query) > 0 else None
job.scrap_old_news = scrap_old_news
if interval: if interval:
job.interval = interval
job.count = count
if not job.schedule_job: if not job.schedule_job:
job.schedule_job = make_periodic_task(job.id, schedule(interval, count)) job.schedule_job = make_periodic_task(job.id, schedule(interval, job.count))
else: else:
job.schedule_job.crontab = update_schedule(schedule(interval, count)) job.schedule_job.crontab = update_schedule(schedule(interval, job.count))
job.schedule_job.save() job.schedule_job.save()
job.save() job.save()
return HttpResponseRedirect(reverse('edit_job', kwargs={'id': request.POST.get('job')})) return HttpResponseRedirect(reverse('edit_job', kwargs={'id': request.POST.get('job')}))
......
...@@ -41,9 +41,9 @@ ...@@ -41,9 +41,9 @@
<div class="col-md-3"> <div class="col-md-3">
<label class="custom-control custom-radio"> <label class="custom-control custom-radio">
{% if job.interval == 'DAY' %} {% if job.interval == 'DAY' %}
<input id="radio1" name="interval" value="day" type="radio" class="custom-control-input" checked> <input id="radio1" name="interval" value="DAY" type="radio" class="custom-control-input" checked>
{% else %} {% else %}
<input id="radio1" name="interval" value="day" type="radio" class="custom-control-input"> <input id="radio1" name="interval" value="DAY" type="radio" class="custom-control-input">
{% endif %} {% endif %}
<span class="custom-control-indicator"></span> <span class="custom-control-indicator"></span>
<span class="custom-control-description">Day</span> <span class="custom-control-description">Day</span>
...@@ -52,9 +52,9 @@ ...@@ -52,9 +52,9 @@
<div class="col-md-3"> <div class="col-md-3">
<label class="custom-control custom-radio"> <label class="custom-control custom-radio">
{% if job.interval == 'WEEK' %} {% if job.interval == 'WEEK' %}
<input id="radio2" name="interval" value="week" type="radio" class="custom-control-input" checked> <input id="radio2" name="interval" value="WEEK" type="radio" class="custom-control-input" checked>
{% else %} {% else %}
<input id="radio2" name="interval" value="week" type="radio" class="custom-control-input"> <input id="radio2" name="interval" value="WEEK" type="radio" class="custom-control-input">
{% endif %} {% endif %}
<span class="custom-control-indicator"></span> <span class="custom-control-indicator"></span>
<span class="custom-control-description">Week</span> <span class="custom-control-description">Week</span>
...@@ -63,9 +63,9 @@ ...@@ -63,9 +63,9 @@
<div class="col-md-3"> <div class="col-md-3">
<label class="custom-control custom-radio"> <label class="custom-control custom-radio">
{% if job.interval == 'MONTH' %} {% if job.interval == 'MONTH' %}
<input id="radio3" name="interval" value="month" type="radio" class="custom-control-input" checked> <input id="radio3" name="interval" value="MONTH" type="radio" class="custom-control-input" checked>
{% else %} {% else %}
<input id="radio3" name="interval" value="month" type="radio" class="custom-control-input"> <input id="radio3" name="interval" value="MONTH" type="radio" class="custom-control-input">
{% endif %} {% endif %}
<span class="custom-control-indicator"></span> <span class="custom-control-indicator"></span>
<span class="custom-control-description">Month</span> <span class="custom-control-description">Month</span>
...@@ -74,10 +74,10 @@ ...@@ -74,10 +74,10 @@
<div class="col-md-3"> <div class="col-md-3">
<label class="custom-control custom-radio"> <label class="custom-control custom-radio">
{% if job.interval == 'NON' %} {% if job.interval == 'NON' %}
<input id="radio4" name="interval" value="non" type="radio" <input id="radio4" name="interval" value="NON" type="radio"
class="custom-control-input" checked> class="custom-control-input" checked>
{% else %} {% else %}
<input id="radio4" name="interval" value="non" type="radio" <input id="radio4" name="interval" value="NON" type="radio"
class="custom-control-input"> class="custom-control-input">
{% endif %}<span class="custom-control-indicator"></span> {% endif %}<span class="custom-control-indicator"></span>
......
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