2019-07-22 14:50:06 +08:00
|
|
|
# -*- coding: utf-8 -*-
|
|
|
|
|
from flask import g,render_template
|
|
|
|
|
import datetime
|
2019-07-22 17:58:38 +08:00
|
|
|
'''
|
|
|
|
|
自定义分页类
|
|
|
|
|
'''
|
|
|
|
|
def iPagination( params ):
|
|
|
|
|
import math
|
|
|
|
|
|
|
|
|
|
ret = {
|
|
|
|
|
"is_prev":1,
|
|
|
|
|
"is_next":1,
|
|
|
|
|
"from" :0 ,
|
|
|
|
|
"end":0,
|
|
|
|
|
"current":0,
|
|
|
|
|
"total_pages":0,
|
|
|
|
|
"page_size" : 0,
|
|
|
|
|
"total" : 0,
|
|
|
|
|
"url":params['url'].replace("&p=","")
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
total = int( params['total'] )
|
|
|
|
|
page_size = int( params['page_size'] )
|
|
|
|
|
page = int( params['page'] )
|
|
|
|
|
display = int( params['display'] )
|
|
|
|
|
total_pages = int( math.ceil( total / page_size ) )
|
|
|
|
|
total_pages = total_pages if total_pages > 0 else 1
|
|
|
|
|
if page <= 1:
|
|
|
|
|
ret['is_prev'] = 0
|
|
|
|
|
|
|
|
|
|
if page >= total_pages:
|
|
|
|
|
ret['is_next'] = 0
|
|
|
|
|
|
|
|
|
|
semi = int( math.ceil( display / 2 ) )
|
|
|
|
|
|
|
|
|
|
if page - semi > 0 :
|
|
|
|
|
ret['from'] = page - semi
|
|
|
|
|
else:
|
|
|
|
|
ret['from'] = 1
|
|
|
|
|
|
|
|
|
|
if page + semi <= total_pages :
|
|
|
|
|
ret['end'] = page + semi
|
|
|
|
|
else:
|
|
|
|
|
ret['end'] = total_pages
|
|
|
|
|
|
|
|
|
|
ret['current'] = page
|
|
|
|
|
ret['total_pages'] = total_pages
|
|
|
|
|
ret['page_size'] = page_size
|
|
|
|
|
ret['total'] = total
|
|
|
|
|
ret['range'] = range( ret['from'],ret['end'] + 1 )
|
|
|
|
|
return ret
|
2019-07-22 14:50:06 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
'''
|
|
|
|
|
统一渲染方法
|
|
|
|
|
'''
|
|
|
|
|
def ops_render( template,context = {} ):
|
|
|
|
|
if 'current_user' in g:
|
|
|
|
|
context['current_user'] = g.current_user
|
2019-07-29 15:28:02 +08:00
|
|
|
return render_template( template,**context )
|
|
|
|
|
|
|
|
|
|
'''
|
|
|
|
|
获取当前时间
|
|
|
|
|
'''
|
|
|
|
|
def getCurrentDate( format = "%Y-%m-%d %H:%M:%S"):
|
|
|
|
|
#return datetime.datetime.now().strftime( format )
|
|
|
|
|
return datetime.datetime.now()
|
2019-08-02 18:24:04 +08:00
|
|
|
|
|
|
|
|
'''
|
|
|
|
|
获取格式化的时间
|
|
|
|
|
'''
|
|
|
|
|
def getFormatDate( date = None ,format = "%Y-%m-%d %H:%M:%S" ):
|
|
|
|
|
if date is None:
|
|
|
|
|
date = datetime.datetime.now()
|
|
|
|
|
|
|
|
|
|
return date.strftime( format )
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
'''
|
|
|
|
|
根据某个字段获取一个dic出来
|
|
|
|
|
'''
|
|
|
|
|
def getDictFilterField( db_model,select_filed,key_field,id_list ):
|
|
|
|
|
ret = {}
|
|
|
|
|
query = db_model.query
|
|
|
|
|
if id_list and len( id_list ) > 0:
|
|
|
|
|
query = query.filter( select_filed.in_( id_list ) )
|
|
|
|
|
|
|
|
|
|
list = query.all()
|
|
|
|
|
if not list:
|
|
|
|
|
return ret
|
|
|
|
|
for item in list:
|
|
|
|
|
if not hasattr( item,key_field ):
|
|
|
|
|
break
|
|
|
|
|
|
|
|
|
|
ret[ getattr( item,key_field ) ] = item
|
|
|
|
|
return ret
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def selectFilterObj( obj,field ):
|
|
|
|
|
ret = []
|
|
|
|
|
for item in obj:
|
|
|
|
|
if not hasattr(item, field ):
|
|
|
|
|
break
|
|
|
|
|
if getattr( item,field ) in ret:
|
|
|
|
|
continue
|
|
|
|
|
ret.append( getattr( item,field ) )
|
|
|
|
|
return ret
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def getDictFilterField( db_model,select_filed,key_field,id_list ):
|
|
|
|
|
ret = {}
|
|
|
|
|
query = db_model.query
|
|
|
|
|
if id_list and len( id_list ) > 0:
|
|
|
|
|
query = query.filter( select_filed.in_( id_list ) )
|
|
|
|
|
|
|
|
|
|
list = query.all()
|
|
|
|
|
if not list:
|
|
|
|
|
return ret
|
|
|
|
|
for item in list:
|
|
|
|
|
if not hasattr( item,key_field ):
|
|
|
|
|
break
|
|
|
|
|
if getattr( item,key_field ) not in ret:
|
|
|
|
|
ret[getattr(item, key_field)] = []
|
|
|
|
|
|
|
|
|
|
ret[ getattr( item,key_field ) ].append(item )
|
|
|
|
|
return ret
|