def get_or_404(self, *args, **kwargs): try: return self.get(*args, **kwargs) except (MultipleObjectsReturned, DoesNotExist, ValidationError), e: # current_app.logger.exception(e) if current_app.debug: raise FriendlyException(404, e.message) raise FriendlyException(404, 'Resource is not exists.')
def paginate(self, where=None, limit=None, page=None, sort=None, only=(), exclude=()): form_data = request.values or request.json or {} where = where if where else json.loads(form_data.get('where', '{}')) limit = int(limit if limit else form_data.get('limit', 20)) page = int(page if page else form_data.get('page', 1)) sort = sort if sort else form_data.get('sort', '-modified') if limit <= 0 or limit > 200 or page <= 0: raise FriendlyException.from_error_code( error_code.INVALID_PAGINATE) querySet = self.filter(**where) if len(only): querySet = querySet.only(*only) if len(exclude): querySet = querySet.exclude(*exclude) if sort: querySet = querySet.order_by(sort) paginate = PaginationMixin(querySet, page, limit) return paginate.to_dict()
def str2bool(sv): lower_value = sv.lower() if lower_value in ("yes", "true", "t", "1"): return True elif sv.lower() in ("no", "false", "f", "0"): return False raise FriendlyException(104, 'value %s cant be convert to bool' % lower_value)
def signup(): ''' signup user. ''' email = g.formdata.get('email') name = g.formdata.get('name') password = g.formdata.get('password') # validate input if not email or not name or not password: raise FriendlyException.fec(error_code.ENP_REQUIRED) # generate a verify code. verify_code = ''.join(random.sample(string.letters, 6)) user = User(email=email, name=name, password=password, verify_code=verify_code) try: user.save() except NotUniqueError: raise FriendlyException.fec(error_code.EMAIL_DUPLICATE, email) # should we send a email here? return user
def signup(): ''' signup user. ''' email = g.formdata.get('email') name = g.formdata.get('name') password = g.formdata.get('password') # validate input if not email or not name or not password: raise FriendlyException.fec(error_code.ENP_REQUIRED) # generate a verify code. verify_code = ''.join(random.sample(string.letters, 6)) user = User(email=email, name=name, password=password, verify_code=verify_code) try: user.save() except NotUniqueError: raise FriendlyException.fec(error_code.EMAIL_DUPLICATE, email) # should we send a email here? return user
def do_login(): next_url = g.formdata.get('next') email = g.formdata.get('email') password = g.formdata.get('password') remember = (g.formdata.get('remember', 'no') == 'yes') print '=============' + request.values.get('next') user = User.objects(email=email, password=password).first() if user is not None: if login_user(SessionUserMixin(user), remember=remember): user.last_login_on = datetime.datetime.now() user.save() return redirect(next_url or url_for('index')) raise FriendlyException.fec(error_code.LOGIN_FAILED)
def do_login(): next_url = g.formdata.get('next') email = g.formdata.get('email') password = g.formdata.get('password') remember = (g.formdata.get('remember', 'no') == 'yes') print '=============' + request.values.get('next') user = User.objects(email=email, password=password).first() if user is not None: if login_user(SessionUserMixin(user), remember=remember): user.last_login_on = datetime.datetime.now() user.save() return redirect(next_url or url_for('index')) raise FriendlyException.fec(error_code.LOGIN_FAILED)
def paginate(self, where=None, limit=None, page=None, sort=None, only=(), exclude=()): form_data = request.values or request.json or {} where = where if where else json.loads(form_data.get('where', '{}')) limit = int(limit if limit else form_data.get('limit', 20)) page = int(page if page else form_data.get('page', 1)) sort = sort if sort else form_data.get('sort', '-modified') if limit <= 0 or limit > 200 or page <= 0: raise FriendlyException.from_error_code(error_code.INVALID_PAGINATE) querySet = self.filter(**where) if len(only): querySet = querySet.only(*only) if len(exclude): querySet = querySet.exclude(*exclude) if sort: querySet = querySet.order_by(sort) paginate = PaginationMixin(querySet, page, limit) return paginate.to_dict()
from vclassifieds.common.exceptions import FriendlyException from vclassifieds.common import error_code from functools import wraps def reraise(to_raise): def decorator(f): @wraps(f) def inner(*args, **kwargs): try: return f(*args, **kwargs) except: raise to_raise return inner return decorator @reraise(FriendlyException.from_error_code(error_code.INVALID_JSON)) def is_object_id(object_id_value): from bson.objectid import ObjectId ObjectId(unicode(object_id_value)) return True @reraise(FriendlyException.from_error_code(error_code.INVALID_JSON)) def is_json(json_value): import json return json.loads(json_value)
def exception_handler(error, status=400): app.logger.exception(error) ex = FriendlyException(400, str(error)) return handler_ex(ex, status)
def mongo_op_ex_handler(error, status=400): ex = FriendlyException(400, str(error)) return handler_ex(ex, status)
def form_validata_ex_handler(error, status=400): ex = FriendlyException(400, error.to_dict()) return handler_ex(ex, status)
def page_not_found(error): ex = FriendlyException.fec(error_code.RESOURCE_NOT_EXIST) return handler_ex(ex, 404)
# Created on 2013-2-24 # from vclassifieds.common.exceptions import FriendlyException from vclassifieds.common import error_code from functools import wraps def reraise(to_raise): def decorator(f): @wraps(f) def inner(*args, **kwargs): try: return f(*args, **kwargs) except: raise to_raise return inner return decorator; @reraise(FriendlyException.from_error_code(error_code.INVALID_JSON)) def is_object_id(object_id_value): from bson.objectid import ObjectId ObjectId(unicode(object_id_value)) return True @reraise(FriendlyException.from_error_code(error_code.INVALID_JSON)) def is_json(json_value): import json return json.loads(json_value)
def page_not_found(error): ex = FriendlyException.fec(error_code.RESOURCE_NOT_EXIST) return handler_ex(ex, 404)