137 lines
4.1 KiB
Python
137 lines
4.1 KiB
Python
from app.utils.GlobalUtils import *
|
||
from app.utils.LanguageUtils import LANG_VIEWS_T, GSettingsLangDefault
|
||
import json
|
||
from django.http import HttpResponse
|
||
|
||
def f_parseGetParams(request):
|
||
params = {}
|
||
try:
|
||
for k in request.GET:
|
||
params.__setitem__(k, request.GET.get(k))
|
||
except Exception as e:
|
||
params = {}
|
||
|
||
return params
|
||
|
||
def f_parsePostParams(request):
|
||
params = {}
|
||
for k in request.POST:
|
||
params.__setitem__(k, request.POST.get(k))
|
||
|
||
# 接收json方式上传的参数
|
||
if not params:
|
||
try:
|
||
params = request.body.decode('utf-8')
|
||
params = json.loads(params)
|
||
except:
|
||
params = {}
|
||
|
||
return params
|
||
def f_parseRequestLang(request):
|
||
# v5.006 新增
|
||
request_lang = None
|
||
|
||
# 1. 最高优先级:获取GET或POST的lang参数
|
||
if request.method == 'GET':
|
||
params = f_parseGetParams(request)
|
||
lang = params.get('lang', '').strip()
|
||
if lang:
|
||
request_lang = lang
|
||
elif request.method == 'POST':
|
||
params = f_parsePostParams(request)
|
||
lang = params.get('lang', '').strip()
|
||
if lang:
|
||
request_lang = lang
|
||
|
||
if not request_lang:
|
||
# 2. 次优先级:session中的语言设置
|
||
if hasattr(request, 'session'):
|
||
request_lang = request.session.get('lang', GSettingsLangDefault)
|
||
|
||
if not request_lang:
|
||
# 3. 最低优先级:系统默认语言
|
||
request_lang = GSettingsLangDefault
|
||
|
||
return request_lang
|
||
def f_parseRequestIp(request):
|
||
try:
|
||
if request.method == 'GET':
|
||
params = f_parseGetParams(request)
|
||
ip = params.get('request_ip', '').strip()
|
||
if ip:
|
||
return ip
|
||
elif request.method == 'POST':
|
||
params = f_parsePostParams(request)
|
||
ip = params.get('request_ip', '').strip()
|
||
if ip:
|
||
return ip
|
||
host = request.get_host()
|
||
ip = host.split(':')[0]
|
||
except Exception as e:
|
||
g_logger.error("f_parseRequestIp() error: %s"%str(e))
|
||
ip = "0.0.0.0"
|
||
return ip
|
||
def f_parsePeerIp(request):
|
||
try:
|
||
x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR')
|
||
if x_forwarded_for:
|
||
ip = x_forwarded_for.split(',')[0]
|
||
else:
|
||
ip = request.META.get('REMOTE_ADDR') # 备用方案
|
||
except Exception as e:
|
||
g_logger.error("f_parsePeerIp() error: %s"%str(e))
|
||
ip = "0.0.0.0"
|
||
return ip
|
||
def f_parsePeerPort(request):
|
||
try:
|
||
port = int(request.get_port())
|
||
except Exception as e:
|
||
g_logger.error("f_parsePeerPort() error: %s"%str(e))
|
||
port = 0
|
||
return port
|
||
|
||
def f_sessionReadUser(request):
|
||
auth_user = getattr(request, "user", None)
|
||
if auth_user is not None and auth_user.is_authenticated:
|
||
return {
|
||
"id": auth_user.id,
|
||
"username": auth_user.username,
|
||
"email": auth_user.email,
|
||
"is_superuser": auth_user.is_superuser,
|
||
"is_active": auth_user.is_active,
|
||
"is_staff": auth_user.is_staff,
|
||
}
|
||
user = request.session.get(g_session_key_user)
|
||
return user
|
||
|
||
def f_sessionReadUserId(request):
|
||
try:
|
||
user_id = f_sessionReadUser(request).get("id")
|
||
except:
|
||
user_id = 0
|
||
return user_id
|
||
|
||
def f_checkRequestSafe(request):
|
||
"""Browser management APIs require an authenticated session.
|
||
|
||
The historical ``Safe`` header bypass has intentionally been removed. The
|
||
function name is retained to avoid a broad, risky rewrite of every view.
|
||
"""
|
||
user_id = f_sessionReadUserId(request)
|
||
if user_id:
|
||
return True, LANG_VIEWS_T(request, "msg_success")
|
||
return False, LANG_VIEWS_T(request, "msg_safe_verify_error")
|
||
|
||
def f_responseJson(res):
|
||
def json_dumps_default(obj):
|
||
if hasattr(obj, 'isoformat'):
|
||
return obj.isoformat()
|
||
else:
|
||
raise TypeError
|
||
|
||
return HttpResponse(json.dumps(res, default=json_dumps_default), content_type="application/json")
|
||
|
||
def f_dbReadStreamData():
|
||
data = g_database.select("select * from av_stream order by id desc")
|
||
return data
|