def post(self, topic_id): username = self.current_user s = yield gen.maybe_future( Subscription.get_by_user_topic(username, topic_id)) if s: raise exceptions.TopicAlreadySubscribed() else: yield gen.maybe_future(Subscription.create(username, topic_id))
def delete(self, topic_id): username = self.current_user s = yield gen.maybe_future( Subscription.get_by_user_topic(username, topic_id)) if s: yield gen.maybe_future(s.delete()) else: raise exceptions.TopicHasNotBeenSubscribed()
def _topic_info(username, topic): is_subed = False if username is not None: exists = Subscription.get_by_user_topic(username, topic.id) if exists: is_subed = True info = topic.to_dict() info.update({'is_subscribed': is_subed}) return info
def get(self, topic_id): topic = yield gen.maybe_future(Topic.get(topic_id)) if not topic: raise HTTPError(404) admin = yield gen.maybe_future(User.get(topic.admin_id)) is_subscribed = False if self.current_user: is_subscribed = yield gen.maybe_future( Subscription.get_by_user_topic(self.current_user, topic.id)) self.render( 'topic.html', title=topic.name, keywords=topic.name + ', 2L', description=topic.description, topic_id=topic_id, admin=admin.username, avatar=topic.avatar, rules=topic.rules, is_subscribed=int(bool(is_subscribed)), )