Commit 292a6fb5 authored by Vasyl Bodnaruk's avatar Vasyl Bodnaruk

Add base API for interact with scrapy server

parent 318bdd47
......@@ -19,5 +19,6 @@ from django.contrib import admin
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^news/', include('webapp.urls')),
url(r'^job/', include('scraper.urls')),
url(r'', include('main.urls'))
]
from django.contrib import admin
# Register your models here.
from .models import Job, Spider
admin.site.register(Job)
admin.site.register(Spider)
\ No newline at end of file
......@@ -8,14 +8,46 @@ class Spider(models.Model):
sp_name = models.CharField(max_length=20, default=None)
class JobQuerySet(models.QuerySet):
def deleted(self):
return self.filter(status='DEL')
def running(self):
return self.filter(status='RUN')
def finished(self):
return self.filter(status='FIN')
def not_status(self):
return self.filter(status='NOT')
class JobManager(models.Manager):
def get_queryset(self):
return JobQuerySet(self.model, using=self._db)
def deleted(self):
return self.get_queryset().deleted()
def running(self):
return self.get_queryset().running()
def finished(self):
return self.get_queryset().finished()
def not_status(self):
return self.get_queryset().not_status()
class Job(models.Model):
DELETE = 'DEL'
COMPLETE = 'COM'
FINISHED = 'FIN'
RUNNING = 'RUN'
STOP = 'STP'
NOTOP = 'NOT'
STATUS = (
(DELETE, 'delete'),
(COMPLETE, 'complete'),
(FINISHED, 'finished'),
(RUNNING, 'running'),
(NOTOP, 'not_status')
)
......@@ -26,3 +58,8 @@ class Job(models.Model):
finish_time = models.DateTimeField()
status = models.CharField(max_length=3, choices=STATUS, default=NOTOP)
spider = models.ForeignKey(Spider, default=None, null=True)
objects = JobManager()
def __str__(self):
return self.name
from django.conf.urls import url
from .views import JobListView
urlpatterns = [
url('', JobListView.as_view(), name='job_list')
]
\ No newline at end of file
from urllib.request import urlopen, Request
from django.shortcuts import render
from django.views.generic import ListView
from scrapyd_api import ScrapydAPI
from .models import Spider, Job
class JobListView(ListView):
template_name = 'job_list.html'
model = Job
def __init__(self):
self.client = ScrapydAPI()
super(JobListView, self).__init__()
def get(self, request, *args, **kwargs):
jobs = {
'deleted': Job.objects.deleted(),
'running': Job.objects.running(),
'finished': Job.objects.finished(),
'not_status': Job.objects.not_status()
}
return render(request, self.template_name)
def post(self, request, *args, **kwargs):
action = request.POST.get('action')
if action == 'schedule':
pass
if action == 'status':
pass
if action == 'cancel':
pass
# Create your views here.
......@@ -24,7 +24,7 @@
<ul class="nav navbar-nav">
<li class="active"><a href="/">Home</a></li>
<li><a href="{% url 'list_news' %}">News</a></li>
<li><a href="#">Settings</a></li>
<li><a href="{% url 'job_list' %}">Scraper</a></li>
<li><a href="#">Stat</a></li>
</ul>
......
{% extends 'base.html' %}
\ 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