示例#1
0
    async def get(self, user):

        #r = await aioredis.create_connection(
        #    f"redis://{os.environ.get('REDIS_HOST', 'localhost')}",
        #    loop=IOLoop.current().asyncio_loop,
        #    encoding='utf-8'
        #)

        local = self.get_argument('media_ids', False)
        max_id = self.get_argument('max_id', None)
        since_id = self.get_argument('since_id', None)
        limit = self.get_argument('limit', 20)

        statuses = []
        errors = 0

        for post in TimelineManager(user).query(since_id=since_id,
                                                max_id=max_id,
                                                local=True,
                                                limit=limit):
            status = Status.get_or_none(id=int(post))
            if status:
                json_data = status.to_json()
                count = await self.application.objects.count(
                    Like.select().join(UserProfile).switch(Like).join(
                        Status).switch(Like).where(Like.user.id == user.id,
                                                   Like.status.id == status))
                if count:
                    json_data["favourited"] = True

                statuses.append(json_data)

        self.write(json.dumps(statuses, default=str))
示例#2
0
 def on_post(self, req, resp, id):
     status = Status.get_or_none(id=id)
     if status:
         user = req.context['user']
         UserManager(user).dislike(status)
         resp.body = json.dumps(status, default=str)
         resp.status = falcon.HTTP_200
     else:
         resp.status = falcon.HTTP_404
示例#3
0
 def on_delete(self, req, resp, id):
     status = Status.get_or_none(id=id)
     if status != None:
         if req.context['user'].id == status.user.id:
             remove_status(status)
             resp.status = falcon.HTTP_200
         else:
             resp.status = falcon.HTTP_401
     else:
         resp.status = falcon.HTTP_500
示例#4
0
    def __init__(self, id):
        """
            id: int - Id of the status representing
        """

        self.status = Status.get_or_none(Status.id == id)
        self.LIVE_UPDATES = 'timeline:{}'

        if not self.status:
            raise ValueError(f'Could not find status with id {id}')

        self.id = id
示例#5
0
    def on_get(self, req, resp, id):
        #photo = self.model.get_or_none(identifier=pid)
        photo = Status.get_or_none(id=id)

        if photo != None:
            result = photo.json()
            resp.status = falcon.HTTP_200
        else:
            result = json.dumps({"Error": 'Not found'})
            resp.status = falcon.HTTP_404

        resp.body = result
示例#6
0
    def on_get(self, req, resp, pid):
        #photo = self.model.get_or_none(identifier=pid)
        photo = Status.get_or_none(identifier=pid)

        if photo != None:
            result = photo.json()
        else:
            result = json.dumps({"Error": 'Not found'})

        resp.body = result
        resp.set_header('Response by:', 'zinat')
        resp.status = falcon.HTTP_200
示例#7
0
    def on_post(self, req, resp, album, user):
        photo = Status.get_or_none(Status.id == req.get_param('photo'))
        album = Album.get_or_none(Album.id == album)

        print(album, photo)

        if album and photo:
            RelationAlbumStatus.create(album=album, photo=photo)

            resp.body = json.dumps({"Result": "Status successfully modified"})
            resp.status = falcon.HTTP_200
        else:
            resp.body = json.dumps({"Error": "Error creating relation"})
            resp.status = falcon.HTTP_500
示例#8
0
    def on_post(self, req, resp):

        if req.get_param('media_ids'):
            user = req.context['user']

            status = Status(
                caption=req.get_param('status') or '',
                visibility=bool(req.get_param('visibility')), #False if None
                user=user,
                sensitive=bool(req.get_param('sensitive')),
                remote=False,
                story=bool(req.get_param('is_story'))
            )

            if status.sensitive:
                status.spoliet_text=req.get_param('spoiler_text')

            status.save()

            if  req.get_param('media_ids') != None:
                    for image in req.get_param('media_ids').split(','):
                        m = Media.get_or_none(media_name=image)
                        m.status = status
                        m.save()

            #Increment the number of posts uploaded
            UserProfile.update({UserProfile.statuses_count: UserProfile.statuses_count + 1}).where(UserProfile.id == user.id).execute()
            spread_status(status)
            resp.status = falcon.HTTP_200
            resp.body = json.dumps(status.to_json(),default=str)

        elif req.get_param('in_reply_to_id'):

            replying_to = Status.get_or_none(id=req.get_param('in_reply_to_id'))
            if replying_to:
                status = Status(
                    caption = req.get_param('status'),
                    user = user,
                    remote = False,
                    story = False,
                    in_reply_to = replying_to,
                    sensitive = replying_to.sensitive,
                    spoiler_text = req.get_param('spoiler_text') or replying_to.spoiler_text
                )
            else:
                resp.status = falcon.HTTP_500
                resp.body = json.dumps({"Error": "Replying to bad ID"})
        else:
            resp.status = falcon.HTTP_500
            resp.body = json.dumps({"Error": "No photo attached"})