class UserListView(View): service = UserService decorators = [admin_required(), login_required("user")] async def get(self, request, user): service = self.service() result = await service.find_users({}) return self.success(result)
class UserLogoutView(View): decorators = [login_required("user")] service = UserService async def post(self, request, user): service = self.service() await service.logout(user) return self.success("成功")
class ProjectDetailView(view.View): service = ProjectService decorators = [login_required("user")] async def get(self, request, user, pk): service = self.service() state, result = await service.get_project(pk) if state: return self.success(result) return self.fail(result)
class DeleteUserView(View): service = UserService decorators = [admin_required(), login_required("user")] async def post(self, request, user_id, user): service = self.service() try: await service.delete_user(user_id) return self.success("成功") except Exception as e: return self.fail("删除出现错误")
class CurrentUserView(View): decorators = [login_required("user")] async def get(self, request, user): result = { "id": str(user.id), "name": user.name, "username": user.username, "is_admin": user.is_admin, "scope": ["user"] } if user.is_admin: result['scope'].append("admin") return self.success(result)
class ProjectListView(view.View): service = ProjectService search_fields = ('name', 'key') decorators = [login_required("user")] async def get(self, request, user): service = self.service() # 筛选条件 search_filters = self.get_serach(request) filter = {"$or": [{'delete': False}, {'delete': None}]} if request.raw_args.get('me') == "true": filter['owner'] = str(user.id) filter = {'$and': [filter, search_filters]} result = await service.find_all_project(request, filter=filter) return self.success(result)
class CreateUserView(View): service = UserService form = UserForm decorators = [admin_required(), login_required("user")] async def post(self, request, user): form = self.form(data=request.json) if form.validate(): service = self.service() try: new_user = await service.create_user(form) return self.success(new_user) except ModelUniqueException as e: logger.error(f"ModelUniqueException: 用户名必须唯一,{e}") return self.fail("用户名必须唯一") return self.fail(form.errors)