Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
E
esi-table-data
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
esi-data-scrapping
esi-table-data
Commits
e6410551
Commit
e6410551
authored
Jun 15, 2017
by
Vasyl Bodnaruk
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Make function for update status work and other:
change DB routers, models
parent
292a6fb5
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
71 additions
and
16 deletions
+71
-16
router.py
esi/esi/router.py
+28
-1
settings.py
esi/esi/settings.py
+1
-1
models.py
esi/scraper/models.py
+13
-9
service.py
esi/scraper/service.py
+15
-0
views.py
esi/scraper/views.py
+8
-2
base.html
esi/templates/base.html
+1
-2
job_list.html
esi/templates/job_list.html
+5
-1
No files found.
esi/esi/router.py
View file @
e6410551
class
Esi
DatabaseRouter
:
class
Default
DatabaseRouter
:
default_apps
=
(
'admin'
,
'auth'
,
...
...
@@ -27,4 +27,31 @@ class EsiDatabaseRouter:
def
allow_migrate
(
self
,
db
,
app_label
,
model_name
=
None
,
**
hints
):
if
app_label
in
self
.
default_apps
:
return
db
==
'default'
return
None
class
EsiDatabaseRouter
:
esi_apps
=
(
'webapp'
,
'scraper'
,
)
def
db_for_read
(
self
,
model
,
**
hints
):
if
model
.
_meta
.
app_label
in
self
.
esi_apps
:
return
'esi'
return
None
def
db_for_write
(
self
,
model
,
**
hints
):
if
model
.
_meta
.
app_label
in
self
.
esi_apps
:
return
'esi'
return
None
def
allow_relation
(
self
,
obj1
,
obj2
,
**
hints
):
if
obj1
.
_meta
.
app_label
in
self
.
esi_apps
or
obj2
.
_meta
.
app_label
in
self
.
esi_apps
:
return
True
return
None
def
allow_migrate
(
self
,
db
,
app_label
,
model_name
=
None
,
**
hints
):
if
app_label
in
self
.
esi_apps
:
return
db
==
'esi'
return
None
\ No newline at end of file
esi/esi/settings.py
View file @
e6410551
...
...
@@ -94,7 +94,7 @@ DATABASES = {
}
}
DATABASE_ROUTERS
=
[
'
webapp.router.Webapp
DatabaseRouter'
,
'esi.router.EsiDatabaseRouter'
]
DATABASE_ROUTERS
=
[
'
esi.router.Default
DatabaseRouter'
,
'esi.router.EsiDatabaseRouter'
]
# Password validation
...
...
esi/scraper/models.py
View file @
e6410551
...
...
@@ -6,6 +6,10 @@ from django.db import models
class
Spider
(
models
.
Model
):
name
=
models
.
CharField
(
max_length
=
50
,
default
=
None
,
null
=
True
)
sp_name
=
models
.
CharField
(
max_length
=
20
,
default
=
None
)
media
=
models
.
IntegerField
(
default
=
None
,
null
=
True
)
def
__str__
(
self
):
return
self
.
name
class
JobQuerySet
(
models
.
QuerySet
):
...
...
@@ -18,8 +22,8 @@ class JobQuerySet(models.QuerySet):
def
finished
(
self
):
return
self
.
filter
(
status
=
'FIN'
)
def
not_status
(
self
):
return
self
.
filter
(
status
=
'
NOT
'
)
def
pending
(
self
):
return
self
.
filter
(
status
=
'
PEN
'
)
class
JobManager
(
models
.
Manager
):
...
...
@@ -35,28 +39,28 @@ class JobManager(models.Manager):
def
finished
(
self
):
return
self
.
get_queryset
()
.
finished
()
def
not_status
(
self
):
return
self
.
get_queryset
()
.
not_status
()
def
pending
(
self
):
return
self
.
get_queryset
()
.
pending
()
class
Job
(
models
.
Model
):
DELETE
=
'DEL'
FINISHED
=
'FIN'
RUNNING
=
'RUN'
STOP
=
'STP'
NOTOP
=
'NOT'
PENDING
=
'PEN'
STATUS
=
(
(
DELETE
,
'delete'
),
(
FINISHED
,
'finished'
),
(
RUNNING
,
'running'
),
(
NOTOP
,
'not_status
'
)
(
PENDING
,
'pending
'
)
)
name
=
models
.
CharField
(
max_length
=
50
,
default
=
None
,
null
=
True
)
job_id
=
models
.
CharField
(
max_length
=
50
,
default
=
None
,
null
=
True
)
create_time
=
models
.
DateTimeField
(
default
=
None
,
null
=
True
)
start_time
=
models
.
DateTimeField
()
finish
_time
=
models
.
DateTimeField
()
status
=
models
.
CharField
(
max_length
=
3
,
choices
=
STATUS
,
default
=
NOTOP
)
end
_time
=
models
.
DateTimeField
()
status
=
models
.
CharField
(
max_length
=
3
,
choices
=
STATUS
,
default
=
PENDING
)
spider
=
models
.
ForeignKey
(
Spider
,
default
=
None
,
null
=
True
)
objects
=
JobManager
()
...
...
esi/scraper/service.py
0 → 100644
View file @
e6410551
from
.models
import
Spider
,
Job
class
Service
:
def
update_jobs_status
(
self
,
jobs
):
finished
=
jobs
.
get
(
'finished'
)
if
finished
:
for
i
in
finished
:
Job
.
objects
.
get
(
job_id
=
i
[
'id'
])
.
update
(
status
=
'FIN'
,
end_time
=
i
[
'end_time'
])
running
=
jobs
.
get
(
'running'
)
if
running
:
for
i
in
running
:
Job
.
objects
.
get
(
job_id
=
i
[
'id'
])
.
update
(
status
=
'RUN'
)
esi/scraper/views.py
View file @
e6410551
...
...
@@ -4,6 +4,7 @@ from django.views.generic import ListView
from
scrapyd_api
import
ScrapydAPI
from
.models
import
Spider
,
Job
from
.service
import
Service
class
JobListView
(
ListView
):
...
...
@@ -12,16 +13,21 @@ class JobListView(ListView):
def
__init__
(
self
):
self
.
client
=
ScrapydAPI
()
self
.
service
=
Service
()
super
(
JobListView
,
self
)
.
__init__
()
def
get
(
self
,
request
,
*
args
,
**
kwargs
):
jobs
=
self
.
client
.
list_jobs
(
'exa'
)
print
(
jobs
)
self
.
service
.
update_jobs_status
(
jobs
)
jobs
=
{
'deleted'
:
Job
.
objects
.
deleted
(),
'running'
:
Job
.
objects
.
running
(),
'finished'
:
Job
.
objects
.
finished
(),
'
not_status'
:
Job
.
objects
.
not_status
()
'
pending'
:
Job
.
objects
.
pending
()
}
return
render
(
request
,
self
.
template_name
)
return
render
(
request
,
self
.
template_name
,
{
'jobs'
:
jobs
}
)
def
post
(
self
,
request
,
*
args
,
**
kwargs
):
action
=
request
.
POST
.
get
(
'action'
)
...
...
esi/templates/base.html
View file @
e6410551
...
...
@@ -22,9 +22,8 @@
<a
class=
"navbar-brand"
href=
"#"
>
ESI
</a>
</div>
<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=
"{% url 'job_list' %}"
>
Scraper
</a></li>
<li><a
href=
"{% url 'job_list' %}"
>
Run
&
Settings
</a></li>
<li><a
href=
"#"
>
Stat
</a></li>
</ul>
...
...
esi/templates/job_list.html
View file @
e6410551
{% extends 'base.html' %}
\ No newline at end of file
{% extends 'base.html' %}
{% block content %}
{{ jobs }}
{% endblock %}
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment