From 9663e87838dcc040cf0c5df99db1e07b7b56189e Mon Sep 17 00:00:00 2001
From: rubenwardy
Date: Wed, 15 Jul 2020 19:06:00 +0100
Subject: [PATCH] Count tag views
---
app/blueprints/packages/packages.py | 14 ++++++++++++
app/models.py | 7 +++---
app/querybuilder.py | 2 +-
app/templates/admin/tags/list.html | 34 ++++++++++++++++++++++++----
migrations/versions/c5e4213721dd_.py | 24 ++++++++++++++++++++
5 files changed, 73 insertions(+), 8 deletions(-)
create mode 100644 migrations/versions/c5e4213721dd_.py
diff --git a/app/blueprints/packages/packages.py b/app/blueprints/packages/packages.py
index 90cb72f..8cb9b62 100644
--- a/app/blueprints/packages/packages.py
+++ b/app/blueprints/packages/packages.py
@@ -24,6 +24,7 @@ from . import bp
from app.models import *
from app.querybuilder import QueryBuilder
from app.tasks.importtasks import importRepoScreenshot, updateMetaFromRelease
+from app.rediscache import has_key, set_key
from app.utils import *
from flask_wtf import FlaskForm
@@ -51,6 +52,19 @@ def list_all():
joinedload(Package.media_license), \
subqueryload(Package.tags))
+ edited = False
+ for tag in qb.tags:
+ edited = True
+ key = "tag-" + tag.name
+ if not has_key(key):
+ set_key(key, "true")
+ Tag.query.filter_by(id=tag.id).update({
+ "views": Tag.views + 1
+ })
+
+ if edited:
+ db.session.commit()
+
if qb.lucky:
package = query.first()
if package:
diff --git a/app/models.py b/app/models.py
index 2bb6d3d..711d9fd 100644
--- a/app/models.py
+++ b/app/models.py
@@ -804,11 +804,12 @@ class MetaPackage(db.Model):
return retval
class Tag(db.Model):
- id = db.Column(db.Integer, primary_key=True)
+ id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(100), unique=True, nullable=False)
title = db.Column(db.String(100), nullable=False)
- backgroundColor = db.Column(db.String(6), nullable=False)
- textColor = db.Column(db.String(6), nullable=False)
+ backgroundColor = db.Column(db.String(6), nullable=False)
+ textColor = db.Column(db.String(6), nullable=False)
+ views = db.Column(db.Integer, nullable=False, default=0)
def __init__(self, title, backgroundColor="000000", textColor="ffffff"):
self.title = title
diff --git a/app/querybuilder.py b/app/querybuilder.py
index 49728f0..c4823cb 100644
--- a/app/querybuilder.py
+++ b/app/querybuilder.py
@@ -24,7 +24,7 @@ class QueryBuilder:
tags = [Tag.query.filter_by(name=tname).first() for tname in tags]
tags = [tag for tag in tags if tag is not None]
- # Hid
+ # Hide
hide_flags = args.getlist("hide")
self.title = title
diff --git a/app/templates/admin/tags/list.html b/app/templates/admin/tags/list.html
index 574d1a6..8db66ca 100644
--- a/app/templates/admin/tags/list.html
+++ b/app/templates/admin/tags/list.html
@@ -14,13 +14,39 @@
diff --git a/migrations/versions/c5e4213721dd_.py b/migrations/versions/c5e4213721dd_.py
new file mode 100644
index 0000000..4028a6b
--- /dev/null
+++ b/migrations/versions/c5e4213721dd_.py
@@ -0,0 +1,24 @@
+"""empty message
+
+Revision ID: c5e4213721dd
+Revises: 9832944cd1e4
+Create Date: 2020-07-15 17:54:33.738132
+
+"""
+from alembic import op
+import sqlalchemy as sa
+
+
+# revision identifiers, used by Alembic.
+revision = 'c5e4213721dd'
+down_revision = '9832944cd1e4'
+branch_labels = None
+depends_on = None
+
+
+def upgrade():
+ op.add_column('tag', sa.Column('views', sa.Integer(), nullable=False, server_default="0"))
+
+
+def downgrade():
+ op.drop_column('tag', 'views')