Record WQDS details and show report.
This commit is contained in:
parent
cc62265a0d
commit
c649179caf
4 changed files with 108 additions and 2 deletions
|
|
@ -4,6 +4,7 @@ from sqlalchemy.schema import Column, ForeignKey
|
|||
from sqlalchemy.types import Integer, String, DateTime, Boolean
|
||||
from sqlalchemy.orm import column_property, relationship, synonym
|
||||
from sqlalchemy.ext.associationproxy import association_proxy
|
||||
from sqlalchemy.ext.hybrid import hybrid_property
|
||||
from sqlalchemy.sql.expression import cast
|
||||
from sqlalchemy.dialects import postgresql
|
||||
from urllib.parse import quote
|
||||
|
|
@ -98,3 +99,21 @@ class Edit(Base):
|
|||
@property
|
||||
def user_wikidata_url(self):
|
||||
return 'https://www.wikidata.org/wiki/User:' + self.url_norm_username
|
||||
|
||||
class WikidataQuery(Base):
|
||||
__tablename__ = 'wikidata_query'
|
||||
id = Column(Integer, primary_key=True)
|
||||
start_time = Column(DateTime)
|
||||
end_time = Column(DateTime)
|
||||
sparql_query = Column(String)
|
||||
path = Column(String)
|
||||
status_code = Column(Integer)
|
||||
error_text = Column(String)
|
||||
|
||||
@hybrid_property
|
||||
def duration(self):
|
||||
return self.end_time - self.start_time
|
||||
|
||||
@property
|
||||
def display_seconds(self):
|
||||
return f'{self.duration.total_seconds():.1f}'
|
||||
|
|
|
|||
|
|
@ -4,8 +4,11 @@ import urllib.parse
|
|||
import os
|
||||
import dateutil.parser
|
||||
import hashlib
|
||||
from flask import request
|
||||
from collections import defaultdict
|
||||
from . import utils
|
||||
from datetime import datetime
|
||||
from .model import WikidataQuery
|
||||
from . import utils, database
|
||||
|
||||
query_url = 'https://query.wikidata.org/bigdata/namespace/wdq/sparql'
|
||||
url_start = 'http://www.wikidata.org/entity/Q'
|
||||
|
|
@ -26,9 +29,24 @@ def commons_uri_to_filename(uri):
|
|||
|
||||
def run_query(query):
|
||||
params = {'query': query, 'format': 'json'}
|
||||
start = datetime.utcnow()
|
||||
r = requests.post(query_url, data=params, stream=True)
|
||||
end = datetime.utcnow()
|
||||
|
||||
db_query = WikidataQuery(
|
||||
start_time=start,
|
||||
end_time=end,
|
||||
sparql_query=query,
|
||||
path=request.full_path.rstrip('?'),
|
||||
status_code=r.status_code)
|
||||
|
||||
if r.status_code != 200:
|
||||
print(r.text)
|
||||
db_query.error_text = r.text
|
||||
|
||||
database.session.add(db_query)
|
||||
database.session.commit()
|
||||
|
||||
assert r.status_code == 200
|
||||
return r
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue