summaryrefslogtreecommitdiff
path: root/server
diff options
context:
space:
mode:
authorIlya Tetin <ilya.tetin@agoda.com>2019-04-23 10:59:42 +0700
committerIlya Tetin <ilya.tetin@agoda.com>2019-04-23 10:59:42 +0700
commit218f153a2c6cfd43da7770f1ce3b9a4d314f3295 (patch)
treea667078bb05e2c7774ad3a891e5be152f5e7f067 /server
parenta70efa5bb1270b3fe9f1f4efcf2d88529fa64756 (diff)
server: fix AND condition in post metric queries
Diffstat (limited to 'server')
-rw-r--r--server/szurubooru/func/metrics.py16
-rw-r--r--server/szurubooru/tests/func/test_metrics.py20
2 files changed, 21 insertions, 15 deletions
diff --git a/server/szurubooru/func/metrics.py b/server/szurubooru/func/metrics.py
index 93fb973..7545b65 100644
--- a/server/szurubooru/func/metrics.py
+++ b/server/szurubooru/func/metrics.py
@@ -118,8 +118,8 @@ def try_get_post_metric(
return (
db.session
.query(model.PostMetric)
- .filter(model.PostMetric.metric == metric and
- model.PostMetric.post == post)
+ .filter(model.PostMetric.metric == metric)
+ .filter(model.PostMetric.post == post)
.one_or_none())
@@ -129,8 +129,8 @@ def try_get_post_metric_range(
return (
db.session
.query(model.PostMetricRange)
- .filter(model.PostMetricRange.metric == metric and
- model.PostMetricRange.post == post)
+ .filter(model.PostMetricRange.metric == metric)
+ .filter(model.PostMetricRange.post == post)
.one_or_none())
@@ -139,7 +139,7 @@ def create_metric(
min: float,
max: float) -> model.Metric:
assert tag
- if tag.metric is not None:
+ if tag.metric:
raise MetricAlreadyExistsError('Tag already has a metric.')
if min >= max:
raise InvalidMetricError('Metric min(%r) >= max(%r)' % (min, max))
@@ -159,7 +159,7 @@ def update_or_create_metric(
min, max = metric_data['min'], metric_data['max']
if min >= max:
raise InvalidMetricError('Metric min(%r) >= max(%r)' % (min, max))
- if tag.metric is not None:
+ if tag.metric:
tag.metric.min = min
tag.metric.max = max
versions.bump_version(tag.metric)
@@ -203,7 +203,7 @@ def update_or_create_post_metrics(post: model.Post, metrics_data: Any) -> None:
value = float(metric_data['value'])
tag_name = metric_data['tag_name']
tag = tags.get_tag_by_name(tag_name)
- if tag.metric is None:
+ if not tag.metric:
raise MetricDoesNotExistsError(
'Tag %r has no metric.' % tag_name)
post_metric = update_or_create_post_metric(post, tag.metric, value)
@@ -256,7 +256,7 @@ def update_or_create_post_metric_ranges(
high = float(metric_data['high'])
tag_name = metric_data['tag_name']
tag = tags.get_tag_by_name(tag_name)
- if tag.metric is None:
+ if not tag.metric:
raise MetricDoesNotExistsError(
'Tag %r has no metric.' % tag_name)
post_metric_range = update_or_create_post_metric_range(
diff --git a/server/szurubooru/tests/func/test_metrics.py b/server/szurubooru/tests/func/test_metrics.py
index e84060e..22f3e38 100644
--- a/server/szurubooru/tests/func/test_metrics.py
+++ b/server/szurubooru/tests/func/test_metrics.py
@@ -184,17 +184,23 @@ def test_update_or_create_post_metric_create(post_factory, metric_factory):
def test_update_or_create_post_metric_update(post_factory, metric_factory):
metric = metric_factory()
- post = post_factory(tags=[metric.tag])
- post_metric = model.PostMetric(post=post, metric=metric, value=1.2)
- db.session.add(post_metric)
+ post1 = post_factory(tags=[metric.tag])
+ post2 = post_factory(tags=[metric.tag])
+ post_metric1 = model.PostMetric(post=post1, metric=metric, value=1.2)
+ post_metric2 = model.PostMetric(post=post2, metric=metric, value=5.6)
+ db.session.add_all([post1, post2, post_metric1, post_metric2])
db.session.flush()
- assert post_metric.version == 1
+ assert post_metric1.version == 1
+ assert post_metric2.version == 1
- metrics.update_or_create_post_metric(post, metric, 3.4)
+ metrics.update_or_create_post_metric(post1, metric, 3.4)
db.session.flush()
- assert post_metric.value == 3.4
- assert post_metric.version == 2
+ assert db.session.query(model.PostMetric).count() == 2
+ assert post_metric1.value == 3.4
+ assert post_metric1.version == 2
+ assert post_metric2.value == 5.6
+ assert post_metric2.version == 1
def test_update_or_create_post_metrics_missing_tag(