def orderby_2_sql(order_by): sortings = order_by.split(',') rt = [] for x in sortings: try: prop, *_ = x.strip().partition(' ') prop = prop.strip() order = 'DESC' if _[-1].upper() == 'DESC' else 'ASC' rt.append('`{}` {}'.format(prop, order)) except Exception as e: msg = 'Invalid syntax:{}'.format(x) raise Error(msg, 400) return ','.join(rt)
def post(self): ''' support create one or multi resource ''' data = request.get_json() if isinstance(data, dict): data = [data] elif len(data) > MAX_CREATION: # data is a list of object err_msg = ' '.join(['can not create more than', str(MAX_CREATION)]) raise Error(err_msg, 413) objs = [self.model(**x) for x in data] g.created_objs = objs db.session.add_all(objs) db.session.commit() if len(objs) == 1: rv = objs[0]._asdict() else: rv = [x._asdict() for x in objs] return rv
def delete(self, rid): perm = Permission.query.filter_by(id=rid).one() if perm.system: raise Error('ask your admin for support', 401) return super().delete(rid)
def patch(self, rid): perm = Permission.query.filter_by(id=rid).one() if perm.system: raise Error('system permission is not editable', 401) return super().patch(rid)