class SetDefault(jrlib.Method): user_id = jf.Int() age = jf.Int(required=True) gender = jf.Str(default="g") user_profile = UserProfile() address = jf.Obj( fields=dict( city=jf.Str(required=True), street=jf.Str(default="ul"), house=jf.Str(default=get_house), ), default=get_address, ) # TODO: support this way for get default value def default_user_id(self): print("UUUUU") return 100 def execute(self): return { "user_id": self.user_id, "age": self.age, "gender": self.gender, "user_profile": { "first_name": self.user_profile.first_name, "last_name": self.user_profile.last_name, "middle_name": self.user_profile.middle_name, }, "address": { "city": self.address.city, "street": self.address.street, "house": self.address.house, }, }
class SetObjField(jrlib.Method): user_id = jf.Int(required=True) user_profile = UserProfile() def validate(self): # print(self.user_profile) if self.user_id == 333: raise ValueError("error 333!!!!") def execute(self): # return {'user_id': self.user_id, # 'profile': self.user_profile} print("sss") print(self.user_profile.first_name) print(self.user_profile.last_name) print("eee") return { "user_id": self.user_id, "user_profile": { # 'first_name': self.user_profile.first_name, "last_name": self.user_profile.last_name, "value": self.user_profile.value, "required": self.user_profile.required, }, }
class BaseContact(jrlib.Method): user_id = jf.Int(validators=[valid_user_ids]) comment = jf.Str() def validate(self): super(BaseContact, self).validate() if not self.comment or len(self.comment) != self.user_id: raise ValueError("Error comment lenght")
class SetAnyType(jrlib.Method): user_id = jf.Int(required=True) any_data = jf.Field() def execute(self): return { "user_id": str(type(self.user_id)), "any_data": str(type(self.any_data)), }
class SetObjFieldRequired(jrlib.Method): user_id = jf.Int(required=True) # user_profile = UserProfile(required=True) user_profile = UserProfile() def execute(self): return { "user_id": self.user_id, }
class SubUserProfile(jf.Obj): class SubSub(jf.Obj): class PhoneField(jf.Str): def validate(self): if self.value and len(self.value) < 3: raise ValueError( "Phone is too short, required 3 or more symbols") email = jf.Str() phone = PhoneField() address = jf.Str(required=True) def validate(self): if not (self.email or self.phone): raise ValueError("Required email or phone") age = jf.Int() gender = jf.Int(required=True) card = SubSub(required=True)
class Format(jrlib.Method): user_id = jf.Int() age = jf.Float() gender = jf.Str(nullable=False) email = jf.Email(nullable=False) user_profile = UserProfile() def execute(self): return { "user_id": self.user_id, "age": self.age, "gender": self.gender, "email": self.email, "user_profile": { "first_name": self.user_profile.first_name, "last_name": self.user_profile.last_name, }, }
class SetObjFieldInner(jrlib.Method): user_id = jf.Int(required=True) user_profile = UserProfile(required=True) def execute(self): print("sss") print(self.user_profile.first_name) print(self.user_profile.last_name) print("eee") print(self.user_profile.sub.age) print("eee sub") return { "user_id": self.user_id, "user_profile": { "first_name": self.user_profile.first_name, "last_name": self.user_profile.last_name, "value": self.user_profile.value, "required": self.user_profile.required, }, }
class SetObjFieldInheritance(jrlib.Method): user_id = jf.Int(required=True) user_profile = UserProfile() def execute(self): print('exec') print(isinstance(self.user_profile, jf.BaseField)) print("sss") print(self.user_profile.first_name) print(self.user_profile.last_name) print("eee") return { "user_id": self.user_id, "user_profile": { "first_name": self.user_profile.first_name, "last_name": self.user_profile.last_name, "value": self.user_profile.value, "required": self.user_profile.required, }, }
class UseUndef(jrlib.Method): user_id = jf.Int() user_profile = UserProfile() def execute(self): print("execute") print("user_id") print(self.user_id) print("user_profile") print(self.user_profile) print("user_profile.first_name") print(self.user_profile.first_name) print("user_profile.sub") print(self.user_profile.sub) print("user_profile.sub.age") print(self.user_profile.sub.age) print("/execute") return { "user_id": self.user_id, "first_name": self.user_profile.first_name, }
class Order( BigOrderMiddle, MinusBigOrderMiddle, FirstOrderMiddle, Auth, CarMiddle1, Last1Middle, CarMiddle2, PassengerMiddle, Middle1WoutOrder, Last2Middle, Middle2WoutOrder, First1Middle, First2Middle, ): msg = jf.Str(required=True) city = jf.Str(required=True, order=50) car = CarField(order=40) passenger = jf.Obj(fields=dict(name=jf.Str(order=400), age=jf.Int(order=300)), order=20) about = jf.Str() def execute(self): return self.msg def validate_msg(self, value): print("ext validator (msg) -") def validate_about(self, value): print("ext validator (about) -") def validate_city(self, value): print("ext validator (city) 5") def validate_car(self, value): print("ext validator (car) 4") def validate_passenger(self, value): print("ext validator (passenger) 2")
class SetObjFieldInline(jrlib.Method): user_id = jf.Int(required=True) user_profile = UserProfile() address = jf.Obj( fields=dict(city=jf.Str(required=True), street=jf.Str()), required=False, ) def execute(self): print("sss") print(self.user_profile.first_name) print(self.user_profile.last_name) print("eee") return { "user_id": self.user_id, "user_profile": { "first_name": self.user_profile.first_name, "last_name": self.user_profile.last_name, "city": self.address.city, "street": self.address.street, }, }
class SubUserProfile(jf.Obj): age = jf.Int()