Example #1
0
 def login(self):  #GET请求时,opt为login时只行该方法
     loginParser = self.parser.copy()
     loginParser.add_argument('name', required=True, help='必须提供用户名')
     loginParser.add_argument('password', required=True, help='必须提供密码')
     args = loginParser.parse_args()  #验证数据
     name = args.get('name')
     password = md5_crypt(args.get('password'))
     user = dao.query(User).filter(
         db.and_(User.name == name, User.password == password,
                 User.is_active == True, User.is_life == True)).first()
     print(user)
     if user:
         user.last_login_time = datetime.datetime.now()
         dao.save(user)
         user_fields = {
             'id': fields.Integer,
             'name': fields.String,
             'phone': fields.String,
             'nickName': fields.String,
             'email': fields.String
         }
         out_fields = {
             'msg': fields.String,
             'token': fields.String,
             'data': fields.Nested(user_fields)
         }
         #如果用户登录成功,session存入{token:userid}
         token = helper.md5_crypt(str(uuid.uuid4()))
         session[token] = user.id
         data = {'msg': '您已登陆成功', 'token': token, 'data': user}
         return marshal(data, out_fields)
     else:
         return {'msg': '用户名或密码错误'}
Example #2
0
 def get(self):
     #  验证用户名是否已经注册
     args = self.parser.parse_args()
     name = args['name']
     qs = dao.query(User).filter(User.name == name)
     if qs.count():
         return {'status': 202, 'msg': name + '用户名被注册'}
     return {'status': 200, 'msg': name + '用户名可以注册'}
Example #3
0
 def reactive(self):
     parser = reqparse.RequestParser()
     parser.add_argument('email', required=True, help='必须提供邮箱')
     args = parser.parse_args()
     email = args.get('email')
     qs = dao.query(User).filter(User.email.__eq__(email))
     if not qs.count():
         return {'status': 661, 'msg': '该邮箱未注册'}
     helper.sendEmail(qs.first())
     return {'msg': '重写申请用户激活成功,请去邮箱查收'}
Example #4
0
 def get(self):
     args = self.parse.parse_args()
     city = args.get('city')
     sort = args.get('sort')
     qs: BaseQuery = dao.query(Cinemas).filter(Cinemas.city == city)
     cinemas2: BaseQuery = qs.order_by(('-' if sort else '') +
                                       args.get('order_by'))
     page = cinemas2.paginate(args.get('page'), args.get('limit'))
     print('当前城市的总影院数', cinemas2.count())
     return {'status': 200, 'msg': "ok", 'data': page.items}
Example #5
0
    def get(self):
        #验证用户名是否已注册
        args=self.parser.parse_args()

        name=args.get('name')
        qs=dao.query(User).filter(User.name==name)
        if qs.count():

            return {'status':202,'msg':name+'用户名已被注册'}

        return {'status': 200, 'msg': name + '用户名注册成功'}
Example #6
0
        def wrapper(*args, **kwargs):
            print('-check login--')
            token = request.args.get('token')
            user_id = session.get(token)
            if not user_id:
                return {'msg': '用户必须先登录'}

            loginUser = dao.getById(User, user_id)
            if loginUser.rights & qx == qx:
                return fun(*args, **kwargs)
            else:
                qxObj = dao.query(Qx).filter(Qx.right == qx).first()
                return {'msg': '用户没有 {} 权限'.format(qxObj.name)}
Example #7
0
        def action(*args, **kwargs):
            #获取用户的token,{token:id},从request中传来的
            token = request.args.get('token')
            u_id = session.get(token)
            if not u_id:
                return {'msg': '请先登录'}
            user: User = dao.getById(User, u_id)
            # 用户要执行什么操作
            opt = dao.query(Qx).filter(Qx.right == caozuo).first()
            # 拿用户的权限和settings中的权限值做&操作
            if not user.reghts & caozuo == caozuo:

                return {'msg': '对不起您不具备{}权限'.format(opt.name)}
            return fn(*args, **kwargs)
Example #8
0
    def reactive(self):
        # 重新申请用户激活
        reactiveParser = self.parser.copy()
        reactiveParser.add_argument('email', required=True, help='必须提供邮箱')
        args = reactiveParser.parse_args()

        email = args.get('email')
        qs = dao.query(User).filter(User.email.__eq__(email))
        if not qs.count():
            return {'status': 700, 'msg': email + '邮箱未被注册'}

        # 重新发送邮箱
        helper.sendEmail(qs.first())

        return {'msg': '重新申请用户激活成功,注意查收邮箱进行激活'}
Example #9
0
    def get(self):
        # 验证请求参数
        args = self.parser.parse_args()
        qs: BaseQuery = dao.query(Movies).filter(
            Movies.flag == args.get('flag'))

        sort = args.get('sort')
        qs: BaseQuery = qs.order_by(('-' if sort == 1 else '') +
                                    args.get('orderby'))

        # 分页
        pager = qs.paginate(args.get('page'), args.get('limit'))

        print('获取的总影片数:', len(qs.all()))
        return {"returnValue": pager.items}
Example #10
0
    def login(self):  # GET请求时,opt为login时
        loginParser = self.parser.copy()
        loginParser.add_argument('name', required=True, help='需提供name')
        loginParser.add_argument('passwd', required=True, help='需提供口令')

        # 验证登录参数
        args = loginParser.parse_args()

        username = args.get('name')
        password = args.get('passwd')

        # 查询用户(额外添加一条件:用户已激活)
        print(username, password)
        qs = dao.query(User).filter(
            User.name.__eq__(username),
            User.password.__eq__(helper.md5_crypt(password)),
            User.is_active == True, User.is_life == True)

        if not qs.count():
            return {'status': 600, 'msg': '用户登录失败,用户名或口令不正确!'}

        u: User = qs.first()
        u.last_login_time = datetime.today()

        dao.save(u)  # 更新用户登录的时间

        token = helper.getToken()
        print('skdjfksdfksdkfh', token)
        session[token] = u.id  # 将token存放session中
        print('++++++++++', session.get(token))

        out_user_fields = {
            'name': fields.String,
            'email': fields.String,
            'phone': fields.String,
            'photo': fields.String(attribute='photo_1')
        }

        out_fields = {
            'msg': fields.String,
            'data': fields.Nested(out_user_fields),
            'access_token': fields.String
        }

        data = {'msg': '登录成功!', 'data': u, 'access_token': token}

        # 通过marshal 将返回的data数据按输出字段转成json字符
        return marshal(data, out_fields)
Example #11
0
 def get(self):
     args = self.parser.parse_args()
     qs: BaseQuery = dao.query(Movies).filter(
         Movies.flag == args.get('flag'))
     sort = args.get('sort')
     #排序
     qs: BaseQuery = qs.order_by(('-' if sort == 1 else '') +
                                 args.get('orderby'))
     #分页
     pager = qs.paginate(args.get('page'), args.get('limit'))
     print('获取的总影片数', len(qs.all()))
     data = {
         'status': 200,
         'msg': '所有电影',
         #pager.items 表示当前页的数据
         'data': pager.items
     }
     return marshal(data, self.out_fields)
Example #12
0
    def reactive(self):
        reactiveParser = self.parser.copy()
        reactiveParser.add_argument('email', required=True, help='邮箱不能空')
        args = reactiveParser.parse_args()
        email = args.get('email')
        qs = dao.query(User).filter(User.email.__eq__(email))
        if not qs.count():

            return {'status': 666, 'msg': email + '邮箱未被注册'}
        print('request.host_url', request.host_url)
        print('request.path', request.path)
        print('request.url', request.url)
        print('request.base_url', request)
        url = request.host_url
        # 重新发送邮件
        tasks.sendMail.delay(qs.first().id, url)
        print(qs.first().id)
        return {'mag': '重新申请用户激活,请查收邮箱'}