コード例 #1
0
    def post(self, request, resume_id=None):
        '''
        简历保存
        '''
        post_data = json.loads(request.body)
        update_resume = self.get_resume(resume_id)
        valid_result = self.__valid_post_data(post_data, update_resume)

        if valid_result['is_valid']:
            with transaction.atomic():
                resume = self.save_resume(post_data, update_resume)
                resume_id = resume.id
                # save resume to pinbot
                resume = self.get_resume(resume.id)
                resume_dict = UploadResumeUtils.get_sync_resume_dict(resume)
                PinbotResumeUtils.save(resume_dict)

            resume_dict.pop('created_at', None)
            resume_dict.pop('updated_at', None)
            resume_dict.pop('resume_id', None)
            resume_dict.pop('contact_info', None)

            ParseUtils.insert_resume(resume_dict)

            task_id = post_data.get('task_id', 0)
            task = get_object_or_none(
                Feed,
                id=task_id,
            )

            if task:
                is_valid, status = self.is_valid_task_resume(task, resume)
                if is_valid:
                    self.accept_task(task, resume)

                msg = '接受任务成功'
                resume_source = 'add_task'
            else:
                status = 'ok'
                msg = '保存成功'
                resume_source = 'edit_resume' if update_resume else 'add_resume'

            result = {
                'status': status,
                'msg': msg,
                'resume_id': resume_id,
                'resume_source': resume_source,
            }

            return JsonResponse(result)
        else:
            result = {
                'status': 'form_error',
                'msg': '表单错误',
                'errors': valid_result,
            }

            return JsonResponse(result)
コード例 #2
0
ファイル: views.py プロジェクト: EdwardBetts/myFirstProfile
    def post(self, request, resume_id=None):
        '''
        简历保存
        '''
        post_data = json.loads(request.body)
        update_resume = self.get_resume(resume_id)
        valid_result = self.__valid_post_data(post_data, update_resume)

        if valid_result['is_valid']:
            with transaction.atomic():
                resume = self.save_resume(post_data, update_resume)
                resume_id = resume.id
                # save resume to pinbot
                resume = self.get_resume(resume.id)
                resume_dict = UploadResumeUtils.get_sync_resume_dict(resume)
                PinbotResumeUtils.save(resume_dict)

            resume_dict.pop('created_at', None)
            resume_dict.pop('updated_at', None)
            resume_dict.pop('resume_id', None)
            resume_dict.pop('contact_info', None)

            ParseUtils.insert_resume(resume_dict)

            task_id = post_data.get('task_id', 0)
            task = get_object_or_none(
                Feed,
                id=task_id,
            )

            if task:
                is_valid, status = self.is_valid_task_resume(task, resume)
                if is_valid:
                    self.accept_task(task, resume)

                msg = '接受任务成功'
                resume_source = 'add_task'
            else:
                status = 'ok'
                msg = '保存成功'
                resume_source = 'edit_resume' if update_resume else 'add_resume'

            result = {
                'status': status,
                'msg': msg,
                'resume_id': resume_id,
                'resume_source': resume_source,
            }

            return JsonResponse(result)
        else:
            result = {
                'status': 'form_error',
                'msg': '表单错误',
                'errors': valid_result,
            }

            return JsonResponse(result)
コード例 #3
0
    def post(self, request):
        post_data = json.loads(request.body)
        form = FeedStep1Form(post_data)
        if not form.is_valid():
            return JsonResponse({
                'status': 'form_error',
                'msg': '表单错误',
                'errors': form.errors,
            })

        form_data = form.cleaned_data
        result = ParseUtils.parse_jd(form_data)

        data = result.get('data', {})
        return JsonResponse({
            'status': 'ok',
            'data': {
                'analyze_keywords': [i.strip() for i in data.get('keywords', []) if i.strip()],
                'analyze_job_domain': list(CompanyCategory.objects.filter(
                    category__in=data.get('job_domain', []),
                ).values('id', 'category')),
                'analyze_titles': [i.strip() for i in data.get('extend_titles', []) if i.strip()],
                'feed_extra_info': {
                    'language': data.get('language', ''),
                    'degree': data.get('degree') or 0,
                    'gender': data.get('gender', ''),
                    'major': data.get('major', ''),
                    'job_type': data.get('job_type', ''),
                },
            },
        })
コード例 #4
0
ファイル: mixin.py プロジェクト: jackyhope/myFirstProfile
    def query_api(self):
        keywords = self.request.GET.get(self.keywords_param, '')
        fields = self.request.GET.get(self.fields_param, '')

        if not keywords:
            return {}

        if fields not in ('position_title', 'company_name', 'name', 'school', 'all'):
            return {}

        resume_id_str = self.get_resume_id_str()
        query_size = self.get_resume_size(resume_id_str)
        search_params = {
            'size': query_size,
            'start': 0,
            'keywords': keywords,
            'search_fields': fields,
            'ids_list': resume_id_str
        }
        if fields == 'all':
            search_params.pop('search_fields', None)

        search_result = ParseUtils.search_resume(search_params)
        resume_data = search_result.get('data', {}).get('results', [])
        search_id_list = [i['id'] for i in resume_data if i.get('id')]
        return {
            self.resume_id_key: search_id_list,
        }
コード例 #5
0
    def get_query_keyword(self):
        keyword = self.request.GET.get('query', '')
        if not keyword:
            return {}

        user = self.request.user
        page = get_int(self.request.GET.get('page', 0))
        page = 0 if page - 1 < 0 else page - 1

        feed_id_list = UserAcceptTask.objects.filter(user=user, ).values_list(
            'feed__feed_obj_id',
            flat=True,
        )
        search_params = {
            'start': 0,
            'size': 100,
            'feed_type': 1,
            'keywords': keyword,
            'ids_list': ','.join(list(feed_id_list))
        }
        search_result = ParseUtils.search_job(search_params)
        feed_data = search_result.get('data', {}).get('results', [])
        return {
            'feed__feed_obj_id__in':
            [i['id'] for i in feed_data if i.get('id')]
        }
コード例 #6
0
ファイル: views.py プロジェクト: EdwardBetts/myFirstProfile
    def get_query_keyword(self):
        keyword = self.request.GET.get('query', '')
        if not keyword:
            return {}

        user = self.request.user
        page = get_int(self.request.GET.get('page', 0))
        page = 0 if page - 1 < 0 else page - 1

        feed_id_list = UserAcceptTask.objects.filter(
            user=user,
        ).values_list(
            'feed__feed_obj_id',
            flat=True,
        )
        search_params = {
            'start': 0,
            'size': 100,
            'feed_type': 1,
            'keywords': keyword,
            'ids_list': ','.join(list(feed_id_list))
        }
        search_result = ParseUtils.search_job(search_params)
        feed_data = search_result.get('data', {}).get('results', [])
        return {
            'feed__feed_obj_id__in': [i['id'] for i in feed_data if i.get('id')]
        }
コード例 #7
0
    def get_query_keyword(self):
        keyword = self.request.GET.get('query', '')
        if not keyword:
            return {}

        page = get_int(self.request.GET.get('page', 0))
        page = 0 if page - 1 < 0 else page - 1
        owner = self.request.user.username

        search_params = {
            'owners': owner,
            'size': 100,
            'start': 0,
            'keywords': keyword,
        }
        search_result = ParseUtils.search_resume(search_params)
        resume_data = search_result.get('data', {}).get('results', [])
        return {'resume_id__in': [i['id'] for i in resume_data if i.get('id')]}
コード例 #8
0
    def get_query_advance(self, query_cond):
        work_years = self.get_advance_work_years()
        degree = self.get_advance_degree()
        gender = self.get_advance_gender()
        age = self.get_advance_age()
        current_area = self.get_current_area()
        salary = self.get_advance_salary()

        not_query_advance = (not work_years and not degree and not gender
                             and not age and not current_area and not salary)
        if not_query_advance:
            return query_cond

        feed_oid = get_oid(self.kwargs.get('feed_id'))
        feed_resumes = list(
            FeedResult.objects.filter(
                feed=feed_oid,
                published=True,
                is_recommended=True,
            ).order_by('-display_time').limit(500).only('resume').as_pymongo())
        ids_list = [str(i['resume']) for i in feed_resumes]

        search_params = {
            'work_years': work_years,
            'degree': degree,
            'gender': gender,
            'age': age,
            'current_area': current_area,
            'salary': salary,
            'size': 100,
            'ids_list': ','.join(ids_list),
        }
        result = ParseUtils.search_resume(search_params)
        resume_data = result.get('data', {}).get('results', [])

        if result.get('status') != 'ok':
            return query_cond

        query_cond.update({
            'resume__in':
            [get_oid(i['id']) for i in resume_data if i.get('id')]
        })

        return query_cond
コード例 #9
0
ファイル: views.py プロジェクト: EdwardBetts/myFirstProfile
    def get_query_keyword(self):
        keyword = self.request.GET.get('query', '')
        if not keyword:
            return {}

        page = get_int(self.request.GET.get('page', 0))
        page = 0 if page - 1 < 0 else page - 1
        owner = self.request.user.username

        search_params = {
            'owners': owner,
            'size': 100,
            'start': 0,
            'keywords': keyword,
        }
        search_result = ParseUtils.search_resume(search_params)
        resume_data = search_result.get('data', {}).get('results', [])
        return {
            'resume_id__in': [i['id'] for i in resume_data if i.get('id')]
        }
コード例 #10
0
    def get_api_query(self):
        api_param = {}
        keywords = self.request.GET.get('resume_keywords', '')
        if keywords:
            api_param['keywords'] = keywords

        city = self.request.GET.get('city', '')
        if city:
            api_param['current_area'] = city

        expect_city = self.request.GET.get('expect_city', '')
        if expect_city:
            api_param['expectation_area'] = expect_city

        hunting_state = self.request.GET.get('job_hunting_state', '')
        if hunting_state in ('求职', '观望', '稳定', '应届'):
            api_param['job_hunting_state'] = hunting_state

        work_years = self.get_work_years()
        if work_years:
            api_param['work_years'] = work_years

        search_fields = self.request.GET.getlist('search_fields', [])
        if search_fields:
            api_param['search_fields'] = ','.join(search_fields)

        if not api_param:
            return {}

        api_param['size'] = 200
        api_param['has_contact_info'] = 'yes'
        result = ParseUtils.search_resume(api_param)
        resume_data = result.get('data', {}).get('results', [])

        if not resume_data:
            return {}

        query = {
            'resume_id__in': [i['id'] for i in resume_data if i.get('id')]
        }
        return query
コード例 #11
0
    def get_queryset(self):
        exclude_task_id_list = self.exclude_feed_id_list()

        self.init_all_citys()
        query_citys = self.get_query_citys()
        query_keywords = self.get_query_keywords()

        search_params = {
            'feed_type': 1,
            'start': 0,
            'citys': query_citys,
            'query_feed_result': True,
            'keywords': query_keywords,
            'need_company': True,
            'size': 100,
            'ids_list_nin': ','.join(exclude_task_id_list),
            'time_field_gte': 'feed_expire_time:-7',
            'default_operator': 'and',
        }

        search_result = ParseUtils.search_job(search_params)
        feed_data = search_result.get('data', {}).get('results', [])
        feed_obj_id_list = [i['id'] for i in feed_data if i.get('id')]
        now = datetime.datetime.now()

        task_query = Feed.objects.filter(
            deleted=False,
            feed_expire_time__gt=now,
            feed_obj_id__in=feed_obj_id_list,
        ).select_related(
            'company',
            'user',
        ).prefetch_related(
            'job_domain',
            'company_prefer',
            'company__category',
        )
        return task_query
コード例 #12
0
ファイル: views.py プロジェクト: EdwardBetts/myFirstProfile
    def get_queryset(self):
        exclude_task_id_list = self.exclude_feed_id_list()

        self.init_all_citys()
        query_citys = self.get_query_citys()
        query_keywords = self.get_query_keywords()

        search_params = {
            'feed_type': 1,
            'start': 0,
            'citys': query_citys,
            'query_feed_result': True,
            'keywords': query_keywords,
            'need_company': True,
            'size': 100,
            'ids_list_nin': ','.join(exclude_task_id_list),
            'time_field_gte': 'feed_expire_time:-7',
            'default_operator': 'and',
        }

        search_result = ParseUtils.search_job(search_params)
        feed_data = search_result.get('data', {}).get('results', [])
        feed_obj_id_list = [i['id'] for i in feed_data if i.get('id')]
        now = datetime.datetime.now()

        task_query = Feed.objects.filter(
            deleted=False,
            feed_expire_time__gt=now,
            feed_obj_id__in=feed_obj_id_list,
        ).select_related(
            'company',
            'user',
        ).prefetch_related(
            'job_domain',
            'company_prefer',
            'company__category',
        )
        return task_query
コード例 #13
0
    def post(self, request):
        post_data = json.loads(request.body)
        form = FeedStep1Form(post_data)
        if not form.is_valid():
            return JsonResponse({
                'status': 'form_error',
                'msg': '表单错误',
                'errors': form.errors,
            })

        form_data = form.cleaned_data
        result = ParseUtils.parse_jd(form_data)

        data = result.get('data', {})
        return JsonResponse({
            'status': 'ok',
            'data': {
                'analyze_keywords':
                [i.strip() for i in data.get('keywords', []) if i.strip()],
                'analyze_job_domain':
                list(
                    CompanyCategory.objects.filter(category__in=data.get(
                        'job_domain', []), ).values('id', 'category')),
                'analyze_titles': [
                    i.strip() for i in data.get('extend_titles', [])
                    if i.strip()
                ],
                'feed_extra_info': {
                    'language': data.get('language', ''),
                    'degree': data.get('degree') or 0,
                    'gender': data.get('gender', ''),
                    'major': data.get('major', ''),
                    'job_type': data.get('job_type', ''),
                },
            },
        })
コード例 #14
0
 def post(self, request):
     feed = json.loads(request.body)
     feed = self.api_post_data(feed)
     result = ParseUtils.parse_related(feed)
     return JsonResponse(result)
コード例 #15
0
 def post(self, request):
     feed = json.loads(request.body)
     result = ParseUtils.parse_num(feed)
     return JsonResponse(result)
コード例 #16
0
 def post(self, request):
     feed = json.loads(request.body)
     result = ParseUtils.parse_num(feed)
     return JsonResponse(result)
コード例 #17
0
 def post(self, request):
     feed = json.loads(request.body)
     feed = self.api_post_data(feed)
     result = ParseUtils.parse_related(feed)
     return JsonResponse(result)