Esempio n. 1
0
 def decorator(*args, **kwargs):
     length = {
         'username': lambda value: 4 <= len(value) <= 20,
         'password': lambda value: 4 <= len(value) <= 20,
     }
     babel = {
         'username': _("Username"),
         'password': _("Password"),
         'email': _("Email"),
         'captcha': _("Captcha")
     }
     keys.append('captcha')
     post_data = request.json
     for key in keys:
         if not post_data.get(key):
             msg = _('The %(key)s is required', key=babel[key])
             return HTTP.BAD_REQUEST(message=msg)
         if not length.get(key, lambda value: True)(post_data[key]):
             msg = _(
                 "The %(key)s's length must be between 4 to 20 characters",
                 key=babel[key])
             return HTTP.BAD_REQUEST(message=msg)
     captcha = post_data['captcha']
     if captcha.lower() != session.pop('captcha', '00000').lower():
         msg = _('The captcha is error')
         return HTTP.BAD_REQUEST(message=msg)
     return func(*args, **kwargs)
Esempio n. 2
0
 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})
Esempio n. 3
0
 def get(self):
     query_dict = request.data
     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)
     if query_dict.pop('from', None) == 'blog':
         return HTTP.HTML('timeline/macro.html', timelines=timelines)
     return HTTP.HTML('timeline/itemlist.html', timelines=timelines)
Esempio n. 4
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")
Esempio n. 5
0
 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)
Esempio n. 6
0
    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()
Esempio n. 7
0
    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)
Esempio n. 8
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='用户名或密码错误')
Esempio n. 9
0
 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()
Esempio n. 10
0
    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)
Esempio n. 11
0
 def get(self):
     page, number = self.pageinfo
     params = {'is_hidden': False}
     order_by = ('-created_at', )
     timelines = TimeLine.query.filter_by(**params).order_by(
         *order_by).paginate(page, number)
     return HTTP.HTML('timelines.html', timelines=timelines)
Esempio n. 12
0
 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)
Esempio n. 13
0
 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)
Esempio n. 14
0
 def abort(self, key, value, message):
     if self._abort is not None:
         if callable(self._abort):
             return self._abort(key, value, message)
         return self._abort
     if not message:
         message = "{0} params error".format(key)
     return flask_abort(HTTP.BAD_REQUEST(message=message))
Esempio n. 15
0
 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)
Esempio n. 16
0
 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)
Esempio n. 17
0
    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)
Esempio n. 18
0
 def decorator(*args, **kwargs):
     if req is not None:
         request_data = req
     else:
         request_data = request.data
     for key in keys:
         if not request_data.get(key):
             return HTTP.BAD_REQUEST(message='{0} required'.format(key))
     return func(*args, **kwargs)
Esempio n. 19
0
    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)
Esempio n. 20
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)
Esempio n. 21
0
 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)
Esempio n. 22
0
    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)
Esempio n. 23
0
 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)
Esempio n. 24
0
 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)
Esempio n. 25
0
    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)
Esempio n. 26
0
 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)
Esempio n. 27
0
    def get(self):
        request_data = request.data
        page, number = self.pageinfo
        kwargs = filter_maybe(
            request_data, {
                "tag": "tags__name",
                "category": "category__name",
                "title": "title__contains",
                "year": "created_at__year",
                "month": "created_at__month"
            })
        order_by = ("-created_at", )

        ins = Blog.query.filter_by(**kwargs).order_by(*order_by).paginate(
            page, number)
        return HTTP.HTML('blog/itemlist.html', blogs=ins)
Esempio n. 28
0
    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)
Esempio n. 29
0
    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)
        return HTTP.HTML('articles.html', articles=ins)
Esempio n. 30
0
 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)