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
- added proposal accepting logics
- schema modulized
-
- Shout.visibility removed
[0.2.22]
- added precommit hook

View File

@ -1,5 +1,4 @@
import time
from enum import Enum as Enumeration
from sqlalchemy import JSON, Boolean, Column, ForeignKey, Integer, String
from sqlalchemy.orm import relationship
@ -48,12 +47,6 @@ class ShoutCommunity(Base):
community = Column(ForeignKey('community.id'), primary_key=True, index=True)
class ShoutVisibility(Enumeration):
AUTHORS = 'AUTHORS'
COMMUNITY = 'COMMUNITY'
FEATURED = 'FEATURED'
class Shout(Base):
__tablename__ = 'shout'
@ -83,8 +76,6 @@ class Shout(Base):
communities = relationship(lambda: Community, secondary='shout_community')
reactions = relationship(lambda: Reaction)
visibility = Column(String, default=ShoutVisibility.AUTHORS.value)
lang = Column(String, nullable=False, default='ru', comment='Language')
version_of = Column(ForeignKey('shout.id'), 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.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 resolvers.follower import reactions_follow, reactions_unfollow
from resolvers.rater import is_negative, is_positive
@ -61,7 +61,7 @@ async def create_shout(_, info, inp):
'authors': [],
'slug': slug,
'topics': inp.get('topics', []),
'visibility': ShoutVisibility.AUTHORS.value,
'published_at': None,
'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.reaction import Reaction, ReactionKind
from orm.shout import Shout, ShoutVisibility
from orm.shout import Shout
from resolvers.editor import handle_proposing
from resolvers.follower import reactions_follow
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):
s = session.query(Shout).where(Shout.id == shout_id).first()
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()
if author:
await add_user_role(str(author.user))
@ -100,7 +100,7 @@ async def set_featured(session, shout_id):
def set_unfeatured(session, shout_id):
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.commit()

View File

@ -7,7 +7,7 @@ from starlette.exceptions import HTTPException
from orm.author import Author, AuthorFollower
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 resolvers.reaction import add_stat_columns
from resolvers.topic import get_random_topic
@ -28,7 +28,7 @@ def apply_filters(q, filters, author_id=None):
by_featured = filters.get('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')
if 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.topics),
)
.filter(Shout.deleted_at.is_(None))
.filter(Shout.visibility == ShoutVisibility.AUTHORS.value)
.filter(and_(Shout.deleted_at.is_(None), Shout.published_at.is_(None)))
)
shouts = []
@ -466,7 +465,7 @@ async def load_shouts_random_topic(_, info, limit: int = 10):
.filter(
and_(
Shout.deleted_at.is_(None),
Shout.visibility == ShoutVisibility.FEATURED.value,
Shout.featured_at.is_not(None),
Shout.topics.any(slug=topic.slug),
)
)

View File

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

View File

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