Commit c2812c8e authored by Vasyl Bodnaruk's avatar Vasyl Bodnaruk

add functional for edit news

parent 9124778e
from django.conf.urls import url
from .views import JobListView, NewJobCreateView
from .views import JobListView, NewJobCreateView, EditJobView
urlpatterns = [
url('^new$', NewJobCreateView.as_view(), name='new_job'),
url('^$', JobListView.as_view(), name='job_list'),
url(r'^new$', NewJobCreateView.as_view(), name='new_job'),
url(r'^$', JobListView.as_view(), name='job_list'),
url(r'^(?P<id>[0-9]+)$', EditJobView.as_view(), name='edit_job')
]
\ No newline at end of file
from django.shortcuts import render, HttpResponseRedirect, reverse, HttpResponse
from django.http import JsonResponse
from django.views.generic import ListView, CreateView
from django.views.generic import ListView, CreateView, UpdateView
from django.contrib.auth.decorators import login_required, permission_required
from django.utils.decorators import method_decorator
......@@ -8,6 +8,7 @@ from .models import Spider, Job
from .service import Service
@method_decorator(login_required, name='post')
class JobListView(ListView):
template_name = 'list_jobs.html'
model = Job
......@@ -27,7 +28,6 @@ class JobListView(ListView):
}
return render(request, self.template_name, {'jobs': jobs})
@method_decorator(login_required)
def post(self, request, *args, **kwargs):
if request.is_ajax():
action = request.POST.get('action')
......@@ -53,6 +53,8 @@ class JobListView(ListView):
if action == 'log':
log = self.service.get_log(job_id)
return HttpResponse(log, content_type='text/plain')
if action == 'edit':
return HttpResponseRedirect(reverse('edit_job', kwargs={'id': job_id}))
@method_decorator(login_required, name='dispatch')
......@@ -70,3 +72,21 @@ class NewJobCreateView(CreateView):
Job.objects.create(name=name, spider=spider, query=query)
return HttpResponseRedirect(reverse('job_list'))
@method_decorator(login_required, name='dispatch')
class EditJobView(UpdateView):
template_name = 'edit_job.html'
def get(self, request, *args, **kwargs):
job = Job.objects.get(pk=kwargs.get('id'))
spiders = Spider.objects.all().exclude(sp_name=job.spider.sp_name)
return render(request, self.template_name, {'job': job, 'spiders': spiders})
def post(self, request, *args, **kwargs):
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)
return HttpResponseRedirect(reverse('edit_job', kwargs={'id': request.POST.get('job')}))
{% extends 'base.html' %}
{% block content %}
<main class="pt-2 pb-5">
<div class="container">
<form class="form" method="post">
{% csrf_token %}
<section class="mb-5">
<h5 class="offset-1 display-5 mb-2">Edit job</h5>
<!-- Name -->
<div class="form-group row">
<label for="name" class="offset-1 col-2 col-form-label">Name</label>
<div class="col-6">
<input class="form-control" type="text" id="name" name="name" value="{{ job.name }}">
<input type="hidden" name="job" value="{{ job.id }}">
</div>
</div>
<div class="form-group row">
<label for="spider" class="offset-1 col-2 col-form-label">Spider</label>
<div class="col-6">
<select name="spider" id="spider" class="form-control">
<option value="{{ job.spider.id }}">{{ job.spider.name }}</option>
{% for i in spiders %}
<option value="{{ i.id }}">{{ i.name }}</option>
{% endfor %}
</select>
</div>
</div>
<div class="form-group row">
<label for="name" class="offset-1 col-2 col-form-label">SQL query</label>
<div class="col-6">
<input class="form-control" type="text" placeholder="Input query" id="query" name="query" value="{{ job.query }}">
</div>
</div>
<div class="form-group row">
<div class="offset-5 col-2">
<a class="form-control btn btn-danger" href="/job/">Cancel</a>
</div>
<div class="col-2 pull-right">
<button type="submit" class="form-control btn btn-primary">Update</button>
</div>
</div>
</section>
</form>
</div>
</main>
{% endblock %}
\ No newline at end of file
......@@ -50,11 +50,9 @@
<button class="btn btn-sm btn-danger" data-action="delete" data-loading-text="Deleting..."
data-text="Delete">Delete
</button>
<button class="btn btn-sm btn-secondary"
data-loading-text="<i class='fa fa-cog fa-spin' aria-hidden='true'></i>"
data-action="edit" data-text="<i class='fa fa-cog' aria-hidden='true'></i>">
<a class="btn btn-sm btn-secondary" href="{% url 'edit_job' i.id %}" >
<i class="fa fa-cog" aria-hidden="true"></i>
</button>
</a>
</td>
</tr>
{% endfor %}
......
class WebappDatabaseRouter:
def db_for_read(self, model, **hints):
if model._meta.app_label == 'webapp':
return 'esi'
return None
def db_for_write(self, model, **hints):
if model._meta.app_label == 'webapp':
return 'esi'
return None
def allow_relation(self, obj1, obj2, **hints):
if obj1._meta.app_label == 'webapp' or \
obj2._meta.app_label == 'webapp':
return True
return None
def allow_migrate(self, db, app_label, model_name=None, **hints):
if app_label == 'webapp':
return db == 'esi'
return None
\ No newline at end of file
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