コード例 #1
0
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"}
コード例 #2
0
ファイル: permission.py プロジェクト: Florence3546/DTS3.0
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
コード例 #3
0
ファイル: utils_mysql.py プロジェクト: Florence3546/DTS3.0
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
コード例 #4
0
ファイル: models.py プロジェクト: Florence3546/DTS3.0
    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, '发生系统错误'
コード例 #5
0
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"}
コード例 #6
0
ファイル: utils_mysql.py プロジェクト: Florence3546/DTS3.0
                "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
コード例 #7
0
ファイル: views.py プロジェクト: Florence3546/DTS3.0
def test(request):
    log.info('test')
    return HttpResponse('test')