def import_psuser_roster(request): """ @description 花名冊导入功能 @param request: 请求 """ try: if request.method == "POST": # 第一步:获取文件导入文件,将导入文件上传到服务器临时目录 excel_file = request.FILES.get("excel_file", None) # 第二步:判断请求中是否存在待上传文件,存在则将文件上传到服务临时目录 if excel_file: file_path = upload_file("temp_file/",excel_file) # 第三步:文件上传成功后先将Excel数据解析 if file_path: log.info(">>>>>>>>>>>>>>>>>> start import excel data >>>>>>>>>>>>") # 姓名、部门、岗位、职级、出生日期、性别、入职日期、转正日期、合同到期日期、离职日期 obj_dict = {0: "name", 1: "dept", 2: "position", 3: "qq", 4: "phone", 5: "tel"} obj_list = import_excel_util(file_path, obj_dict) else: log.info(">>>>>>>>>>>>>>>>> 导入文件%s上传失败 >>>>>" % excel_file.name) raise Exception("网络异常,请稍后重试") else: raise Exception("文件不存在") except Exception, e: log.exception(">>>>>>>>>>>>>>> import_psuser_roster raise >>>>>>>>>>>>>>>>>>>>>") result = {"status": 0, "msg": "fail"}
def perm_check(request, codename): """验证权限""" try: if codename is not None: if request.user.has_perm(codename): log.info('perm_check info: ====》权限已匹配') return True else: log.info('perm_check info: ====》权限没有匹配') return False else: return False except Exception, e: log.error("perm_check raise exception,error:%s" % e) return False
def create_table_by_model(table_suffix, model_class, ref_model_list, engine_type=''): '''根据静态Model、表名后缀、静态Model的关联其它Model创建一个表''' try: # 检查表是否已存在 org_db_table = model_class._meta.db_table table_name = org_db_table + "_" + str(table_suffix) if table_name and is_table_exist(table_name): log.info("table %s already exist" % (table_name)) return True except Exception, e: log.error('check table exist error, table_name=%s, e=%s' % (table_name, e)) return False
def transit(self): """任务迁移""" if self.process.ended: return False, '该工作流程已经结束' process_state_dict = self.process.get_process_state() task_state = process_state_dict.get(self.name, {}).get("state", None) if task_state is None: log.info('The task is not in order in process<%s>: %s' % (self.process.id, self.name)) return False, '该操作当前不可执行' elif task_state == self.TASK_RUNNIG: log.info('The task has been running in process<%s>: %s' % (self.process.id, self.name)) return False, '该操作已在处理中' elif task_state == self.TASK_SUCCEED: self.turn_in_target_list() return True, '操作已完成' elif task_state == self.TASK_TRANSITED: log.info('The task was transited in process<%s>: %s' % (self.process.id, self.name)) return False, '不能重复执行此操作' elif not self.is_ready(): log.info('The task is not ready in process<%s>: %s' % (self.process.id, self.name)) return False, '该操作尚未准备就绪' else: now_ = datetime.datetime.now() try: if callable(self.run): task_state, msg, org_kwargs = self.run(self) else: task_state, msg, org_kwargs = self.TASK_SUCCEED, '', {} if task_state == self.TASK_SUCCEED: self.turn_in_target_list(org_kwargs) else: self.process.update_process_state(self.name, { "state": task_state, "updated": now_, }) if self.mutex and task_state in [ self.TASK_SUCCEED, self.TASK_RUNNIG ]: self.handle_mutex() return True, msg except Exception, e: self.process.update_process_state(self.name, { "state": self.TASK_FAIL, "updated": now_, }) log.error('This task failed in process<%s>: %s, error: %s' % (self.process.id, self.name, e)) return False, '发生系统错误'
def import_excel(request): """Excel导入""" try: if request.method == "POST": excel_file = request.FILES.get("excel_file", None) if excel_file: # 自定义存储路径 rollfileName = "uploadfile/" rollfilePath = os.path.join(settings.MEDIA_ROOT, rollfileName) # 获取文件名后缀 filetype = excel_file.name.split(".")[-1] # 生成随机字符串加后缀的文件名 filename = str(uuid.uuid1()) + '.' + filetype file_path = rollfilePath + filename # 打开文件存储路径 of = open(file_path, 'wb+') # 向指定路径写入文件 for chunk in excel_file.chunks(): of.write(chunk) # 写入内容 of.close() # 关闭连接 log.info(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> start import excel >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>") obj_dict = {0: "name", 1: "name_cn", 2: "position", 3: "qq", 4: "phone", 5: "tel"} obj_list = import_excel_util(file_path, obj_dict) os.remove(file_path) # 读取完成后,删除文件 with transaction.atomic(): count = 0 for obj in obj_list: user_tmp = TestUser.objects.filter(name=obj['name']) if user_tmp: log.info("obj is exist") continue else: TestUser.objects.create( name=obj['name'], password="******", name_cn=obj['name_cn'], position=obj['position'], qq=obj['qq'], phone=obj['phone'], tel=obj['tel'] ) count+=1 log.info(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> insert successful ,insert %s data >>>>>>>>" % count) log.info(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> end import excel >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>") result = {"status": 1, "msg": "成功"} else: raise Exception("文件不存在") elif request.method == "GET": return render(request, "bgadmin/import_Excel.html", {}) else: raise Exception("请求异常") except Exception, e: log.exception("import_excel %s" % e) result = {"status": 0, "msg": "fail"}
"Parameter error, %s does not reference Model: %s, Please check parameter: ref_model_list" % (model_class, ref_model_list)) return False sql.extend( connection.creation.sql_for_pending_references(model_class, style, pending_references)) if engine_type != '' and len(sql) > 0: sql[0] = sql[0][0:-2] + 'engine=' + engine_type + '\n' + ';' # 获取索引sql index_sql = connection.creation.sql_indexes_for_model(model_class, style) if index_sql: sql.extend(index_sql) model_class._meta.db_table = org_db_table log.info("Creating table %s ......, Model is %s" % (table_name, model_class)) try: for statement in sql: cursor.execute(statement) # 执行脚本 except Exception, e: log.exception("SQL Statement execute error, e=%s" % (e)) return False log.info("Create table %s success" % (table_name)) return True # @transaction.commit_manually def bulk_update_for_sql(sql, value_list, commit_number=1000): '''批量执行sql语句保存数据,按照commit_number将value_list分组批量更新''' rowcount = 0
def test(request): log.info('test') return HttpResponse('test')