Esempio n. 1
0
    def insert(blobType, release, data, content_type, **args):
        try:
            blobId = ObjectId()
            dbGrid = Db().getGridFs('blobs')
            dbGrid.put(
                data,
                content_type=content_type,
                filename="%s.%s" % (blobId, release),
                type=blobType,
                blobId=str(blobId),
                release=release,
                **args
            )

            if 'activity' in args:
                a = ActivityFactory.get(args['activity'])
                if not 'blobs' in a.__dict__[release]:
                    a.__dict__[release]['blobs'] = {}
                if not blobType in a.__dict__[release]['blobs']:
                    a.__dict__[release]['blobs'][blobType] = []

                a.__dict__[release]['blobs'][blobType].append(str(blobId))
                ActivityFactory.update(a)
        except DbError:
            output.error('cannot access db', 503)

        return blobId
Esempio n. 2
0
    def delete(blobId, release='draft'):
        try:
            try:
                thumbnail = None
                dbGrid = Db().getGridFs('blobs')
                filename = "%s.%s" % (blobId, release)
                thumbnail = dbGrid.get_last_version(filename)
                dbGrid.delete(thumbnail._id)
                thumbnail = thumbnail.__dict__['_file']
            except CorruptGridFile as e:
                pass
            except NoFile:
                pass
            finally:
                if not thumbnail or not 'activity' in thumbnail:
                    return True

                a = ActivityFactory.get(thumbnail['activity'])
                node = a.__dict__[release]
                if not 'blobs' in node:
                    return True
                if not thumbnail['type'] in node['blobs']:
                    return True

                node['blobs'][thumbnail['type']].remove(str(blobId))
                ActivityFactory.update(a)
        except DbError:
            output.error('cannot access db', 503)
Esempio n. 3
0
    def seen(self, environ, params):
        try:
            a = ActivityFactory.get(params['rid'])
            if not a:
                output.error('not found', 404)

            ActivityFactory.incSeen(a)
            output.success(a.toObject(), 200)
        except Error:
            pass

        return Controller().getResponse(True)
Esempio n. 4
0
    def delete(self, environ, params):
        try:
            a = ActivityFactory.get(params['rid'])
            if not a:
                output.error('not found', 404)

            ActivityFactory.delete(a)
            output.success('Activity deleted', 200)
        except Error:
            pass

        return Controller().getResponse(True)
Esempio n. 5
0
    def unreport(self, environ, params):
        try:
            a = ActivityFactory.get(params['rid'])
            if not a:
                output.error('not found', 404)

            a.isReported = False
            ActivityFactory.update(a)
            output.success(a.toObject(), 200)
        except Error:
            pass

        return Controller().getResponse(True)
Esempio n. 6
0
    def save(self, environ, params):
        try:
            req = Controller().getRequest()
            router = Controller().getRouter()
            a = ActivityFactory.get(params['rid'])
            if not a:
                output.error('activity not found', 404)

            cT = req.headers['Content-Type'] or 'application/octet-stream'

            blobId = BlobFactory.insert(
                'attachments',
                'draft',
                req.body,
                cT,
                activity=params['rid']
            )

            resultUrl = router.getRoute('graph.Blob.fetch', {
                'version': params['version'],
                'bid': str(blobId),
                'release': 'draft'
            })
            output.success({
                'url': resultUrl,
                'blobId': str(blobId)
            }, 201)
        except Error:
            pass

        return Controller().getResponse(True)
Esempio n. 7
0
    def list(self, environ, params):
        try:
            req = Controller().getRequest()
            criteria = {}

            if params['filter'] == 'mine':
                criteria['author.uid'] = Controller().getUid()
            elif params['filter'] == 'reported':
                criteria['isReported'] = True
            elif params['filter'] == 'published':
                criteria['isPublished'] = True

            for key in req.GET:
                criteria[key] = req.GET[key]

            search = ActivityFactory.list(criteria)
            result = []
            for activity in search:
                result.append(activity.toObject())

            output.success(result, 200)
        except Error:
            pass

        return Controller().getResponse(True)
Esempio n. 8
0
    def create(self, environ, params):
        try:
            req = Controller().getRequest()

            if not req.json:
                output.error('invalid json', 400)

            a = Activity()
            a.saveDraft(**req.json)
            a.setAuthor(UserFactory.get(Controller().getUid()))
            a.creationDate = int(time.time())
            ActivityFactory.new(a)
            output.success(a.toObject(), 201)
        except Error:
            pass

        return Controller().getResponse(True)
Esempio n. 9
0
    def publish(self, environ, params):
        try:
            req = Controller().getRequest()
            a = ActivityFactory.get(params['rid'])
            if not a:
                output.error('not found', 404)

            a.publish()
            for (blobType, values) in a.published['blobs'].items():
                for blobId in values:
                    BlobFactory.publish(blobId)

            ActivityFactory.update(a)
            output.success(a.toObject(), 200)
        except Error:
            pass

        return Controller().getResponse(True)
Esempio n. 10
0
    def save(self, environ, params):
        try:
            req = Controller().getRequest()

            if not req.json:
                output.error('invalid json', 400)

            a = ActivityFactory.get(params['rid'])
            if not a:
                output.error('not found', 404)

            a.saveDraft(**req.json)
            ActivityFactory.update(a)
            output.success(a.toObject(), 200)

        except Error:
            pass

        return Controller().getResponse(True)
Esempio n. 11
0
    def fetch(self, environ, params):
        try:
            req = Controller().getRequest()
            a = ActivityFactory.get(params['rid'])
            if not a:
                output.error('not found', 404)
            output.success(a.toObject(), 200)
        except Error:
            pass

        return Controller().getResponse(True)