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 UserProfile(jf.Obj): first_name = jf.Str(required=True) last_name = jf.Str() def validate(self): print("UUUUUUUUUUUUU") print(self.first_name) print(self.last_name)
class Auth(jrlib.Method): username = jf.Str() password = jf.Str() def __middle(self): print("mm") token = self.request.META.get("HTTP_X_AUTHENTICATION") if not token and not (self.username == "u" and self.password == "p"): raise ValueError("Access denied")
class UserProfile(jf.Obj): first_name = jf.Str(default=None) last_name = LastName(default="l n") middle_name = jf.Str() # TODO: support this way for get default value def default_middle_name(self): print("MMMMMk") return "mid mid"
class LoginUser(jrlib.Method): username = jf.Str(required=True, nullable=False) password = jf.Str(required=True, nullable=False) def execute(self): user = USERS.get(self.username) is_success = False if user: is_success = user.get("password") == self.password self.response.set_cookie("is_auth", is_success) return {"login_success": is_success}
class StrParams(jrlib.Method): country = jf.Str() city = jf.Str(strip=False) street = jf.Str(min_lenght=2, max_lenght=10) house = jf.Str(cut=3) def execute(self): return { "country": self.country, "city": self.city, "street": self.street, "house": self.house, }
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")
class Blank(jrlib.Method): name = jf.Str() gender = jf.Str(required=True, blank=False) email = jf.Email(blank=False) data = jf.Dict(blank=False) cities = jf.List(blank=False) profile_1 = jf.Obj(fields=dict(f1=jf.Str()), blank=False) profile_2 = Pr_2(blank=False) def execute(self): return { "name": self.name, "gender": self.gender, "email": self.email, }
class CacheTestObjField(jf.Obj): test_obj_inner = jf.Str(default=1) def validate(self): super(CacheTestObjField, self).validate() print("2 validator CacheTestObjField") print(self.method_cache)
class AuthCheck(jrlib.Method): auth = jf.Obj( fields=dict( username=jf.Str(required=True, nullable=False), password=jf.Str(required=True, nullable=False), ), required=True, nullable=False, order=-100, ) @jrlib.order(-100) def __middle(self): user = USERS.get(self.auth.username) if not user or (user and user.get("password") != self.auth.password): raise ValueError("Access denied") self.method_cache["auth_user"] = user
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 UserProfile(jf.Obj): first_name = jf.Str() last_name = StripStr() def format(self): if "middle_name" in self.value and "first_name" in self.value: self.value["first_name"] = "{} {}".format( self.value["first_name"], self.value["middle_name"] ) return self.value
class AuthCheck(AuthLogBefore): token = jf.Str(order=-100) @jrlib.order(-100) def __middle(self): print("auth middle") if not self.token == "1": raise ValueError("Access denied") def validate_token(self, value): print("ext validator (token) -100")
class ReqFlask(jrlib.Method): msg = jf.Str(required=True) def execute(self): self.response.set_cookie("time", value="{}".format(int(time()))) url = self.request.url user_agent = self.request.headers.get("User-Agent") return { "msg": self.msg, "url": url, "user_agent": user_agent, }
class Echo(jrlib.Method): msg = jf.Str(required=True) def validate(self): print("11111111111") super(Echo, self).validate() if self.msg == "222": raise ValueError("error 222!!!!") print("22222222222") def execute(self): return self.msg
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 InheritanceContactPhone(BaseContact): phone = jf.Str() def execute(self): return { "user_id": self.user_id, "comment": self.comment, "phone": self.phone, } def validate(self): super(InheritanceContactPhone, self).validate() if not self.phone or len(self.phone) != self.user_id: raise ValueError("Error phone lenght")
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 UserProfile(jf.Obj): first_name = jf.Str() last_name = jf.Str() test = "abc test"
class UserProfile(jf.Obj): first_name = jf.Str(required=True) last_name = jf.Str() sub = SubUserProfile(required=True) test = "abc test"
class Pr_2(jf.Obj): p_f1 = jf.Str() p_f2 = jf.Str(blank=False)
class Middle(Auth): msg = jf.Str() def execute(self): print("ee") return {"msg": self.msg}
class UserProfile(jf.Obj): first_name = jf.Str() sub = SubUserProfile()
class UserProfile(jf.Obj): first_name = jf.Str(required=True) # first_name = jf.Str() last_name = jf.Str()