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)
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', ''), }, }, })
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, }
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')] }
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')] }
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')]}
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
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')] }
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
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
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', ''), }, }, })
def post(self, request): feed = json.loads(request.body) feed = self.api_post_data(feed) result = ParseUtils.parse_related(feed) return JsonResponse(result)
def post(self, request): feed = json.loads(request.body) result = ParseUtils.parse_num(feed) return JsonResponse(result)