Compare commits
No commits in common. "cd3cc62004bd5dc36ba75004bce07f3611896fbb" and "d1cd44f8f66f864b134053e96aeedf4383d4e05f" have entirely different histories.
cd3cc62004
...
d1cd44f8f6
|
@ -69,17 +69,23 @@ class SearchView(InventaryMixin):
|
||||||
if not matches.size():
|
if not matches.size():
|
||||||
return self.search_hids(query, offset, limit)
|
return self.search_hids(query, offset, limit)
|
||||||
|
|
||||||
devices = []
|
annotations = []
|
||||||
for x in matches:
|
for x in matches:
|
||||||
devices.append(self.get_annotations(x))
|
annotations.extend(self.get_annotations(x))
|
||||||
|
|
||||||
|
devices = [Device(id=x) for x in set(annotations)]
|
||||||
count = matches.size()
|
count = matches.size()
|
||||||
return devices, count
|
return devices, count
|
||||||
|
|
||||||
def get_annotations(self, xp):
|
def get_annotations(self, xp):
|
||||||
snap = xp.document.get_data()
|
snap = xp.document.get_data()
|
||||||
uuid = json.loads(snap).get('uuid')
|
uuid = json.loads(snap).get('uuid')
|
||||||
return Device.get_annotation_from_uuid(uuid, self.request.user.institution)
|
|
||||||
|
return Annotation.objects.filter(
|
||||||
|
type=Annotation.Type.SYSTEM,
|
||||||
|
owner=self.request.user.institution,
|
||||||
|
uuid=uuid
|
||||||
|
).values_list("value", flat=True).distinct()
|
||||||
|
|
||||||
def search_hids(self, query, offset, limit):
|
def search_hids(self, query, offset, limit):
|
||||||
qry = Q()
|
qry = Q()
|
||||||
|
|
106
device/models.py
106
device/models.py
|
@ -90,11 +90,9 @@ class Device:
|
||||||
def get_hids(self):
|
def get_hids(self):
|
||||||
annotations = self.get_annotations()
|
annotations = self.get_annotations()
|
||||||
|
|
||||||
algos = list(ALGOS.keys())
|
|
||||||
algos.append('CUSTOM_ID')
|
|
||||||
self.hids = list(set(annotations.filter(
|
self.hids = list(set(annotations.filter(
|
||||||
type=Annotation.Type.SYSTEM,
|
type=Annotation.Type.SYSTEM,
|
||||||
key__in=algos,
|
key__in=ALGOS.keys(),
|
||||||
).values_list("value", flat=True)))
|
).values_list("value", flat=True)))
|
||||||
|
|
||||||
def get_evidences(self):
|
def get_evidences(self):
|
||||||
|
@ -120,32 +118,9 @@ class Device:
|
||||||
def get_unassigned(cls, institution, offset=0, limit=None):
|
def get_unassigned(cls, institution, offset=0, limit=None):
|
||||||
|
|
||||||
sql = """
|
sql = """
|
||||||
WITH RankedAnnotations AS (
|
SELECT DISTINCT t1.value from evidence_annotation as t1
|
||||||
SELECT
|
left join lot_devicelot as t2 on t1.value = t2.device_id
|
||||||
t1.value,
|
where t2.device_id is null and owner_id=={institution} and type=={type}
|
||||||
t1.key,
|
|
||||||
ROW_NUMBER() OVER (
|
|
||||||
PARTITION BY t1.uuid
|
|
||||||
ORDER BY
|
|
||||||
CASE
|
|
||||||
WHEN t1.key = 'CUSTOM_ID' THEN 1
|
|
||||||
WHEN t1.key = 'hidalgo1' THEN 2
|
|
||||||
ELSE 3
|
|
||||||
END,
|
|
||||||
t1.created DESC
|
|
||||||
) AS row_num
|
|
||||||
FROM evidence_annotation AS t1
|
|
||||||
LEFT JOIN lot_devicelot AS t2 ON t1.value = t2.device_id
|
|
||||||
WHERE t2.device_id IS NULL
|
|
||||||
AND t1.owner_id = {institution}
|
|
||||||
AND t1.type = {type}
|
|
||||||
)
|
|
||||||
SELECT DISTINCT
|
|
||||||
value
|
|
||||||
FROM
|
|
||||||
RankedAnnotations
|
|
||||||
WHERE
|
|
||||||
row_num = 1
|
|
||||||
""".format(
|
""".format(
|
||||||
institution=institution.id,
|
institution=institution.id,
|
||||||
type=Annotation.Type.SYSTEM,
|
type=Annotation.Type.SYSTEM,
|
||||||
|
@ -169,83 +144,18 @@ class Device:
|
||||||
def get_unassigned_count(cls, institution):
|
def get_unassigned_count(cls, institution):
|
||||||
|
|
||||||
sql = """
|
sql = """
|
||||||
WITH RankedAnnotations AS (
|
SELECT count(DISTINCT t1.value) from evidence_annotation as t1
|
||||||
SELECT
|
left join lot_devicelot as t2 on t1.value = t2.device_id
|
||||||
t1.value,
|
where t2.device_id is null and owner_id=={institution} and type=={type};
|
||||||
t1.key,
|
|
||||||
ROW_NUMBER() OVER (
|
|
||||||
PARTITION BY t1.uuid
|
|
||||||
ORDER BY
|
|
||||||
CASE
|
|
||||||
WHEN t1.key = 'CUSTOM_ID' THEN 1
|
|
||||||
WHEN t1.key = 'hidalgo1' THEN 2
|
|
||||||
ELSE 3
|
|
||||||
END,
|
|
||||||
t1.created DESC
|
|
||||||
) AS row_num
|
|
||||||
FROM evidence_annotation AS t1
|
|
||||||
LEFT JOIN lot_devicelot AS t2 ON t1.value = t2.device_id
|
|
||||||
WHERE t2.device_id IS NULL
|
|
||||||
AND t1.owner_id = {institution}
|
|
||||||
AND t1.type = {type}
|
|
||||||
)
|
|
||||||
SELECT
|
|
||||||
COUNT(DISTINCT value)
|
|
||||||
FROM
|
|
||||||
RankedAnnotations
|
|
||||||
WHERE
|
|
||||||
row_num = 1
|
|
||||||
""".format(
|
""".format(
|
||||||
institution=institution.id,
|
institution=institution.id,
|
||||||
type=Annotation.Type.SYSTEM,
|
type=Annotation.Type.SYSTEM,
|
||||||
)
|
)
|
||||||
|
|
||||||
with connection.cursor() as cursor:
|
with connection.cursor() as cursor:
|
||||||
cursor.execute(sql)
|
cursor.execute(sql)
|
||||||
return cursor.fetchall()[0][0]
|
return cursor.fetchall()[0][0]
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def get_annotation_from_uuid(cls, uuid, institution):
|
|
||||||
sql = """
|
|
||||||
WITH RankedAnnotations AS (
|
|
||||||
SELECT
|
|
||||||
t1.value,
|
|
||||||
t1.key,
|
|
||||||
ROW_NUMBER() OVER (
|
|
||||||
PARTITION BY t1.uuid
|
|
||||||
ORDER BY
|
|
||||||
CASE
|
|
||||||
WHEN t1.key = 'CUSTOM_ID' THEN 1
|
|
||||||
WHEN t1.key = 'hidalgo1' THEN 2
|
|
||||||
ELSE 3
|
|
||||||
END,
|
|
||||||
t1.created DESC
|
|
||||||
) AS row_num
|
|
||||||
FROM evidence_annotation AS t1
|
|
||||||
LEFT JOIN lot_devicelot AS t2 ON t1.value = t2.device_id
|
|
||||||
WHERE t2.device_id IS NULL
|
|
||||||
AND t1.owner_id = {institution}
|
|
||||||
AND t1.type = {type}
|
|
||||||
AND t1.uuid = '{uuid}'
|
|
||||||
)
|
|
||||||
SELECT DISTINCT
|
|
||||||
value
|
|
||||||
FROM
|
|
||||||
RankedAnnotations
|
|
||||||
WHERE
|
|
||||||
row_num = 1;
|
|
||||||
""".format(
|
|
||||||
uuid=uuid.replace("-", ""),
|
|
||||||
institution=institution.id,
|
|
||||||
type=Annotation.Type.SYSTEM,
|
|
||||||
)
|
|
||||||
|
|
||||||
annotations = []
|
|
||||||
with connection.cursor() as cursor:
|
|
||||||
cursor.execute(sql)
|
|
||||||
annotations = cursor.fetchall()
|
|
||||||
|
|
||||||
return cls(id=annotations[0][0])
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def is_websnapshot(self):
|
def is_websnapshot(self):
|
||||||
if not self.last_evidence:
|
if not self.last_evidence:
|
||||||
|
|
|
@ -126,7 +126,6 @@ class Evidence:
|
||||||
return Annotation.objects.filter(
|
return Annotation.objects.filter(
|
||||||
owner=user.institution,
|
owner=user.institution,
|
||||||
type=Annotation.Type.SYSTEM,
|
type=Annotation.Type.SYSTEM,
|
||||||
key="hidalgo1",
|
|
||||||
).order_by("-created").values_list("uuid", flat=True).distinct()
|
).order_by("-created").values_list("uuid", flat=True).distinct()
|
||||||
|
|
||||||
def set_components(self):
|
def set_components(self):
|
||||||
|
|
Loading…
Reference in New Issue