Exemple #1
0
def favorite_func() -> str:
    """公司客户收藏夹页面"""
    company_id = get_platform_session_arg("user_id")
    if company_id is None:
        return redirect(url_for("web_blueprint.login_func"))
    else:
        company = Company.find_by_id(company_id)
        url_path = request.path  # 当前web路径
        if isinstance(company, Company):
            page_index = 1  # 页码
            index = request.args.get("index", "1")  # 第几页
            try:
                page_index = int(index)
            except Exception as e:
                print(e)
            company_dbref = company.get_dbref()
            f = {"company_id": company_dbref}
            s = {"time": -1}
            p = ['_id', "resume_id"]
            r = ResumeFavorite.query_by_page(filter_dict=f,
                                             sort_dict=s,
                                             projection=p,
                                             page_index=page_index,
                                             page_size=10)
            ids = [x['resume_id'].id for x in r['data']]
            f = {"_id": {"$in": ids}}
            resumes = DriverResume.find_plus(filter_dict=f,
                                             sort_dict=s,
                                             to_dict=True)
            for x in resumes:
                """转期望待遇的数组为字符串,以方便前端展示,此函数已集成在DriverResume类中"""
                expected_salary = x.get("expected_salary")
                if isinstance(expected_salary, list):
                    expected_salary = expected_salary[0:2]
                    if len(expected_salary) == 1:
                        expected_salary = "{}k".format(
                            round(expected_salary[0] / 1000, 1))
                    else:
                        expected_salary = "{}k至{}k".format(
                            round(expected_salary[0] / 1000, 1),
                            round(expected_salary[1] / 1000, 1))
                else:
                    expected_salary = "面议"
                x['expected_salary'] = expected_salary

            favorite_map = Company.in_favorite(company_id=company_id,
                                               drivers=ids,
                                               to_str=False)
            return render_template("web/favorite.html",
                                   resumes=resumes,
                                   total_record=r['total_record'],
                                   total_page=r['total_page'],
                                   pages=r['pages'],
                                   page_index=page_index,
                                   favorite_map=favorite_map,
                                   url_path=url_path)
        else:
            return redirect(url_for("web_blueprint.login_func"))
Exemple #2
0
def edit_consign_func(key):
    """
    公司账户对委托的撤回,修改
    :return:
    """
    company_id = get_platform_session_arg("user_id")
    method = request.method.lower()
    if method == 'get':
        return abort(405)
    else:
        if isinstance(company_id, ObjectId):
            company = Company.find_by_id(o_id=company_id)
            if isinstance(company, Company):
                mes = {"message": "success"}
                cid = get_arg(request, "cid", "")
                if isinstance(cid, str) and len(cid) == 24:
                    consign = Consign.find_by_id(o_id=cid)
                    if isinstance(consign, Consign):
                        if key == "withdraw":
                            """撤回委托"""
                            status = consign.get_attr("status", None)
                            if status is None or status not in [0, 1, 2, 3]:
                                mes['message'] = "委托的状态异常"
                            else:
                                if status in [2, 3]:
                                    mes['message'] = "无法撤回"
                                else:
                                    consign.set_attr("status", 0)
                                    r = consign.save_plus()
                                    if r is None:
                                        mes['message'] = '撤回失败'
                                    else:
                                        pass
                        elif key == "resubmit":
                            """重新提交"""
                        elif key == "edit":
                            """编辑委托"""
                        else:
                            mes['message'] = "不支持的操作"
                    else:
                        mes['message'] = "invalid cid"
                else:
                    mes['message'] = "cid参数错误"
                return json.dumps(mes)
            else:
                return abort(401)
        else:
            return abort(403)
Exemple #3
0
def consign_list_func() -> str:
    """公司客户委托列表的页面"""
    company_id = get_platform_session_arg("user_id")
    method = request.method.lower()
    if method == "get":
        if isinstance(company_id, ObjectId):
            company = Company.find_by_id(company_id)
            url_path = "/web/consign_list"  # 当前web路径,固定值,和我的委托共用url
            if isinstance(company, Company):
                """页码"""
                page_index = 1
                index = request.args.get("index", "1")  # 第几页
                try:
                    page_index = int(index)
                except Exception as e:
                    print(e)
                finally:
                    pass
                f = {"company_id": company.get_dbref()}
                s = {"update_date": -1}
                page_size = 3
                res = Consign.query_by_page(filter_dict=f,
                                            sort_dict=s,
                                            page_index=page_index,
                                            page_size=page_size)
                consign_list = res['data']
                pages = res['pages']
                total_page = res['total_page']
                total_record = res['total_record']
                return render_template("web/consign_list.html",
                                       url_path=url_path,
                                       consign_list=consign_list,
                                       pages=pages,
                                       total_page=total_page,
                                       total_record=total_record,
                                       page_index=page_index)
            else:
                return redirect(url_for("web_blueprint.login_func"))
        else:
            return redirect(url_for("web_blueprint.login_func"))
    else:
        return abort(405)
Exemple #4
0
def resume_favorite_func(key):
    """
    对公司的简历搜藏夹的操作.目前主要是以下2种操作:
    1. 把简历加入公司的收藏夹
    2. 把简历移出公司的收藏夹
    :return:
    """
    mes = {"message": "success"}
    company_id = get_platform_session_arg("user_id")
    if company_id is None:
        return abort(403)
    else:
        company = Company.find_by_id(company_id)
        if isinstance(company, Company):
            if key == "add":
                """加入收藏夹"""
                resume_id = get_arg(request, "id", "")
                if isinstance(resume_id, str) and len(resume_id) == 24:
                    resume = DriverResume.find_by_id(resume_id)
                    if isinstance(resume, DriverResume):
                        resume_dbref = resume.get_dbref()
                        company_dbref = DBRef(
                            database=db_name,
                            collection=Company.get_table_name(),
                            id=company_id)
                        obj = ResumeFavorite(resume_id=resume_dbref,
                                             company_id=company_dbref)
                        r = obj.save_plus()
                        if isinstance(r, ObjectId):
                            pass
                        else:
                            mes['message'] = "save fail"
                    else:
                        mes['message'] = "无效的id:{}".format(resume_id)
                else:
                    mes['message'] = "invalid id:{}".format(resume_id)
            elif key == "remove":
                """从收藏夹移除"""
                resume_id = get_arg(request, "id", "")
                if isinstance(resume_id, str) and len(resume_id) == 24:
                    resume = DriverResume.find_by_id(resume_id)
                    if isinstance(resume, DriverResume):
                        resume_dbref = resume.get_dbref()
                        company_dbref = DBRef(
                            database=db_name,
                            collection=Company.get_table_name(),
                            id=company_id)
                        f = {
                            "company_id": company_dbref,
                            "resume_id": resume_dbref
                        }
                        r = ResumeFavorite.find_one_and_delete(filter_dict=f)
                        if r is None:
                            mes['message'] = "移除失败"
                        else:
                            pass
                    else:
                        mes['message'] = "无效的id:{}".format(resume_id)
                else:
                    mes['message'] = "invalid id:{}".format(resume_id)
            elif key == "batch_remove":
                """从收藏夹批量移除"""
                ids = get_arg(request, "ids", "")
                if isinstance(ids, str) and len(ids) >= 24:
                    ids = ids.split(",")
                    fs = list()
                    for x in ids:
                        if len(x) == 24:
                            d_id = ObjectId(x)
                            dbref = DBRef(
                                database=db_name,
                                collection=DriverResume.get_table_name(),
                                id=d_id)
                            fs.append(dbref)
                    f = {
                        "company_id": company.get_dbref(),
                        "resume_id": {
                            "$in": fs
                        }
                    }
                    ResumeFavorite.delete_many(filter_dict=f)
                else:
                    mes['message'] = "invalid ids:{}".format(ids)
            else:
                mes['message'] = "无效的操作:{}".format(key)
        else:
            mes['message'] = "authenticity validate fail"
        return json.dumps(mes)
Exemple #5
0
def resp_page_func():
    """
    分页显示委托招聘的反馈页面信息
    :return:
    """
    company_id = get_platform_session_arg("user_id")
    method = request.method.lower()
    if method == 'get':
        if isinstance(company_id, ObjectId):
            company = Company.find_by_id(company_id)
            if isinstance(company, Company):
                args = dict()
                url_path = request.path  # 当前web路径
                q = dict()  # 查询条件
                projection = [
                    "_id", "education", "work_experience",
                    "industry_experience", "driving_experience", "gender",
                    "real_name", "age", "status", "dl_license_class",
                    "dl_first_date", "rtqc_license_class", "rtqc_first_date",
                    "want_job", "expected_salary", "birth_date",
                    "last_company", "first_work_date", "update_date"
                ]
                args['projection'] = projection  # 添加投影数组
                """页码"""
                page_index = 1
                index = request.args.get("index", "1")  # 第几页
                try:
                    page_index = int(index)
                except Exception as e:
                    print(e)
                finally:
                    args['page_index'] = page_index
                page_size = 10
                args['page_size'] = page_size
                f = {"company_id": company.get_dbref()}
                consign_id = get_arg(request, "cid", "")  # consign的id,
                if isinstance(consign_id, str) and len(consign_id) == 24:
                    consign = Consign.find_by_id(consign_id)
                    if isinstance(consign, Consign):
                        f['consign_id'] = consign.get_dbref()
                args['filter_dict'] = f
                s = {"time": -1}
                args['sort_dict'] = s
                resp_dict = Resp.query_by_page(**args)
                total_record = resp_dict['total_record']
                total_page = resp_dict['total_page']
                pages = resp_dict['pages']
                ids = [x['resume_id'].id for x in resp_dict['data']]
                if len(ids) == 0:
                    resumes = list()
                else:
                    f = {"_id": {"$in": ids}}
                    resumes = DriverResume.find_plus(filter_dict=f,
                                                     to_dict=True)
                return render_template("web/consign_resp.html",
                                       url_path=url_path,
                                       resumes=resumes,
                                       total_record=total_record,
                                       total_page=total_page,
                                       pages=pages,
                                       page_index=page_index)
            else:
                return redirect(url_for("web_blueprint.login_func"))
        else:
            return redirect(url_for("web_blueprint.login_func"))
    else:
        mes = {"message": "success"}
        if isinstance(company_id, ObjectId):
            company = Company.find_by_id(company_id)
            if isinstance(company, Company):
                pass
            else:
                mes['message'] = "authentication fail"
        else:
            mes['message'] = "authentication fail"
        return json.dumps(mes)
Exemple #6
0
def add_consign_func() -> str:
    """公司客户填写委托招聘的页面"""
    company_id = get_platform_session_arg("user_id")
    mes = {"message": "success"}
    method = request.method.lower()
    if company_id is None:
        if method == "get":
            return redirect(url_for("web_blueprint.login_func"))
        else:
            mes['message'] = "authentication fail"
            return json.dumps(mes)
    else:
        company = Company.find_by_id(company_id)
        url_path = "/web/consign_list"  # 当前web路径,固定值,和我的委托共用url
        if isinstance(company, Company):
            if method == "get":
                """返回添加委托页面"""
                province_list = Region.get_province()  # 取省的列表
                """取sid,consign的id,如果这个id为空或者查找不到对应的对象,表示是新建委托"""
                consign = request.args.get("s_id", None)
                if isinstance(consign, str) and len(consign) == 24:
                    consign = Consign.find_by_id(o_id=consign, can_json=True)
                consign = dict() if consign is None else consign
                return render_template("web/consign.html",
                                       url_path=url_path,
                                       province_list=province_list,
                                       consign=consign)
            else:
                """添加/编辑委托的请求"""
                args = get_args(request)
                the_type = args.pop("type", None)
                now = datetime.datetime.now()
                if the_type == "add":
                    args.pop("_id", None)
                    args['create_date'] = now
                    args['update_date'] = now
                    args['company_id'] = company.get_dbref()
                    """对参数进行处理"""
                    industry_experience = args.pop('industry_experience', "")
                    if isinstance(industry_experience, int):
                        args['industry_experience'] = industry_experience
                    elif isinstance(industry_experience,
                                    str) and industry_experience.isdigit():
                        args['industry_experience'] = int(industry_experience)
                    else:
                        pass
                    welfare = args.pop("welfare", "")  # 福利待遇
                    welfare = [x.strip() for x in welfare.split(",")]
                    args['welfare'] = welfare
                    driving_experience = args.pop("driving_exp", None)  # 驾龄
                    if driving_experience is None:
                        pass
                    else:
                        if isinstance(driving_experience, int):
                            args['driving_experience'] = driving_experience
                        elif isinstance(driving_experience,
                                        str) and driving_experience.isdigit():
                            args['driving_experience'] = int(
                                driving_experience)
                        else:
                            pass
                    work_experience = args.pop("work_exp", None)  # 工作年限
                    if work_experience is None:
                        pass
                    else:
                        if isinstance(work_experience, int):
                            args['work_experience'] = work_experience
                        elif isinstance(work_experience,
                                        str) and work_experience.isdigit():
                            args['work_experience'] = int(work_experience)
                        else:
                            pass
                    """创建并保存对象"""
                    consign = Consign.instance(**args)
                    object_id = None
                    try:
                        object_id = consign.save_plus()
                    except Exception as e:
                        print(e)
                        logger.exception(e)
                    finally:
                        if isinstance(object_id, ObjectId):
                            pass
                        else:
                            mes['message'] = "保存失败"
                elif the_type == "update":
                    """编辑委托"""
                    pass
                else:
                    mes['message'] = "不支持的操作"
                return json.dumps(mes)
        else:
            if method == "get":
                return redirect(url_for("web_blueprint.login_func"))
            else:
                mes['message'] = "authentication fail"
                return json.dumps(mes)