def admin_required(cls): admin_id = get_jwt_identity() if AdminModel.objects(id=admin_id).first() is None: abort(403) return admin_id
def post(self): """ 관리자 양식장 정보 작성 """ payload = request.json farm_name = payload['farm_name'] farm_phone_num = payload['farm_phone_num'] farm_address = payload['farm_address'] details = payload['details'] rooms = payload['rooms'] admin = AdminModel.objects(id=get_jwt_identity()).first() minifarms = [MiniFarmModel(**data, admin=admin) for data in rooms] try: FarmModel(farm_name=farm_name, admin=admin, farm_phone_number=farm_phone_num, farm_address=farm_address, farm_details=details, mini_farms=minifarms).save() except TypeError: abort(406) return '', 201
def validate_adminId(self, value): try: adminId = ObjectId(value.data) except: raise ValueError('检验管理员信息失败') admin = AdminModel.objects(id=adminId).first() if not admin: raise ValueError('检验管理员信息失败')
def validate_password(self, value): account = self.account.data password = value.data admin = AdminModel.objects(account=account).first() if not admin: raise FormValidateError(msg='用户名不存在') if check_password_hash(admin['password'], password) == False: raise FormValidateError(msg='密码不正确') self.userInfo = { "id": str(admin['id']), 'name': admin['name'], "is_admin": True }
def get(self): """ 관리자 양식장 정보 조회 """ admin = AdminModel.objects(id=get_jwt_identity()).first() farm = FarmModel.objects(farm_hostname=admin.name).first() return self.unicode_safe_json_dumps( [{ 'room_cost': data.farm_cost, 'room_fish_max': data.farm_fish_max, 'room_number': data.farm_number, 'room_temperature': data.temperature } for data in farm.mini_farms], 200) if admin or farm else abort(406)
def get(self): """ 유저가 보낸 신청을 불러오는 API """ farm = FarmModel.objects(admin=AdminModel.objects(id=get_jwt_identity()).first()).first() apply = ApplyModel.objects(farm=farm).all() return self.unicode_safe_json_dumps([{ 'farm_name': apply.farm.farm_name, 'user_phone_number': apply.user.phone_number, 'applyDate': apply.applyDate, 'message': apply.message, 'roominfo': [{ 'itemNum': apply.roominfo.itemNum, 'itemName': apply.roominfo.itemName, 'money': apply.money }] } for apply in apply], 200)
def post(self): """ 관리자 로그인 """ payload = request.json admin_id = payload['id'] admin_pw = payload['pw'] admin = AdminModel.objects(id=admin_id).first() if admin is None: abort(406) return { 'access_token': create_access_token(identity=admin_id), 'refresh_token': create_refresh_token(identity=admin_id) }, 200 if check_password_hash(admin.pw, admin_pw) else abort(406)
def post(self, num): """ 관리자 내 양식장 상황 작성 """ payload = request.json admin = AdminModel.objects(id=get_jwt_identity()).first() farm = FarmModel.objects(farm_hostname=admin.name).first() mini_farm = farm.mini_farms[num - 1] mini_farm.update( temperature=payload['temperature'], farm_cost=payload['cost'], fish_kind=payload['fish_kind'], # payload['fish_kind'] = [{ # 'kind': 'String' # 'amount': 'Int' # } details=payload['details']).save() return '', 201
def post(self): """ 관리자 회원가입 """ admin_id = request.json['id'] admin_pw = request.json['pw'] admin_name = request.json['name'] admin_phone_number = request.json['phone_number'] if AdminModel.objects(id=admin_id).first(): abort(409) admin_hashed_pw = generate_password_hash(admin_pw) AdminModel( id=admin_id, pw=admin_hashed_pw, name=admin_name, phone_number=admin_phone_number ).save() return '', 201
def get(self, num): admin = AdminModel.objects(id=get_jwt_identity()).first() apply = ApplyModel.objects(farm=FarmModel.objects( admin=admin).first()).first() minifarm = apply.farm.mini_farms[num - 1] return self.unicode_safe_json_dumps({ 'name': apply.user.name, 'phone_number': apply.user.phone_number, 'period': apply.period, 'temperature': minifarm.temperature, 'farm_cost': minifarm.farm_cost, 'fish_kind': [{ 'kind': data.kind, 'amount': data.amount } for data in minifarm.fish_kind], 'details': minifarm.details })