Commit a92ba88b authored by Vasyl Bodnaruk's avatar Vasyl Bodnaruk

Add checked flag if interval is selected

parent b6111603
......@@ -73,12 +73,12 @@ class Job(models.Model):
start_time = models.DateTimeField(default=None, null=True, blank=True)
end_time = models.DateTimeField(default=None, null=True, blank=True)
status = models.CharField(max_length=3, choices=STATUS, default=PENDING)
query = models.CharField(max_length=255, default=None, null=True, blank=True)
query = models.CharField(max_length=255, default='', null=True, blank=True)
spider = models.ForeignKey(Spider, default=None, null=True)
schedule_job = models.OneToOneField(PeriodicTask, on_delete=models.SET_NULL, blank=True, null=True, default=None)
interval = models.CharField(max_length=5, choices=INTERVAL, default=None, null=True, blank=True)
count = models.IntegerField(default=None, blank=True, null=True)
count = models.IntegerField(default=1, blank=True, null=True)
objects = JobManager()
......
......@@ -7,9 +7,10 @@ from django.utils.decorators import method_decorator
from .models import Spider, Job
from .service import Service
from .forms import CreateJobForm
from .periodic_task_creator import make_periodic_task
BAD_QUERY = 'Bab query'
@method_decorator(login_required, name='post')
class JobListView(ListView):
......@@ -75,7 +76,7 @@ class NewJobCreateView(CreateView):
name = request.POST.get('name')
spider = Spider.objects.get(pk=request.POST.get('spider'))
query = self._validate_query(request.POST.get('query'))
if not query:
if query == BAD_QUERY:
return HttpResponse('Bad request', status=400)
job = Job.objects.create(name=name, spider=spider, query=query)
interval = request.POST.get('interval')
......@@ -91,12 +92,11 @@ class NewJobCreateView(CreateView):
block = [';', 'in', 'select']
if any(ext in query for ext in block):
print('Query is blocked')
return None
return BAD_QUERY
else:
return query
@method_decorator(login_required, name='dispatch')
class EditJobView(UpdateView):
template_name = 'edit_job.html'
......@@ -110,8 +110,17 @@ class EditJobView(UpdateView):
name = request.POST.get('name')
spider = Spider.objects.get(pk=request.POST.get('spider'))
query = request.POST.get('query')
job = Job.objects.filter(pk=request.POST.get('job'))
job.update(name=name, spider=spider, query=query)
interval = request.POST.get('interval')
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
job.interval = interval
job.count = count
job.save()
return HttpResponseRedirect(reverse('edit_job', kwargs={'id': request.POST.get('job')}))
......
......@@ -40,6 +40,9 @@
<div class="form-group row">
<div class="col-md-3">
<label class="custom-control custom-radio">
{% if job.interval == 'day' %}
<input id="radio1" name="interval" value="day" type="radio" class="custom-control-input" checked>
{% endif %}
<input id="radio1" name="interval" value="day" type="radio" class="custom-control-input">
<span class="custom-control-indicator"></span>
<span class="custom-control-description">Day</span>
......@@ -47,6 +50,9 @@
</div>
<div class="col-md-3">
<label class="custom-control custom-radio">
{% if job.interval == 'week' %}
<input id="radio2" name="interval" value="week" type="radio" class="custom-control-input" checked>
{% endif %}
<input id="radio2" name="interval" value="week" type="radio" class="custom-control-input">
<span class="custom-control-indicator"></span>
<span class="custom-control-description">Week</span>
......@@ -54,6 +60,9 @@
</div>
<div class="col-md-3">
<label class="custom-control custom-radio">
{% if job.interval == 'month' %}
<input id="radio3" name="interval" value="month" type="radio" class="custom-control-input" checked>
{% endif %}
<input id="radio3" name="interval" value="month" type="radio" class="custom-control-input">
<span class="custom-control-indicator"></span>
<span class="custom-control-description">Month</span>
......@@ -61,7 +70,11 @@
</div>
<div class="col-md-3">
<label class="custom-control custom-radio">
<input id="radio4" name="interval" value="finished" type="radio"
{% if job.interval == 'NON' %}
<input id="radio4" name="interval" type="radio"
class="custom-control-input" checked>
{% endif %}
<input id="radio4" name="interval" type="radio"
class="custom-control-input">
<span class="custom-control-indicator"></span>
<span class="custom-control-description">After finish</span>
......@@ -73,7 +86,7 @@
<label for="count" class="col-form-label">Every:</label>
</div>
<div class="col-md-2">
<input class="form-control" type="text" placeholder="N" id="count" name="count">
<input class="form-control" type="text" placeholder="N" id="count" name="count" value="{{ job.count }}">
</div>
</div>
</div>
......@@ -89,7 +102,7 @@
<div class="form-group row">
<div class="offset-5 col-2">
<button type="submit" class="form-control btn btn-primary">Create</button>
<button type="submit" class="form-control btn btn-primary">Update</button>
</div>
<div class="col-2">
<a class="form-control btn btn-danger" href="/job/">Cancel</a>
......
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