Fix incorrect rate query

This commit is contained in:
Xavier Bustamante Talavera 2019-02-05 17:59:15 +01:00
parent d6ca5e2922
commit 04358a5506
4 changed files with 8 additions and 9 deletions

View File

@ -7,7 +7,7 @@ from typing import Dict, List, Set
from boltons import urlutils from boltons import urlutils
from citext import CIText from citext import CIText
from ereuse_utils.naming import Naming from ereuse_utils.naming import Naming, HID_CONVERSION_DOC
from more_itertools import unique_everseen from more_itertools import unique_everseen
from sqlalchemy import BigInteger, Boolean, Column, Enum as DBEnum, Float, ForeignKey, Integer, \ from sqlalchemy import BigInteger, Boolean, Column, Enum as DBEnum, Float, ForeignKey, Integer, \
Sequence, SmallInteger, Unicode, inspect, text Sequence, SmallInteger, Unicode, inspect, text
@ -57,11 +57,7 @@ class Device(Thing):
from Devicehub using literal identifiers from the device, from Devicehub using literal identifiers from the device,
so it can re-generated *offline*. so it can re-generated *offline*.
The HID is the result of joining the type of device, S/N, """ + HID_CONVERSION_DOC
manufacturer name, and model. Devices that do not have one
of these fields cannot generate HID, thus not guaranteeing
global uniqueness.
"""
model = Column(Unicode(), check_lower('model')) model = Column(Unicode(), check_lower('model'))
model.comment = """The model or brand of the device in lower case. model.comment = """The model or brand of the device in lower case.

View File

@ -51,7 +51,10 @@ class Filters(query.Query):
model = query.ILike(Device.model) model = query.ILike(Device.model)
manufacturer = query.ILike(Device.manufacturer) manufacturer = query.ILike(Device.manufacturer)
serialNumber = query.ILike(Device.serial_number) serialNumber = query.ILike(Device.serial_number)
rating = query.Join(Device.id == events.Rate.device_id, RateQ) # todo test query for rating (and possibly other filters)
rating = query.Join((Device.id == events.EventWithOneDevice.device_id)
& (events.EventWithOneDevice.id == events.Rate.id),
RateQ)
tag = query.Join(Device.id == Tag.device_id, TagQ) tag = query.Join(Device.id == Tag.device_id, TagQ)
# todo This part of the query is really slow # todo This part of the query is really slow
# And forces usage of distinct, as it returns many rows # And forces usage of distinct, as it returns many rows

View File

@ -5,7 +5,7 @@ click==6.7
click-spinner==0.1.8 click-spinner==0.1.8
colorama==0.3.9 colorama==0.3.9
colour==0.1.5 colour==0.1.5
ereuse-utils[naming, test, session, cli]==0.4.0b19 ereuse-utils[naming, test, session, cli]==0.4.0b20
Flask==1.0.2 Flask==1.0.2
Flask-Cors==3.0.6 Flask-Cors==3.0.6
Flask-SQLAlchemy==2.3.2 Flask-SQLAlchemy==2.3.2

View File

@ -32,7 +32,7 @@ setup(
'teal>=0.2.0a35', # teal always first 'teal>=0.2.0a35', # teal always first
'click', 'click',
'click-spinner', 'click-spinner',
'ereuse-utils[naming, test, session, cli]>=0.4b19', 'ereuse-utils[naming, test, session, cli]>=0.4b20',
'hashids', 'hashids',
'marshmallow_enum', 'marshmallow_enum',
'psycopg2-binary', 'psycopg2-binary',