예제 #1
0
 def post(self, request: HttpRequest):
     user_id = request.POST.get("userId")
     intent = JobIntent.objects.filter(user_id=user_id)
     if len(intent) > 0:
         return ret_data(200, intent[0].dict(), "ok")
     else:
         return ret_data(404, None, "user has no intent")
예제 #2
0
 def post(self, request: HttpRequest):
     position_id = request.POST.get("positionId")
     user_id = request.POST.get("userId")
     favors = Favor.objects.filter(position__position_id=position_id,
                                   user__user_id=user_id,
                                   favor_state=Favor.text2state("正常"))
     if len(favors) > 0:
         data = {"favor_id": favors[0].dict()["favor_id"]}
         return ret_data(200, data, "ok")
     else:
         return ret_data(404, None, "not favor")
예제 #3
0
 def post(self, request: HttpRequest):
     code = request.POST.get("code")
     res = get_openid(code)
     if res["state"] == 200:
         openid = res["openid"]
         user_list = User.objects.filter(user_openid=openid)
         if len(user_list) > 0:
             user = user_list[0]
             return ret_data(status=200, data=user.dict(), msg="ok")
         # else:
         #     return ret_data(status=404, data={"openid": openid}, msg="user not found")
     return ret_data(status=500, data={}, msg="wx server error")
예제 #4
0
 def post(self, request: HttpRequest):
     position_id = request.POST.get("positionId")
     user_id = request.POST.get("userId")
     position_resumes = PositionResume.objects.filter(
         position__position_id=position_id,
         user__user_id=user_id,
         position_resume_state=Favor.text2state("正常"))
     if len(position_resumes) > 0:
         data = {
             "position_resume_id":
             position_resumes[0].dict()["position_resume_id"]
         }
         return ret_data(200, data, "ok")
     else:
         return ret_data(404, None, "ok")
예제 #5
0
        def post(self, request: HttpRequest):
            resume_bin = request.FILES.get("resumeBin")
            resume_bytes = resume_bin.read()

            resume = Resume()
            resume_name = request.POST.get("resumeName")
            resume.resume_name = resume_name
            resume.resume_size = request.POST.get("resumeSize")
            resume.user_id = request.POST.get("userId")
            resume.resume_type = os.path.splitext(resume_name)[1][1:]
            resume.resume_state = resume.text2state("正常")

            file_md5 = hashlib.md5(resume_bytes).hexdigest()

            file, create = FileBlob.objects.get_or_create(
                file_md5=file_md5,
                defaults={
                    "file_name": resume_name,
                    "file_md5": file_md5,
                    "file_type": resume.resume_type,
                    "file_content": resume_bytes,
                })
            resume.resume_file = file
            resume.save()
            return ret_data(200, None, "ok")
예제 #6
0
 def post(self, request: HttpRequest):
     user_id = request.POST.get("userId")
     intent_id = request.POST.get("intentId")
     job_intent_education = request.POST.get("educational")
     job_intent_education_index = request.POST.get("educationalIndex")
     job_intent_type = request.POST.get("jobType")
     job_intent_type_index = request.POST.get("jobTypeIndex")
     job_intent_min_wages = request.POST.get("minWages")
     job_intent_max_wages = request.POST.get("maxWages")
     job_intent_major = request.POST.get("major")
     job_intent_region = request.POST.get("region")
     JobIntent.objects.update_or_create(
         pk=intent_id,
         defaults={
             "user_id": user_id,
             "job_intent_education": job_intent_education,
             "job_intent_education_index": job_intent_education_index,
             "job_intent_type": job_intent_type,
             "job_intent_type_index": job_intent_type_index,
             "job_intent_min_wages": job_intent_min_wages,
             "job_intent_max_wages": job_intent_max_wages,
             "job_intent_major": job_intent_major,
             "job_intent_region": job_intent_region
         })
     return ret_data(200, None, "ok")
예제 #7
0
 def post(self, request):
     user_name = request.POST.get("userName")
     user_id = request.POST.get("userId")
     user = User.objects.get(pk=user_id)
     user.user_name = user_name
     user.save()
     return ret_data(200, None, "ok")
예제 #8
0
 def get(self, request: HttpRequest):
     three_days_ago = datetime.datetime.now() - datetime.timedelta(days=3)
     all_positions = Position.objects.filter(position_send_time__gt=three_days_ago,
                                             company__company_state=BaseModel.text2state("正常")) \
         .order_by('-position_send_time')
     newest = get_std_job_data(all_positions)
     rt = get_value_dict(newest)
     return ret_data(200, rt, "ok")
예제 #9
0
    def get(self, request: HttpRequest):
        user_id = request.GET.get("userId")
        companies = Company.objects.filter(company_owner__user_id=user_id, company_state=BaseModel.text2state("正常")) \
            .values('company_id', 'company_name', 'company_establishment_date',
                    'company_logo_id',
                    position_count=Count('position'))

        return ret_data(200, get_value_dict(companies), "ok")
예제 #10
0
 def get(self, request: HttpRequest):
     company_id = request.GET.get("companyId")
     # 加上过滤state为删除状态
     positions = Position.objects.filter(company__company_id=company_id, position_state=BaseModel.text2state("正常")) \
         .values('company_id', 'position_id', 'position_name', 'position_min_wages',
                 'position_max_wages', 'position_tags', 'position_region',
                 resume_count=Count('positionresume'))
     return ret_data(200, get_value_dict(positions), "ok")
예제 #11
0
 def post(self, request: HttpRequest):
     question = request.POST.get("keyWord")
     start_index = int(request.POST.get("startIndex"))
     res = SearchJob(question)
     temp = SearchTemplate()
     word_type, inde = res.run()
     positions = temp.run(word_type, inde)
     all_positions = positions[start_index:start_index + 20]
     res = get_std_job_data(all_positions)
     return ret_data(200, get_value_dict(res), "ok")
예제 #12
0
 def get(self, request: HttpRequest):
     position_id = request.GET.get("positionId")
     pr_dict = PositionResume.objects.filter(position_id=position_id) \
         .exclude(position_resume_checked__exact=BaseModel.text2state("已删除")) \
         .values('user__user_name', 'position_resume_time', 'resume__resume_name',
                 'resume__resume_type', 'resume__resume_size', 'resume__resume_id',
                 'resume__resume_file') \
         .order_by("-position_resume_time")
     return ret_data(
         200, get_value_dict(get_job_value_dict(pr_dict, "resume__")), "ok")
예제 #13
0
        def post(self, request: HttpRequest):
            code = request.POST.get("jsCode")
            nick_name = request.POST.get("nickName")
            sex = request.POST.get("sex")
            avatar_url = request.POST.get("avatarUrl")

            res = get_openid(code)
            if res["state"] == 200:
                openid = res["openid"]
                obj, create = User.objects.get_or_create(
                    user_openid=openid,
                    defaults={
                        "user_openid": openid,
                        "user_nickname": nick_name,
                        "user_sex": BaseModel.text2state(sex),
                        "user_avatar_url": avatar_url,
                    })
                obj.user_sex = BaseModel.state2text(obj.user_sex)
                obj.user_openid = None
                return ret_data(status=200, data=obj.dict(), msg="ok")
            return ret_data(status=500, data={}, msg="wx server error")
예제 #14
0
        def get(self, request: HttpRequest):
            user_id = request.GET.get('userId')
            # 没登录
            if int(user_id) <= 0:
                all_positions = Position.objects.all().values(
                    'position_id', 'position_name', 'position_tags',
                    'position_region', 'position_min_wages',
                    'position_sender_position', 'position_max_wages',
                    'company__company_name', 'company__company_employees_num',
                    'company__company_financing_progress',
                    'company__company_owner__user_name',
                    'company__company_owner__user_avatar_url')
                data = {
                    "intent": None,
                    "positions": get_value_dict(all_positions),
                }
                return ret_data(200, data, "not login")

            # 登录了
            else:
                intent = JobIntent.objects.filter(user_id=user_id)
                if len(intent) > 0:
                    rec = Recommend(intent[0])
                    rec.run(user_id, 10)
                    result = rec.get_filter_positions()
                    recommend = rec.get_recommend_positions()
                    if recommend:
                        all_result = result | recommend
                    else:
                        all_result = result

                    intent = JobIntent.objects.filter(user_id=user_id)[0]
                    data = {
                        "intent": intent.dict(),
                        "positions":
                        get_value_dict(get_std_job_data(all_result)),
                    }
                    return ret_data(200, data, "logged in")
                else:
                    return ret_data(200, None, "user has no intent")
예제 #15
0
        def post(self, request: HttpRequest):
            user_id = request.POST.get("userId")
            favors = Favor.objects.filter(user__user_id=user_id, favor_state=Favor.text2state("正常")) \
                .values('position__position_id', 'position__position_name', 'position__position_tags',
                        'position__position_region', 'position__position_min_wages',
                        'position__position_sender_position', 'position__position_max_wages',
                        'position__company__company_name',
                        'position__company__company_employees_num',
                        'position__company__company_financing_progress',
                        'position__company__company_owner__user_name',
                        'position__company__company_owner__user_avatar_url')

            return ret_data(200, get_job_value_dict(favors), "ok")
예제 #16
0
        def get(self, request: HttpRequest):
            position_id = request.GET.get("positionId")
            user_id = request.GET.get("userId")

            Thread(target=self._create_or_update_history,
                   args=(position_id, user_id)).start()

            position = Position.objects.filter(pk=position_id) \
                .values('position_id', 'position_name', 'position_min_wages', 'position_max_wages', 'position_region',
                        'position_experience', 'position_education', 'company__company_owner__user_avatar_url',
                        'company__company_owner__user_name', 'company__company_name', 'position_sender_position',
                        'position_detail', 'position_tags', 'company__company_logo', 'position_detailed_location',
                        'company__company_financing_progress', 'company__company_employees_num')

            return ret_data(200, get_value_dict(position), "ok")
예제 #17
0
 def post(self, request: HttpRequest):
     position_id = request.POST.get("positionId")
     user_id = request.POST.get("userId")
     favors = Favor.objects.filter(position__position_id=position_id,
                                   user__user_id=user_id,
                                   favor_state=Favor.text2state("已删除"))
     obj, create = Favor.objects.update_or_create(
         position__position_id=position_id,
         user__user_id=user_id,
         favor_state=Favor.text2state("已删除"),
         defaults={
             "user_id": user_id,
             "favor_time": datetime.datetime.now(),
             "position_id": position_id,
             "favor_state": Favor.text2state("正常")
         })
     return ret_data(200, {"favor_id": obj.favor_id}, "ok")
예제 #18
0
 def post(self, request: HttpRequest):
     position = Position()
     position.position_name = request.POST.get("positionName")
     position.position_type = request.POST.get("jobType")
     position.position_min_wages = request.POST.get("minWages")
     position.position_max_wages = request.POST.get("maxWages")
     position.position_education = request.POST.get("minEducation")
     position.position_experience = request.POST.get("minExperience")
     position.position_region = request.POST.get("region")
     position.position_detailed_location = request.POST.get(
         "detailedLocation")
     position.position_tags = request.POST.get("choosedTags")
     position.position_sender_position = request.POST.get("senderPosition")
     position.position_detail = request.POST.get("positionDetail")
     position.company_id = request.POST.get("companyId")
     position.position_state = BaseModel.text2state("待审核")
     position.save()
     return ret_data(200, None, "ok")
예제 #19
0
 def post(self, request: HttpRequest):
     user_id = request.POST.get("userId")
     start_index = int(request.POST.get("startIndex"))
     position_resume = PositionResume.objects \
                           .filter(user__user_id=user_id) \
                           .order_by('-position_resume_time')[start_index: start_index + 20] \
         .values('position__position_id', 'position__position_name',
                 'position__position_tags', 'position__position_region',
                 'position__position_min_wages',
                 'position__position_sender_position',
                 'position__position_max_wages',
                 'position__company__company_name',
                 'position__company__company_employees_num',
                 'position__company__company_financing_progress',
                 'position__company__company_owner__user_name',
                 'position__company__company_owner__user_avatar_url',
                 'position_resume_time', 'position_resume_checked'
                 )
     return ret_data(200, get_job_value_dict(position_resume), "ok")
예제 #20
0
        def post(self, request: HttpRequest):
            position_id = request.POST.get("positionId")
            resume_id = request.POST.get("resumeId")
            user_id = request.POST.get("userId")

            obj, create = PositionResume. \
                objects.update_or_create(position__position_id=position_id,
                                         resume__resume_id=resume_id,
                                         defaults={
                                             "position_id": position_id,
                                             "resume_id": resume_id,
                                             "user_id": user_id,
                                             "position_resume_state": PositionResume.text2state("正常"),
                                             "position_resume_time": datetime.datetime.now(),
                                             "position_resume_checked": PositionResume.text2state("未读"),
                                         })
            return ret_data(200,
                            {"position_resume_id": obj.position_resume_id},
                            "ok")
예제 #21
0
 def post(self, request: HttpRequest):
     user_id = request.POST.get("userId")
     start_index = int(request.POST.get("startIndex"))
     all_histories = BrowsingHistory.objects.filter(user__user_id=user_id,
                                                    browsing_history_state=BrowsingHistory.text2state("正常")) \
                         .order_by('-browsing_history_time')[start_index: start_index + 20] \
         .values('position__position_id', 'position__position_name',
                 'position__position_tags', 'position__position_region',
                 'position__position_min_wages',
                 'position__position_sender_position',
                 'position__position_max_wages',
                 'position__company__company_name',
                 'position__company__company_employees_num',
                 'position__company__company_financing_progress',
                 'position__company__company_owner__user_name',
                 'position__company__company_owner__user_avatar_url',
                 'browsing_history_time'
                 )
     return ret_data(200, get_job_value_dict(all_histories), "ok")
예제 #22
0
 def post(self, request: HttpRequest):
     position_resume_id = request.POST.get("positionResumeId")
     position_resume = PositionResume.objects.get(pk=position_resume_id)
     position_resume.position_resume_checked = BaseModel.text2state("已删除")
     position_resume.save()
     return ret_data(200, None, "ok")
예제 #23
0
 def post(self, request: HttpRequest):
     company_id = request.POST.get("companyId")
     company = Company.objects.get(pk=company_id)
     company.company_state = BaseModel.text2state("已删除")
     company.save()
     return ret_data(200, None, "ok")
예제 #24
0
 def post(self, request: HttpRequest):
     position_id = request.POST.get("positionId")
     position = Position.objects.get(pk=position_id)
     position.position_state = BaseModel.text2state("已删除")
     position.save()
     return ret_data(200, None, "ok")
예제 #25
0
 def get(self, request: HttpRequest):
     resume_id = request.GET.get("resumeId")
     resume = Resume.objects.get(pk=resume_id)
     resume.resume_state = resume.text2state("已删除")
     resume.save()
     return ret_data(200, None, "ok")
예제 #26
0
 def post(self, request: HttpRequest):
     favor_id = request.POST.get("favorId")
     favor = Favor.objects.get(pk=favor_id)
     favor.favor_state = favor.text2state("已删除")
     favor.save()
     return ret_data(200, None, "ok")
예제 #27
0
 def get(self, request: HttpRequest):
     user_id = request.GET.get("userId")
     resumes = Resume.objects.filter(
         user_id=user_id, resume_state=Resume.text2state("正常"))
     dit = get_dict(resumes)
     return ret_data(200, dit, "ok")