This commit is contained in:
parent
e3ee65f79a
commit
61528e5269
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
||||
|
|
|
@ -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()
|
||||
|
||||
|
|
|
@ -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),
|
||||
)
|
||||
)
|
||||
|
|
|
@ -1,9 +1,3 @@
|
|||
enum ShoutVisibility {
|
||||
AUTHORS
|
||||
COMMUNITY
|
||||
FEATURED
|
||||
}
|
||||
|
||||
enum ReactionStatus {
|
||||
NEW
|
||||
UPDATED
|
||||
|
|
|
@ -84,7 +84,6 @@ type Shout {
|
|||
cover: String
|
||||
cover_caption: String
|
||||
layout: String!
|
||||
visibility: String
|
||||
|
||||
created_at: Int!
|
||||
updated_at: Int
|
||||
|
|
Loading…
Reference in New Issue
Block a user