Flask代码统计
代码统计
密码md5加密
在创建用户的时候,密码必须是密文的,可以通过md5加密,通过其他,如果不加密,一旦数据库泄露了,那么客户的信息就会有危险.
如何用md5进行加密?
def md5(arg): hash = hashlib.md5(Config.SALT) hash.update(bytes(arg,encoding='utf-8')) return hash.hexdigest()
在每次用户创建的时候都需要md5加密存入数据库,当用户再次登录的时候再MD5加密去获取.
解压zip文件并且计算行数插入数据库
from ..utils import sql import os,shutil,uuid,datetime def UpLoad(): if request.method=='GET': return render_template('upload.html',session=session) now = datetime.date.today() code=request.files.get('code') #检查今天是否已经提交 data = sql.fetch_one('select id from detail where sub_date=%s and user_id=%s', (now, session.get('user_info').get('id'))) if data: return '今天已经提交过了' # 1.检查上传文件的后缀名 file_ext=code.filename.rsplit('.',maxsplit=1) # 2.校验是为zip文件 if len(file_ext)!=2: return '必须上传zip文件' if file_ext[1]!='zip': return '必须上传zip文件' #路径拼接 target_path=os.path.join('files',str(uuid.uuid4())) #解压zip文件并下载到本地 shutil._unpack_zipfile(code.stream,target_path) ret=os.walk(target_path) total_line=0 for base_path,folder_list,file_list in ret: # 文件路径,文件夹名字,文件名 count_line=0 for file_name in file_list: zip_file_ext=file_name.rsplit('.',maxsplit=1) #对文件进行校验 if len(zip_file_ext) !=2: continue if zip_file_ext[1]!='py': continue # 拼接文件路径 file_path=os.path.join(base_path,file_name) with open(file_path,'rb') as f: for line in f: # 对每行的代码做校验 line=line.strip() if not line: continue if line.startswith(b'#'): continue count_line+=1 total_line+=count_line # 插入数据库 sql.insert('insert into detail (number,sub_date,user_id) values (%s,%s,%s)',(total_line,now,session.get('user_info').get('id'))) return redirect('/backend/userlist/')