visibility-no-need
All checks were successful
Deploy to core / deploy (push) Successful in 1m36s

This commit is contained in:
Untone 2024-02-02 19:36:30 +03:00
parent e3ee65f79a
commit 61528e5269
7 changed files with 10 additions and 27 deletions

View File

@ -2,7 +2,7 @@
- Shout.featured_at timestamp of the frontpage featuring event - Shout.featured_at timestamp of the frontpage featuring event
- added proposal accepting logics - added proposal accepting logics
- schema modulized - schema modulized
- - Shout.visibility removed
[0.2.22] [0.2.22]
- added precommit hook - added precommit hook

View File

@ -1,5 +1,4 @@
import time import time
from enum import Enum as Enumeration
from sqlalchemy import JSON, Boolean, Column, ForeignKey, Integer, String from sqlalchemy import JSON, Boolean, Column, ForeignKey, Integer, String
from sqlalchemy.orm import relationship from sqlalchemy.orm import relationship
@ -48,12 +47,6 @@ class ShoutCommunity(Base):
community = Column(ForeignKey('community.id'), primary_key=True, index=True) community = Column(ForeignKey('community.id'), primary_key=True, index=True)
class ShoutVisibility(Enumeration):
AUTHORS = 'AUTHORS'
COMMUNITY = 'COMMUNITY'
FEATURED = 'FEATURED'
class Shout(Base): class Shout(Base):
__tablename__ = 'shout' __tablename__ = 'shout'
@ -83,8 +76,6 @@ class Shout(Base):
communities = relationship(lambda: Community, secondary='shout_community') communities = relationship(lambda: Community, secondary='shout_community')
reactions = relationship(lambda: Reaction) reactions = relationship(lambda: Reaction)
visibility = Column(String, default=ShoutVisibility.AUTHORS.value)
lang = Column(String, nullable=False, default='ru', comment='Language') lang = Column(String, nullable=False, default='ru', comment='Language')
version_of = Column(ForeignKey('shout.id'), nullable=True) version_of = Column(ForeignKey('shout.id'), nullable=True)
oid = Column(String, nullable=True) oid = Column(String, nullable=True)

View File

@ -5,7 +5,7 @@ from sqlalchemy.orm import joinedload
from orm.author import Author from orm.author import Author
from orm.reaction import Reaction, ReactionKind from orm.reaction import Reaction, ReactionKind
from orm.shout import Shout, ShoutAuthor, ShoutTopic, ShoutVisibility from orm.shout import Shout, ShoutAuthor, ShoutTopic
from orm.topic import Topic from orm.topic import Topic
from resolvers.follower import reactions_follow, reactions_unfollow from resolvers.follower import reactions_follow, reactions_unfollow
from resolvers.rater import is_negative, is_positive from resolvers.rater import is_negative, is_positive
@ -61,7 +61,7 @@ async def create_shout(_, info, inp):
'authors': [], 'authors': [],
'slug': slug, 'slug': slug,
'topics': inp.get('topics', []), 'topics': inp.get('topics', []),
'visibility': ShoutVisibility.AUTHORS.value, 'published_at': None,
'created_at': current_time, # Set created_at as Unix timestamp 'created_at': current_time, # Set created_at as Unix timestamp
} }

View File

@ -8,7 +8,7 @@ from sqlalchemy.sql import union
from orm.author import Author from orm.author import Author
from orm.reaction import Reaction, ReactionKind from orm.reaction import Reaction, ReactionKind
from orm.shout import Shout, ShoutVisibility from orm.shout import Shout
from resolvers.editor import handle_proposing from resolvers.editor import handle_proposing
from resolvers.follower import reactions_follow from resolvers.follower import reactions_follow
from resolvers.rater import RATING_REACTIONS, is_negative, is_positive from resolvers.rater import RATING_REACTIONS, is_negative, is_positive
@ -90,7 +90,7 @@ def check_to_unfeature(session, rejecter_id, reaction):
async def set_featured(session, shout_id): async def set_featured(session, shout_id):
s = session.query(Shout).where(Shout.id == shout_id).first() s = session.query(Shout).where(Shout.id == shout_id).first()
s.featured_at = int(time.time()) s.featured_at = int(time.time())
Shout.update(s, {'visibility': ShoutVisibility.FEATURED.value}) Shout.update(s, { 'featured_at': int(time.time()) })
author = session.query(Author).filter(Author.id == s.created_by).first() author = session.query(Author).filter(Author.id == s.created_by).first()
if author: if author:
await add_user_role(str(author.user)) await add_user_role(str(author.user))
@ -100,7 +100,7 @@ async def set_featured(session, shout_id):
def set_unfeatured(session, shout_id): def set_unfeatured(session, shout_id):
s = session.query(Shout).where(Shout.id == shout_id).first() s = session.query(Shout).where(Shout.id == shout_id).first()
Shout.update(s, {'visibility': ShoutVisibility.COMMUNITY.value , 'featured_at': None }) Shout.update(s, {'featured_at': None })
session.add(s) session.add(s)
session.commit() session.commit()

View File

@ -7,7 +7,7 @@ from starlette.exceptions import HTTPException
from orm.author import Author, AuthorFollower from orm.author import Author, AuthorFollower
from orm.reaction import Reaction, ReactionKind from orm.reaction import Reaction, ReactionKind
from orm.shout import Shout, ShoutAuthor, ShoutTopic, ShoutVisibility from orm.shout import Shout, ShoutAuthor, ShoutTopic
from orm.topic import Topic, TopicFollower from orm.topic import Topic, TopicFollower
from resolvers.reaction import add_stat_columns from resolvers.reaction import add_stat_columns
from resolvers.topic import get_random_topic from resolvers.topic import get_random_topic
@ -28,7 +28,7 @@ def apply_filters(q, filters, author_id=None):
by_featured = filters.get('featured') by_featured = filters.get('featured')
if by_featured: if by_featured:
q = q.filter(Shout.visibility == ShoutVisibility.FEATURED.value) q = q.filter(Shout.featered_at.is_not(None))
by_layouts = filters.get('layouts') by_layouts = filters.get('layouts')
if by_layouts: if by_layouts:
q = q.filter(Shout.layout.in_(by_layouts)) q = q.filter(Shout.layout.in_(by_layouts))
@ -206,8 +206,7 @@ async def load_shouts_drafts(_, info):
joinedload(Shout.authors), joinedload(Shout.authors),
joinedload(Shout.topics), joinedload(Shout.topics),
) )
.filter(Shout.deleted_at.is_(None)) .filter(and_(Shout.deleted_at.is_(None), Shout.published_at.is_(None)))
.filter(Shout.visibility == ShoutVisibility.AUTHORS.value)
) )
shouts = [] shouts = []
@ -466,7 +465,7 @@ async def load_shouts_random_topic(_, info, limit: int = 10):
.filter( .filter(
and_( and_(
Shout.deleted_at.is_(None), Shout.deleted_at.is_(None),
Shout.visibility == ShoutVisibility.FEATURED.value, Shout.featured_at.is_not(None),
Shout.topics.any(slug=topic.slug), Shout.topics.any(slug=topic.slug),
) )
) )

View File

@ -1,9 +1,3 @@
enum ShoutVisibility {
AUTHORS
COMMUNITY
FEATURED
}
enum ReactionStatus { enum ReactionStatus {
NEW NEW
UPDATED UPDATED

View File

@ -84,7 +84,6 @@ type Shout {
cover: String cover: String
cover_caption: String cover_caption: String
layout: String! layout: String!
visibility: String
created_at: Int! created_at: Int!
updated_at: Int updated_at: Int