Update: Filter Search added (not tested)

This commit is contained in:
Yûki VACHOT 2022-01-06 15:38:33 +01:00
parent de3ddad057
commit f46f7ba4f9

View file

@ -2,6 +2,7 @@ import hashlib
import os import os
from datetime import datetime from datetime import datetime
from flask_sqlalchemy import inspect from flask_sqlalchemy import inspect
from sqlalchemy import asc, or_
from .users_model import Users, db from .users_model import Users, db
from .logs_model import Logs from .logs_model import Logs
@ -282,150 +283,56 @@ def db_users(ip, user_id, query, by='email,nickname', id=None, is_admin=None, or
# is_admin = # is_admin =
# order_by = email, nickname, id, is_admin # order_by = email, nickname, id, is_admin
users = Users.query
if query is not id: if query is not id:
if query: if query:
if by == 'email': if query and by:
if is_admin: if by == 'email':
if order_by == 'nickname': users = users.filter(Users.email.like(query))
users = Users.query.filter().all() elif by == 'nickname':
users = users.filter(Users.nickname.like(query))
elif order_by == 'id':
users = Users.query.filter().all()
elif order_by == 'is_admin':
users = Users.query.filter().all()
else:
users = Users.query.filter().all()
else: else:
if order_by == 'nickname': users = users.filter(or_(Users.nickname.like('%'+query+'%'), Users.email.like('%'+query+'%')))
users = Users.query.filter().all()
elif order_by == 'id':
users = Users.query.filter().all()
elif order_by == 'is_admin':
users = Users.query.filter().all()
else:
users = Users.query.filter().all()
elif by == 'nickname':
if is_admin:
if order_by == 'nickname':
users = Users.query.filter().all()
elif order_by == 'id':
users = Users.query.filter().all()
elif order_by == 'is_admin':
users = Users.query.filter().all()
else:
users = Users.query.filter().all()
else:
if order_by == 'nickname':
users = Users.query.filter().all()
elif order_by == 'id':
users = Users.query.filter().all()
elif order_by == 'is_admin':
users = Users.query.filter().all()
else:
users = Users.query.filter().all()
else: else:
if is_admin: message = 'Need q and by field if using query and not id'
if order_by == 'nickname': db_create_log(
users = Users.query.filter().all() ip=ip,
action='users',
elif order_by == 'id': message=message,
users = Users.query.filter().all() has_succeeded=False,
status_code=1,
elif order_by == 'is_admin': table='users',
users = Users.query.filter().all() id_user=user_id
)
else: return {'status': 1, 'message': message}
users = Users.query.filter().all()
else:
if order_by == 'nickname':
users = Users.query.filter().all()
elif order_by == 'id':
users = Users.query.filter().all()
elif order_by == 'is_admin':
users = Users.query.filter().all()
else:
users = Users.query.filter().all()
message = f'query({query}), by({by}), is_admin({is_admin}) and order_by({order_by}): {len(users)} result(s)'
db_create_log(
ip=ip,
action='users',
message=message,
has_succeeded=True,
status_code=0,
table='users',
id_user=user_id
)
return {'status': 0, 'message': message, 'data': [user.json() for user in users]}
elif id:
if is_admin:
if order_by == 'nickname':
users = Users.query.filter().all()
elif order_by == 'id':
users = Users.query.filter().all()
elif order_by == 'is_admin':
users = Users.query.filter().all()
else:
users = Users.query.filter().all()
else:
if order_by == 'nickname':
users = Users.query.filter().all()
elif order_by == 'id':
users = Users.query.filter().all()
elif order_by == 'is_admin':
users = Users.query.filter().all()
else:
users = Users.query.filter().all()
message = f'id({id}), is_admin({is_admin}) and order_by({order_by}): {len(users)} result(s)'
db_create_log(
ip=ip,
action='users',
message=message,
has_succeeded=True,
status_code=0,
table='users',
id_user=user_id
)
return {'status': 0, 'message': message, 'data': [user.json() for user in users]}
else: else:
message = 'Need q and by field if using query and not id' users = users.filter(Users.id == id)
db_create_log(
ip=ip, if is_admin is not None:
action='users', users = users.filter(Users.is_admin == is_admin)
message=message,
has_succeeded=False, if order_by == 'nickname':
status_code=1, users = users.order_by(asc(Users.nickname))
table='users', elif order_by == 'id':
id_user=user_id users = users.order_by(asc(Users.id))
) elif order_by == 'is_admin':
return {'status': 1, 'message': message} users = users.order_by(asc(Users.is_admin))
else:
users = users.order_by(asc(Users.is_admin))
users = users.all()
message = f'id({id}), is_admin({is_admin}) and order_by({order_by}): {len(users)} result(s)'
db_create_log(
ip=ip,
action='users',
message=message,
has_succeeded=True,
status_code=0,
table='users',
id_user=user_id
)
return {'status': 0, 'message': message, 'data': [user.json() for user in users]}
else: else:
message = 'Query or id field' message = 'Query or id field'
db_create_log( db_create_log(