コード例 #1
0
ファイル: views.py プロジェクト: guhongyeying/flask-maple
 def delete(self, pk):
     ins = self._self.model.query.filter_by(**{
         self._self.pk: pk
     }).get_or_404()
     serializer = self._self.serializer(ins)
     ins.delete()
     return HTTP.OK(data=serializer.data)
コード例 #2
0
ファイル: views.py プロジェクト: guhongyeying/flask-maple
    def post(self):
        post_data = request.data
        nullable_columns = self._self.column.nullable_columns
        unique_columns = self._self.column.unique_columns
        notnullable_columns = self._self.column.notnullable_columns
        for column in notnullable_columns:
            if column.name not in post_data:
                return jsonify(msg='{} is required'.format(column.name))

        for column in unique_columns:
            name = column.name
            if self._self.model.query.filter_by(**{
                    name: post_data.get(name)
            }).exists():
                return jsonify(msg='{} is exists'.format(name))

        params = {
            column.name: post_data.get(column.name)
            for column in notnullable_columns
        }
        params.update(
            **{
                column.name: post_data.get(column.name)
                for column in nullable_columns if column.name in post_data
            })

        instance = self._self.model(**params)
        self._set_releation_columns(instance, post_data)
        instance.save()
        serializer = self._self.serializer(instance)
        return HTTP.OK(data=serializer.data)
コード例 #3
0
ファイル: router.py プロジェクト: vergilcj/maple-file
 def get(self, pk):
     '''
     显示图片
     '''
     user = request.user
     image = Image.query.filter_by(id=pk, user=user).get_or_404('图片不存在')
     serializer = ImageSerializer(image)
     return HTTP.OK(data=serializer.data)
コード例 #4
0
ファイル: router.py プロジェクト: vergilcj/maple-file
 def get(self, pk):
     '''
     获取具体相册
     '''
     user = request.user
     album = Album.query.filter_by(id=pk, user=user).get_or_404('相册不存在')
     serializer = AlbumSerializer(album)
     return HTTP.OK(data=serializer.data)
コード例 #5
0
ファイル: bucket.py プロジェクト: imfht/flaskapps
    def get(self):
        data = request.data
        user = request.user
        page, number = self.pageinfo

        params = filter_maybe(data, {"name": "name__contains"})
        ins = user.buckets.filter_by(**params).paginate(page, number)
        serializer = BucketSerializer(ins)
        return HTTP.OK(data=serializer.data)
コード例 #6
0
ファイル: filepath.py プロジェクト: imfht/flaskapps
    def post(self, bucket):
        user = request.user
        bucket = user.buckets.filter_by(
            name=bucket).get_or_404("bucket not found")

        path = request.data["path"]
        filepath = bucket.get_root_path(path, True)
        serializer = FilePathSerializer(filepath)
        return HTTP.OK(data=serializer.data)
コード例 #7
0
ファイル: api.py プロジェクト: imfht/flaskapps
 def get(self):
     data = request.data
     page, number = self.pageinfo
     params = filter_maybe(data, {"username": "******"})
     ins = User.query.filter_by(**params).paginate(page, number, False)
     rep = Serializer(
         ins,
         exclude=["articles", "buckets", "timelines"],
     ).data
     return HTTP.OK(data=rep, pageinfo=ins.pages)
コード例 #8
0
ファイル: bucket.py プロジェクト: imfht/flaskapps
    def put(self, pk):
        user = request.user
        data = request.data

        ins = user.buckets.filter_by(id=pk).get_or_404("bucket not found")
        ins = update_maybe(ins, data, ["name", "description"])
        ins.save()

        rep = BucketSerializer(ins).data
        return HTTP.OK(data=rep)
コード例 #9
0
 def get(self):
     page, number = self.pageinfo
     filter_dict = {'is_hidden': False}
     order_by = ('-created_at', )
     timelines = TimeLine.query.filter_by(**filter_dict).order_by(
         *order_by).paginate(page, number)
     serializer = Serializer(timelines,
                             exclude=['user', 'user_id', 'is_hidden'],
                             extra=['datetime_format'])
     return HTTP.OK(data=serializer.data)
コード例 #10
0
ファイル: api.py プロジェクト: imfht/flaskapps
 def post(self):
     data = request.data
     username = data['username']
     password = data['password']
     remember = data.pop('remember', True)
     user = User.query.filter_by(username=username).first()
     if not user or not user.check_password(password):
         return HTTP.BAD_REQUEST(message=_('Username or Password Error'))
     user.login(remember)
     return HTTP.OK(data={"username": user.username, "token": user.token})
コード例 #11
0
 def post(self):
     request_data = request.data
     password = request_data.pop('password', '')
     content = request_data.pop('content', '')
     if not password or not content:
         return HTTP.BAD_REQUEST(message="params required.")
     ec = Encrypt(password, current_app.config['SECRET_KEY_SALT'])
     try:
         return HTTP.OK(data=ec.decrypt(content))
     except InvalidToken:
         return HTTP.BAD_REQUEST(message="password is not correct")
コード例 #12
0
ファイル: views.py プロジェクト: guhongyeying/flask-maple
 def get(self):
     _self = self._self
     query_dict = request.data
     page, number = self.pageinfo
     filter_params = _self.get_filter_params(query_dict)
     orderby_params = _self.get_orderby_params(query_dict)
     instances = _self.get_instances(filter_params, orderby_params, page,
                                     number)
     serializer = _self.serializer(instances)
     pageinfo = PageInfo(instances).as_dict()
     return HTTP.OK(data=serializer.data, pageinfo=pageinfo)
コード例 #13
0
ファイル: article.py プロジェクト: imfht/flaskapps
    def post(self):
        data = request.data
        user = request.user

        ins = Article(
            title=data["title"],
            content=data["content"],
            user_id=user.id,
        )
        ins.save()
        serializer = ArticleSerializer(ins)
        return HTTP.OK(data=serializer.data)
コード例 #14
0
ファイル: filepath.py プロジェクト: imfht/flaskapps
    def put(self, bucket):
        data = request.data
        user = request.user
        bucket = user.buckets.filter_by(
            name=bucket).get_or_404("bucket not found")

        path = data["path"]
        filepath = bucket.get_root_path(path)
        if not filepath or filepath.is_root_path:
            msg = "{0} path not found"
            return HTTP.BAD_REQUEST(message=msg)

        action = data.get("action", "rename")
        if action not in ["rename", "move", "copy"]:
            return HTTP.BAD_REQUEST()

        if action == "rename":
            newname = data.get("newname")
            if not newname or newname == filepath.name:
                return HTTP.OK(message="filepath not change")
            serializer = FilePathSerializer(filepath.rename(newname))
            return HTTP.OK(data=serializer.data)

        newpath = data.get("newpath")
        if not newpath:
            return HTTP.BAD_REQUEST(message="newpath is required")

        newfilepath = bucket.get_root_path(newpath)
        if not newfilepath:
            msg = "{0} path not found"
            return HTTP.BAD_REQUEST(message=msg)

        if action == "move":
            nfilepath = filepath.move(newfilepath)
        else:
            nfilepath = filepath.copy(newfilepath)

        serializer = FilePathSerializer(nfilepath)
        return HTTP.OK(data=serializer.data)
コード例 #15
0
ファイル: views.py プロジェクト: guhongyeying/flask-maple
 def post(self):
     post_data = request.json
     username = post_data['username']
     password = post_data['password']
     remember = post_data.pop('remember', True)
     user = User.query.filter_by(username=username).first()
     if not user or not user.check_password(password):
         msg = _('Username or Password Error')
         return HTTP.BAD_REQUEST(message=msg)
     user.login(remember)
     serializer = user.serializer() if hasattr(
         user, 'serializer') else Serializer(user, depth=1)
     return HTTP.OK(data=serializer.data)
コード例 #16
0
ファイル: filepath.py プロジェクト: imfht/flaskapps
    def delete(self, bucket):
        data = request.data
        user = request.user
        bucket = user.buckets.filter_by(
            name=bucket).get_or_404("bucket not found")

        path = data["path"]
        filepath = bucket.get_root_path(path)
        if not filepath:
            msg = "{0} path not found"
            return HTTP.BAD_REQUEST(message=msg)
        filepath.delete()
        return HTTP.OK()
コード例 #17
0
ファイル: bucket.py プロジェクト: imfht/flaskapps
    def post(self):
        data = request.data
        name = data.get('name')
        description = data.get('description')
        if Bucket.query.filter_by(name=name).exists():
            return HTTP.BAD_REQUEST(message="bucket is exists")

        bucket = Bucket(name=name)
        if description:
            bucket.description = description
        bucket.save()

        rep = BucketSerializer(bucket).data
        return HTTP.OK(data=rep)
コード例 #18
0
ファイル: router.py プロジェクト: vergilcj/maple-file
 def get(self):
     '''
     获取相册列表
     '''
     query_dict = request.data
     user = request.user
     page, number = self.page_info
     keys = ['name', 'description']
     order_by = gen_order_by(query_dict, keys)
     filter_dict = gen_filter_dict(query_dict, keys, user=user)
     albums = Album.query.filter_by(
         **filter_dict).order_by(*order_by).paginate(page, number)
     serializer = AlbumSerializer(albums.items, True)
     pageinfo = PageInfo(albums)
     return HTTP.OK(data=serializer.data, pageinfo=pageinfo)
コード例 #19
0
ファイル: views.py プロジェクト: guhongyeying/flask-maple
 def post(self):
     post_data = request.json
     email = post_data['email']
     user = User.query.filter_by(email=email).first()
     if not user:
         msg = _('The email is error')
         return HTTP.BAD_REQUEST(message=msg)
     password = ''.join(sample(ascii_letters + digits, 8))
     user.set_password(password)
     user.save()
     self.send_email(user, password)
     flash(
         _('An email has been sent to you.'
           'Please receive and update your password in time'))
     return HTTP.OK()
コード例 #20
0
 def post(self):
     '''
     登陆
     '''
     post_data = request.data
     username = post_data.pop('username', None)
     password = post_data.pop('password', None)
     remember = post_data.pop('remember', True)
     if username and password:
         user = User.query.filter_by(username=username).first()
         if user and user.check_password(password):
             user.login(remember)
             serializer = UserSerializer(user)
             return HTTP.OK(data=serializer.data)
     return HTTP.UNAUTHORIZED(message='用户名或密码错误')
コード例 #21
0
ファイル: filepath.py プロジェクト: imfht/flaskapps
    def get(self, bucket):
        data = request.data
        user = request.user
        page, number = self.pageinfo

        bucket = user.buckets.filter_by(
            name=bucket).get_or_404("bucket not found")
        path = request.data.get("path", "/")

        params = filter_maybe(data, {
            "name": "name__contains",
        })
        rootpath = bucket.get_root_path(path)
        paths = rootpath.child_paths.filter_by(**params).paginate(page, number)
        serializer = FilePathSerializer(paths)
        return HTTP.OK(data=serializer.data)
コード例 #22
0
ファイル: router.py プロジェクト: vergilcj/maple-file
 def post(self):
     '''
     新建相册
     '''
     post_data = request.data
     user = request.user
     name = post_data.pop('name', None)
     description = post_data.pop('description', None)
     if name is None:
         return HTTP.BAD_REQUEST(message='相册名称不能为空')
     album = Album(name=name, user=user)
     if description is not None:
         album.description = description
     album.save()
     serializer = AlbumSerializer(album)
     return HTTP.OK(data=serializer.data)
コード例 #23
0
ファイル: router.py プロジェクト: vergilcj/maple-file
 def put(self, pk):
     '''
     修改图片信息
     '''
     post_data = request.data
     user = request.user
     name = post_data.pop('name', None)
     description = post_data.pop('description', None)
     image = Image.query.filter_by(id=pk, user=user).get_or_404('图片不存在')
     if name is not None:
         image.name = name
         image.url = os.path.join(image.path, name)
     if description is not None:
         image.description = description
     image.save()
     serializer = ImageSerializer(image)
     return HTTP.OK(data=serializer.data)
コード例 #24
0
ファイル: router.py プロジェクト: vergilcj/maple-file
 def put(self, pk):
     '''
     修改相册
     '''
     post_data = request.data
     user = request.user
     name = post_data.pop('name', None)
     description = post_data.pop('description', None)
     album = Album.query.filter_by(id=pk, user=user).get_or_404('相册不存在')
     if name is not None:
         album.name = name
     if description is not None:
         album.description = description
     album.save()
     serializer = AlbumSerializer(album)
     album.delete()
     return HTTP.OK(data=serializer.data)
コード例 #25
0
ファイル: article.py プロジェクト: imfht/flaskapps
    def get(self):
        data = request.data
        page, number = self.pageinfo
        params = filter_maybe(
            data, {
                "tag": "tags__name",
                "category": "category__name",
                "title": "title__contains",
                "year": "created_at__year",
                "month": "created_at__month"
            })
        order_by = ("-created_at", )

        ins = Article.query.filter_by(**params).order_by(*order_by).paginate(
            page, number)
        serializer = ArticleSerializer(ins)
        return HTTP.OK(data=serializer.data)
コード例 #26
0
ファイル: router.py プロジェクト: vergilcj/maple-file
 def get(self):
     '''
     获取图片列表
     '''
     query_dict = request.data
     user = request.user
     page, number = self.page_info
     keys = ['name', 'description']
     order_by = gen_order_by(query_dict, keys)
     filter_dict = gen_filter_dict(query_dict, keys, user=user)
     album = query_dict.pop('album', None)
     if album is not None:
         filter_dict.update(album__id=album)
     images = Image.query.filter_by(
         **filter_dict).order_by(*order_by).paginate(page, number)
     serializer = ImageSerializer(images.items, True)
     pageinfo = PageInfo(images)
     return HTTP.OK(data=serializer.data, pageinfo=pageinfo)
コード例 #27
0
 def wrapper(*args, **kwargs):
     form = form_class()
     if form.validate_on_submit():
         return func(*args, **kwargs)
     elif form.errors:
         if f is not None:
             if callable(f):
                 flash(f())
             elif f == '':
                 flash_errors(form)
             else:
                 flash(f)
         if error is not None:
             return error()
         return return_errors(form)
     if success is not None:
         return success()
     return HTTP.OK()
コード例 #28
0
ファイル: router.py プロジェクト: vergilcj/maple-file
 def delete(self, pk):
     '''
     删除图片
     '''
     user = request.user
     image = Image.query.filter_by(id=pk, user=user).get_or_404('图片不存在')
     serializer = ImageSerializer(image)
     img_path = os.path.join(current_app.config['UPLOAD_FOLDER_ROOT'],
                             image.url)
     # 删除原图
     if os.path.exists(img_path):
         os.remove(img_path)
     # 删除缩略图
     thumb_path = os.path.join(current_app.config['UPLOAD_FOLDER_ROOT'],
                               image.url.replace('photo', 'thumb'))
     if os.path.exists(thumb_path):
         os.remove(thumb_path)
     image.delete()
     return HTTP.OK(data=serializer.data)
コード例 #29
0
ファイル: views.py プロジェクト: guhongyeying/flask-maple
 def post(self):
     post_data = request.json
     username = post_data['username']
     password = post_data['password']
     email = post_data['email']
     if User.query.filter_by(email=email).exists():
         msg = _('The email has been registered')
         return HTTP.BAD_REQUEST(message=msg)
     if User.query.filter_by(username=username).exists():
         msg = _('The username has been registered')
         return HTTP.BAD_REQUEST(message=msg)
     user = User(username=username, email=email)
     user.set_password(password)
     user.save()
     user.login(True)
     self.send_email(user)
     flash(_('An email has been sent to your.Please receive'))
     serializer = user.serializer() if hasattr(
         user, 'serializer') else Serializer(user, depth=1)
     return HTTP.OK(data=serializer.data)
コード例 #30
0
ファイル: views.py プロジェクト: guhongyeying/flask-maple
 def put(self, pk):
     post_data = request.data
     ins = self._self.model.query.filter_by(**{
         self._self.pk: pk
     }).get_or_404()
     needed_columns = set(self._self.column.columns) ^ set(
         self._self.column.primary_columns) ^ set(
             self._self.column.foreign_keys)
     datetime_columns = self._self.column.datetime_columns
     for column in needed_columns:
         param = post_data.pop(column.name, None)
         if param is not None:
             setattr(
                 ins, column.name,
                 datetime.strptime(param, '%Y-%m-%d %H:%M:%S')
                 if column in datetime_columns else param)
     self._set_releation_columns(ins, post_data)
     ins.save()
     serializer = self._self.serializer(ins)
     return HTTP.OK(data=serializer.data)