split old and ackee
This commit is contained in:
parent
41055d8501
commit
c717f387ea
|
@ -193,7 +193,7 @@ async def migrate(entry, storage):
|
||||||
await content_ratings_to_reactions(entry, shout_dict["slug"])
|
await content_ratings_to_reactions(entry, shout_dict["slug"])
|
||||||
|
|
||||||
# shout views
|
# shout views
|
||||||
await ViewedStorage.increment(shout_dict["slug"], amount=entry.get("views", 1))
|
await ViewedStorage.increment(shout_dict["slug"], amount=entry.get("views", 1), viewer='old-discours')
|
||||||
# del shout_dict['ratings']
|
# del shout_dict['ratings']
|
||||||
|
|
||||||
storage["shouts"]["by_oid"][entry["_id"]] = shout_dict
|
storage["shouts"]["by_oid"][entry["_id"]] = shout_dict
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
|
||||||
from sqlalchemy import Boolean, Column, DateTime, ForeignKey, Integer, String, JSON
|
from sqlalchemy import Boolean, Column, DateTime, ForeignKey, Integer, String, JSON
|
||||||
from sqlalchemy.orm import relationship
|
from sqlalchemy.orm import column_property, relationship
|
||||||
|
|
||||||
from base.orm import Base, local_session
|
from base.orm import Base, local_session
|
||||||
from orm.reaction import Reaction
|
from orm.reaction import Reaction
|
||||||
|
@ -61,7 +61,11 @@ class Shout(Base):
|
||||||
authors = relationship(lambda: User, secondary=ShoutAuthor.__tablename__)
|
authors = relationship(lambda: User, secondary=ShoutAuthor.__tablename__)
|
||||||
topics = relationship(lambda: Topic, secondary=ShoutTopic.__tablename__)
|
topics = relationship(lambda: Topic, secondary=ShoutTopic.__tablename__)
|
||||||
|
|
||||||
views = Column(Integer, default=0)
|
# views from the old Discours website
|
||||||
|
viewsOld = Column(Integer, default=0)
|
||||||
|
# views from Ackee tracker on the new Discours website
|
||||||
|
viewsAckee = Column(Integer, default=0)
|
||||||
|
views = column_property(viewsOld + viewsAckee)
|
||||||
reactions = relationship(lambda: Reaction)
|
reactions = relationship(lambda: Reaction)
|
||||||
|
|
||||||
# TODO: these field should be used or modified
|
# TODO: these field should be used or modified
|
||||||
|
|
|
@ -156,14 +156,26 @@ class ViewedStorage:
|
||||||
self.by_topics[topic.slug][shout_slug] = self.by_shouts[shout_slug]
|
self.by_topics[topic.slug][shout_slug] = self.by_shouts[shout_slug]
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
async def increment(shout_slug, amount=1):
|
async def increment(shout_slug, amount=1, viewer='ackee'):
|
||||||
""" the only way to change views counter """
|
""" the only way to change views counter """
|
||||||
self = ViewedStorage
|
self = ViewedStorage
|
||||||
async with self.lock:
|
async with self.lock:
|
||||||
# TODO optimize, currenty we execute 1 DB transaction per shout
|
# TODO optimize, currenty we execute 1 DB transaction per shout
|
||||||
with local_session() as session:
|
with local_session() as session:
|
||||||
shout = session.query(Shout).where(Shout.slug == shout_slug).one()
|
shout = session.query(Shout).where(Shout.slug == shout_slug).one()
|
||||||
shout.views += amount
|
if viewer == 'old-discours':
|
||||||
|
if shout.viewsOld == amount:
|
||||||
|
print(f"amount: {amount}")
|
||||||
|
else:
|
||||||
|
print(f"amount changed: {shout.viewsOld} --> {amount}")
|
||||||
|
shout.viewsOld = amount
|
||||||
|
else:
|
||||||
|
if shout.viewsAckee == amount:
|
||||||
|
print(f"amount: {amount}")
|
||||||
|
else:
|
||||||
|
print(f"amount changed: {shout.viewsAckee} --> {amount}")
|
||||||
|
shout.viewsAckee = amount
|
||||||
|
|
||||||
session.commit()
|
session.commit()
|
||||||
|
|
||||||
# this part is currently unused
|
# this part is currently unused
|
||||||
|
|
Loading…
Reference in New Issue
Block a user