Exemplo n.º 1
0
class UserGallery(BaseResource):
    def __init__(self, api=None):
        super().__init__(api=api)
        self.accessor = UserAccessor()

    @requires_auth(allowed_roles='USER')
    @user_ns.expect(paging_parser)
    def get(self, username):
        args = paging_parser.parse_args()
        """Get all gallery items"""
        results = self.accessor.get_paginated_list(username, 'gallery', **args)
        self.page_builder.add_navigation(results, request.base_url, **args)
        return results

    @user_ns.expect(gallery_parser)
    def post(self, username):
        payload = gallery_parser.parse_args()
        mosaic_file = payload.get('mosaic_file')
        mosaic_data = mosaic_file.read()
        mosaic_filename = mosaic_file.filename
        alternate_file = payload.get('alternate_file')
        if alternate_file:
            alternate_data = alternate_file.read()
            alternate_filename = alternate_file.filename
        else:
            alternate_filename = None
            alternate_data = None
        result = self.accessor.create_gallery_item(
            username,
            image_data=mosaic_data,
            filename=mosaic_filename,
            gif_data=alternate_data,
            gif_filename=alternate_filename)
        return result
Exemplo n.º 2
0
class UserUploadItem(BaseResource):
    def __init__(self, api=None):
        super().__init__(api=api)
        self.accessor = UserAccessor()

    @requires_auth(allowed_roles='USER')
    def get(self, username, file_id):
        upload_item = self.accessor.get_upload_item(file_id, username=username)
        return upload_item

    @requires_auth(allowed_roles='USER')
    def delete(self, username, file_id):
        self.accessor.delete_upload_item(file_id, username)
        return {'message': f'{file_id} deleted from  {username}'}
Exemplo n.º 3
0
class UserGalleryItem(BaseResource):
    def __init__(self, api=None):
        super().__init__(api=api)
        self.accessor = UserAccessor()

    @requires_auth(allowed_roles='USER')
    def get(self, username, gallery_id):
        gallery_item = self.accessor.get_gallery_item(gallery_id,
                                                      username=username)
        return gallery_item

    @requires_auth(allowed_roles='USER')
    def delete(self, username, gallery_id):
        self.accessor.delete_gallery_item(gallery_id, username)
        return {'message': f'{gallery_id} deleted from  {username}'}
Exemplo n.º 4
0
class Registration(BaseResource):
    def __init__(self, api=None):
        super().__init__(api=api)
        self.accessor = UserAccessor()

    @base_ns.expect(registration_model)
    def post(self):
        payload = base_ns.payload
        exclude_emails = Environment().exlude_emails
        exclude_emails = exclude_emails if exclude_emails else []
        try:
            user = self.accessor.create_user(**payload)
            mail = MailAccessor()
            info = {
                'username': user.get('username'),
                'expireAt': (time.time() + 10800) * 1000
            }
            token = str(base64.b64encode(json.dumps(info).encode()))[2:-1]
            html = f'''
            <b>HELLO {user.get("username")}!</b>
            <p>Follow this link to verify your account</p>
            <p>The link will expire in 3 hours</p>
            <a href="{Environment().front_end_url}/validate?token={token}">Validate</a>
            '''
            if user.get('email') not in exclude_emails:
                mail.send_mail(user.get('email'),
                               html,
                               subject='New Photomosaic User')
            mail.quit()
        except Exception as e:
            self.logger.exception(str(e))
            return {'message': str(e)}, 401
        return {'message': f'registered {user.get("username")}'}, 200
Exemplo n.º 5
0
class UserUploads(BaseResource):
    def __init__(self, api=None):
        super().__init__(api=api)
        self.accessor = UserAccessor()

    @requires_auth(allowed_roles='USER')
    @user_ns.doc(parser=upload_parser)
    def post(self, username):
        payload = upload_parser.parse_args()
        if 'file' not in payload:
            return {'message': 'A file is required!'}, 400
        upload_item = self.accessor.upload_file(username, payload['file'])
        return upload_item, 201

    @requires_auth(allowed_roles='USER')
    @user_ns.doc(model=post_response)
    def get(self, username):
        return self.accessor.get_list(username, 'uploads')
Exemplo n.º 6
0
 def get(self):
     def health_string(val):
         return 'SUCCESS' if val else 'FAILURE'
     health_check = {
         'photomosaic_api': health_string(self.faas_health()),
         's3_connection': health_string(S3Accessor().health()),
         'mongo_connection': health_string(UserAccessor().health())
     }
     code = 500 if 'FAILURE' in health_check.values() else 200
     return health_check, code
Exemplo n.º 7
0
 def __init__(self, api=None):
     super().__init__(api=api)
     self.accessor = UserAccessor()