def post(self, request): category = request.POST.get('category', '0') position_category = get_object_or_none( PositionCategory, id=category, ) if not position_category: return JsonResponse({ 'status': 'form_error', 'msg': '请选择正确的职位类别', 'data': { 'category': category, } }) category_tag = request.POST.getlist('tag[]', '') tag = [ get_object_or_none( PositionCategoryTag, id=t, category=position_category ) for t in category_tag ] tag = [t for t in tag if t] if not tag: return JsonResponse({ 'status': 'form_error', 'msg': '请选择正确的标签', 'data': { 'category_tag': category_tag, }, }) resume = self.get_user_resume() with transaction.atomic(): resume.job_category = position_category resume.save() resume.position_tags.filter().delete() code_name_list = [] for t in tag: if t.name in code_name_list: continue resume_tag = ResumePositionTag( resume=resume, position_tag=t, ) resume_tag.save() code_name_list.append(t.name) return JsonResponse({ 'status': 'ok', 'msg': '修改成功', })
def post(self, request): category = request.POST.get('category', '0') position_category = get_object_or_none( PositionCategory, id=category, ) if not position_category: return JsonResponse({ 'status': 'form_error', 'msg': '请选择正确的职位类别', 'data': { 'category': category, } }) category_tag = request.POST.getlist('tag[]', '') tag = [ get_object_or_none(PositionCategoryTag, id=t, category=position_category) for t in category_tag ] tag = [t for t in tag if t] if not tag: return JsonResponse({ 'status': 'form_error', 'msg': '请选择正确的标签', 'data': { 'category_tag': category_tag, }, }) resume = self.get_user_resume() with transaction.atomic(): resume.job_category = position_category resume.save() resume.position_tags.filter().delete() code_name_list = [] for t in tag: if t.name in code_name_list: continue resume_tag = ResumePositionTag( resume=resume, position_tag=t, ) resume_tag.save() code_name_list.append(t.name) return JsonResponse({ 'status': 'ok', 'msg': '修改成功', })
def post(self, request): city_list = request.POST.getlist('city[]', []) resume = self.get_user_resume() city = [get_object_or_none(City, id=get_int(c)) for c in city_list] if not city or None in city: return JsonResponse({ 'status': 'form_error', 'msg': '请选择正确的城市', 'data': { 'city': city_list, } }) with transaction.atomic(): ResumeTargetCity.objects.filter( resume=resume ).delete() for c in city: target_city = ResumeTargetCity( resume=resume, city=c, ) target_city.save() return JsonResponse({ 'status': 'ok', 'msg': 'ok', 'data': { 'city': city_list, } })
def company_card_interest(cls, job, job_id, interest_type): job_id = get_int(job_id) if not job_id: return False company_card_job = get_object_or_none( CompanyCardJob, job=job, id=job_id, status='waiting', ) if not company_card_job: return False now = datetime.datetime.now() if interest_type == 1: company_card_job.status = 'accept' else: company_card_job.status = 'reject' company_card_job.action_time = now company_card_job.save() return company_card_job
def get_last_week_report(self): last_week_report = get_object_or_none( WeekReport, start_date=self.last_start_date, end_date=self.last_end_date + datetime.timedelta(days=-1), ) return last_week_report
def check_in_result(self): username = self.cleaned_data['username'] password = self.cleaned_data['password'] user = get_object_or_none( User, username=username, ) if not user: user_profile = self.save() self.send_active_email(user_profile.user) return { 'status': 'register_success', 'msg': u'注册成功', } auth_user = authenticate(username=username, password=password) if auth_user: login(self.request, auth_user) return { 'status': 'ok', 'msg': u'登录成功', } else: return { 'status': 'passwd_error', 'msg': u'密码错误', }
def get_context_data(self, **kwargs): context = super(RecommendJobList, self).get_context_data(**kwargs) data = context.get('data', []) user = self.request.user for job in data: company_id = job['job__company__id'] has_favour = True if get_object_or_none( UserFavourCompany, company__id=company_id, user=user, ) else False job['has_favour'] = has_favour job['job__company__url'] = get_http_url(job['job__company__url']) job['job__company__product_url'] = get_http_url(job['job__company__product_url']) company_query = Company.objects.filter( id=company_id ) if not company_query: job['company_category'] = [] continue company = company_query[0] job['company_category'] = list(company.category.all().values_list('category', flat=True)) job['job_welfare'] = [i for i in job['job__job_welfare'].split(',') if i] context['resume_tag'] = self.get_resume_tag() return context
def get(self, request, card_id): user = request.user card_job = get_object_or_none( CompanyCardJob, user=user, id=card_id, ) if card_job: card_job.status = self.action try: JobUtils.card_feedback(card_job, self.action) except CompanyCardInterestExeception: logger.error( 'company card interst error', exc_info=True, extra={ 'request': request, } ) return JsonResponse({ 'status': 'exception', 'msg': '网络错误, 请稍后再试' }) card_job.save() NotifyUtils.card_job_notify(card_job, self.action) return JsonResponse({ 'status': 'ok', 'msg': self.msg, })
def get_card_context(self, job, job_type='job'): ''' 为了兼容Feed和企业名片 job_type: job是企业名片 feed 是专属定制 ''' user = self.request.user return { 'pinbot_recommend': job.company.pinbot_recommend if job.company else '', 'key_points': job.company.key_points if job.company else '', 'company_desc': job.company.desc if job.company else '', 'company_name': job.company.company_name if job.company else '', 'address': job.address if job_type == 'job' else job.expect_area, 'title': job.title, 'salary_low': job.salary_low if job_type == 'job' else job.salary_min, 'salary_high': job.salary_high if job_type == 'job' else job.salary_max, 'desc': job.desc if job_type == 'job' else job.job_desc, 'skill_desc': job.skill_desc if job_type == 'job' else job.skill_required, 'product_url': get_http_url(job.company.product_url) if job.company else '', 'url': get_http_url(job.company.url) if job.company else '', 'company_stage': job.company.url if job.company else '', 'company_category': [i.category for i in job.company.category.all()] if job.company else [], 'company_id': job.company.id if job.company else '', 'company_favour_count': job.company.favour_count if job.company else '', 'has_favour': True if job.company and get_object_or_none(UserFavourCompany, company__id=job.company.id, user=user) else False, 'job_welfare': [] if job_type == 'job' else [i for i in job.job_welfare.split(',') if i], }
def post(self, request): category = request.POST.get('category') position_category = get_object_or_none( PositionCategory, id=category, ) if not position_category: return JsonResponse({ 'status': 'form_error', 'msg': '请选择正确的职位类别', 'data': { 'category': category, } }) resume = self.get_user_resume() with transaction.atomic(): resume.job_category = position_category resume.save() resume.position_tags.filter( ~Q(position_tag__category=position_category) ).delete() return JsonResponse({ 'status': 'ok', 'msg': 'ok', 'data': { 'category': category, } })
def post(self, request): city_list = request.POST.getlist('city[]', []) resume = self.get_user_resume() city = [get_object_or_none(City, id=get_int(c)) for c in city_list] if not city or None in city: return JsonResponse({ 'status': 'form_error', 'msg': '请选择正确的城市', 'data': { 'city': city_list, } }) with transaction.atomic(): ResumeTargetCity.objects.filter(resume=resume).delete() for c in city: target_city = ResumeTargetCity( resume=resume, city=c, ) target_city.save() return JsonResponse({ 'status': 'ok', 'msg': 'ok', 'data': { 'city': city_list, } })
def post(self, request): category = request.POST.get('category') position_category = get_object_or_none( PositionCategory, id=category, ) if not position_category: return JsonResponse({ 'status': 'form_error', 'msg': '请选择正确的职位类别', 'data': { 'category': category, } }) resume = self.get_user_resume() with transaction.atomic(): resume.job_category = position_category resume.save() resume.position_tags.filter(~Q( position_tag__category=position_category)).delete() return JsonResponse({ 'status': 'ok', 'msg': 'ok', 'data': { 'category': category, } })
def post(self, request): field_id_list = request.POST.getlist('field_id_list[]', '') fields = [ get_object_or_none(CompanyCategory, id=t, brick_display=True) for t in field_id_list ] if not fields or None in fields: return JsonResponse({ 'status': 'form_error', 'msg': '请选择正确的标签', 'data': { 'field_id_list': field_id_list, }, }) resume = self.get_user_resume() with transaction.atomic(): ResumePreferField.objects.filter( resume=resume ).delete() for f in fields: resume_fields = ResumePreferField( resume=resume, category=f, ) resume_fields.save() return JsonResponse({ 'status': 'ok', 'msg': 'ok', 'data': { 'prefer_fields': field_id_list, }, })
def post(self, request): field_id_list = request.POST.getlist('field_id_list[]', '') fields = [ get_object_or_none(CompanyCategory, id=t, brick_display=True) for t in field_id_list ] if not fields or None in fields: return JsonResponse({ 'status': 'form_error', 'msg': '请选择正确的标签', 'data': { 'field_id_list': field_id_list, }, }) resume = self.get_user_resume() with transaction.atomic(): ResumePreferField.objects.filter(resume=resume).delete() for f in fields: resume_fields = ResumePreferField( resume=resume, category=f, ) resume_fields.save() return JsonResponse({ 'status': 'ok', 'msg': 'ok', 'data': { 'prefer_fields': field_id_list, }, })
def get(self, request, activation_key): user_token = get_object_or_none( UserToken, token=activation_key, active=True, token_type='register', ) if user_token and user_token.user.brick_user_profile.is_active: return render( request, self.template, { 'status': 'already_active', 'msg': u'您已激活邮箱,请继续登陆', } ) if not user_token: return render( request, self.template, { 'status': 'token_error', 'msg': u'无效的激活链接', } ) user = user_token.user if not default_token_generator.check_token( user, user_token.token): return render( request, self.template, { 'status': 'token_expire', 'msg': u'链接已失效', 'user': user, } ) with transaction.atomic(): user.is_active = True user_token.active = False user.brick_user_profile.is_active = True user.save() user_token.save() user.brick_user_profile.save() return render( request, self.template, { 'status': 'success', 'msg': u'激活成功', }, )
def get_social_page(self, resume): social_page = get_object_or_none( SocialPage, resume=resume, ) if not social_page: social_page = SocialPage(resume=resume) social_page.save() return social_page
def get_social_page(self, resume): social_page = get_object_or_none( SocialPage, resume=resume, ) if not social_page: social_page = SocialPage( resume=resume ) social_page.save() return social_page
def get(self, request): category = request.GET.get('category', '0') position_category = get_object_or_none( PositionCategory, id=category, ) if not position_category: return JsonResponse({ 'status': 'form_error', 'msg': '请选择正确的职位类别', 'data': { 'category': category, } }) resume = self.get_user_resume() resume_tag = resume.position_tags.filter().values( 'position_tag__id', ) category_tag_query = PositionCategoryTag.objects.filter( category=position_category, parent=None, ).prefetch_related( 'child_tags', ) category_tag = [ { 'id': c.id, 'name': c.name, 'child': [ { 'id': ct.id, 'name': ct.name, } for ct in list(c.child_tags.all())], } for c in list(category_tag_query) ] return JsonResponse({ 'status': 'ok', 'msg': 'ok', 'data': { 'resume_tag': list(resume_tag), 'category_tag': list(category_tag), 'previous_tag': { 'id': position_category.id, 'name': position_category.name, 'level': 1, }, } })
def add_chat(cls, job_card, hr_user, user, chat_type='job'): if chat_type == 'job': chat = get_object_or_none( Chat, job_hunter=user, hr=hr_user, job=job_card, ) if not chat: resume = ResumeUtils.get_resume(user) chat = Chat( job_hunter=user, hr=hr_user, job=job_card, resume=resume, ) chat.save() else: chat = get_object_or_none( Chat, job_hunter=user, hr=hr_user, feed=job_card, chat_type=chat_type, ) if not chat: resume = ResumeUtils.get_resume(user) chat = Chat( job_hunter=user, hr=hr_user, feed=job_card, resume=resume, chat_type=chat_type, ) chat.save() return chat
def clean_invite_code(self): code = self.cleaned_data['invite_code'] if code in self.SPECIAL_CODE: # special code must valid code and apply email # because those code are duplicate email = self.data['username'] invite_code = get_object_or_none( InviteCodeApply, email=email, invite_code=code, status='success', ) if not invite_code: raise forms.ValidationError('邀请码必须跟申请邀请码邮箱一致') else: invite_code = get_object_or_none(InviteCode, code=code, status='unused') if not invite_code: raise forms.ValidationError('邀请码不正确!') return code
def clean_invite_code(self): code = self.cleaned_data['invite_code'] if code in self.SPECIAL_CODE: # special code must valid code and apply email # because those code are duplicate email = self.data['username'] invite_code = get_object_or_none( InviteCodeApply, email=email, invite_code=code, status='success', ) if not invite_code: raise forms.ValidationError('邀请码必须跟申请邀请码邮箱一致') else: invite_code = get_object_or_none( InviteCode, code=code, status='unused' ) if not invite_code: raise forms.ValidationError('邀请码不正确!') return code
def clean_username(self): username = self.cleaned_data['username'].lower() if error_email(username): raise forms.ValidationError('请输入正确格式的邮箱!') self.user = get_object_or_none(User, username=username) try: brick_profile = self.user.brick_user_profile if self.user else None except UserProfile.DoesNotExist: brick_profile = None if brick_profile: raise forms.ValidationError('用户名已存在') return username
def get(self, request): category = request.GET.get('category', '0') position_category = get_object_or_none( PositionCategory, id=category, ) if not position_category: return JsonResponse({ 'status': 'form_error', 'msg': '请选择正确的职位类别', 'data': { 'category': category, } }) resume = self.get_user_resume() resume_tag = resume.position_tags.filter().values('position_tag__id', ) category_tag_query = PositionCategoryTag.objects.filter( category=position_category, parent=None, ).prefetch_related('child_tags', ) category_tag = [{ 'id': c.id, 'name': c.name, 'child': [{ 'id': ct.id, 'name': ct.name, } for ct in list(c.child_tags.all())], } for c in list(category_tag_query)] return JsonResponse({ 'status': 'ok', 'msg': 'ok', 'data': { 'resume_tag': list(resume_tag), 'category_tag': list(category_tag), 'previous_tag': { 'id': position_category.id, 'name': position_category.name, 'level': 1, }, } })
def get(self, request, job_id): user = self.request.user now = datetime.datetime.now() recommend_job = get_object_or_none( RecommendJob, id=job_id, user=user, ) if not recommend_job: return JsonResponse({ 'status': 'data_error', 'msg': u'数据有误', }) if self.action == 'send': resume = ResumeUtils.get_resume(user) if not SyncResume.is_valid_resume(resume): return JsonResponse({ 'status': 'valid_resume', 'msg': '简历不全', 'redirect_url': '%s?send=True' % reverse('resume-show-resume'), 'operation': self.action, }) job = recommend_job.job with transaction.atomic(): need_add_times = (recommend_job.read_status == 'unread') recommend_job.read_status = 'read' recommend_job.action = self.action recommend_job.action_time = now recommend_job.company_action_time = now recommend_job.save() self.extra_operation(job, recommend_job) if need_add_times: self.add_reco_times() return JsonResponse({ 'status': 'ok', 'msg': self.msg, 'operation': self.action, })
def clean_username(self): username = self.cleaned_data['username'].lower() if error_email(username): raise forms.ValidationError('请输入正确格式的邮箱!') self.user = get_object_or_none( User, username=username ) try: brick_profile = self.user.brick_user_profile if self.user else None except UserProfile.DoesNotExist: brick_profile = None if brick_profile: raise forms.ValidationError('用户名已存在') return username
def post(self, request, token): user_token = get_object_or_none( UserToken, token=token, active=True, token_type='reset', ) if not user_token: return JsonResponse({ 'status': 'token_error', 'msg': u'无效的链接', }) user = user_token.user if not default_token_generator.check_token( user, user_token.token): return JsonResponse({ 'status': 'token_expire', 'msg': u'链接已失效', }) form = ResetPasswordForm(request.POST, user=user) if form.is_valid(): with transaction.atomic(): form.change_user_password() user_token.active = False user_token.save() return JsonResponse({ 'status': 'ok', 'msg': u'修改成功', }) else: return JsonResponse({ 'status': 'form_error', 'msg': '表单错误', 'errors': form.errors, })
def get(self, request): username = self.request.GET.get('username', '') if error_email(username): return JsonResponse({ 'status': 'form_error', 'msg': '邮件格式错误', }) user = get_object_or_none( User, username=username ) if not user: return JsonResponse({ 'status': 'ok', 'msg': '可以使用', }) try: brick_profile = user.brick_user_profile except UserProfile.DoesNotExist: brick_profile = None if brick_profile: return JsonResponse({ 'status': 'user_exists', 'msg': '该邮箱已存在,请直接', }) if user and not brick_profile: return JsonResponse({ 'status': 'company_user', 'msg': '你已是企业版用户,输入邀请码即可', }) return JsonResponse({ 'status': 'ok', 'msg': '可以使用', })
def send_company_card(cls, hr_user, job, resume_id, token): if not resume_id: return False resume = get_object_or_none( Resume, resume_id=resume_id, ) not_need_send = (not resume or resume.user == hr_user) if not_need_send: return False company_card_job = CompanyCardJob( job=job, hr_user=hr_user, user=resume.user, token=token, ) company_card_job.save() return company_card_job
def week_report_task(self): self.init_date() self.init_last_date() week_report = get_object_or_none( WeekReport, start_date=self.start_date, end_date=self.end_date + datetime.timedelta(days=-1), ) if not week_report: week_report = WeekReport( start_date=self.start_date, end_date=self.end_date + datetime.timedelta(days=-1), ) self.week_report_count(week_report) self.remain_user_percent(week_report) self.week_report_chain(week_report) week_report.save() return week_report
def post(self, request): tag_id = request.POST.get('tag_id', '0') tag = get_object_or_none( PositionCategoryTag, id=tag_id, ) if not tag: return JsonResponse({ 'status': 'form_error', 'msg': '请选择正确的标签', }) resume = self.get_user_resume() job_category = resume.job_category if not job_category: return JsonResponse({ 'status': 'data_error', 'msg': 'no job category', }) has_tag = resume.position_tags.filter( position_tag__name=tag.name ) if not has_tag: resume_tag = ResumePositionTag( resume=resume, position_tag=tag, ) resume_tag.save() return JsonResponse({ 'status': 'ok', 'msg': '添加成功', 'data': [ { 'name': t.position_tag.name, 'id': t.id, } for t in resume.position_tags.all() ], })
def get(self, request, company_id): company = get_object_or_none( Company, id=company_id, ) if not company: return JsonResponse({ 'status': 'data_error', 'msg': '数据有误', }) user = request.user fav_record = UserFavourCompany.objects.filter( company=company, user=user, ) if fav_record: fav_record.delete() company.favour_count -= 1 action = 'cancel' else: fav_record = UserFavourCompany( company=company, user=user, ) fav_record.save() company.favour_count += 1 action = 'favour' company.save() return JsonResponse({ 'status': 'ok', 'msg': '操作成功', 'data': { 'action': action, } })
def get(self, request, token): user_token = get_object_or_none( UserToken, token=token, active=True, token_type='reset', ) if not user_token: return render( request, self.template, { 'status': 'token_error', 'msg': u'无效的链接', } ) return render( request, self.template, {}, )
def daily_report_task(self): ''' C端每天运营数据 凌晨1点开始跑 ''' self.init_date() daily_report = get_object_or_none( DailyReport, report_date=self.YESTERDAY, ) if not daily_report: daily_report = DailyReport( report_date=self.YESTERDAY, ) self.invite_code_report(daily_report) self.user_report(daily_report) self.job_report(daily_report) self.favour_company_report(daily_report) daily_report.save() return daily_report
def post(self, request): tag_id = request.POST.get('tag_id', '0') tag = get_object_or_none( PositionCategoryTag, id=tag_id, ) if not tag: return JsonResponse({ 'status': 'form_error', 'msg': '请选择正确的标签', }) resume = self.get_user_resume() job_category = resume.job_category if not job_category: return JsonResponse({ 'status': 'data_error', 'msg': 'no job category', }) has_tag = resume.position_tags.filter(position_tag__name=tag.name) if not has_tag: resume_tag = ResumePositionTag( resume=resume, position_tag=tag, ) resume_tag.save() return JsonResponse({ 'status': 'ok', 'msg': '添加成功', 'data': [{ 'name': t.position_tag.name, 'id': t.id, } for t in resume.position_tags.all()], })
def get(self, request, email): user_profile = get_object_or_none( UserProfile, user__username=email, ) if not user_profile: return JsonResponse({ 'status': 'not_found_user', 'msg': u'用户不存在!', }) if self.malice_ip(): return JsonResponse({ 'status': 'malice', 'msg': u'操作太频繁啦,稍后再试试!' }) user = user_profile.user mail_result = self.send_active_email(user) return JsonResponse({ 'status': 'ok', 'msg': u'发送成功!', 'mail_result': mail_result, })
def post(self, request): resume = self.get_user_resume() job_category = resume.job_category if not job_category: return JsonResponse({ 'status': 'no_category', 'msg': '没有选择职位类别', 'data': {}, }) category_tag = request.POST.getlist('tag[]', '') tag = [ get_object_or_none(PositionCategoryTag, id=t) for t in category_tag ] if not tag or None in tag: return JsonResponse({ 'status': 'form_error', 'msg': '请选择正确的标签', 'data': { 'category_tag': category_tag, }, }) with transaction.atomic(): ResumePositionTag.objects.filter(resume=resume).delete() code_name_list = [] for t in tag: if t.name in code_name_list: continue resume_tag = ResumePositionTag( resume=resume, position_tag=t, ) resume_tag.save() code_name_list.append(t.name) if len(tag) == 1: child_tags = tag[0].child_tags.all().values( 'id', 'name', ) previous_tag = { 'id': tag[0].id, 'name': tag[0].name, } else: child_tags = [] previous_tag = {} resume_tag = resume.position_tags.filter().values('position_tag__id', ) return JsonResponse({ 'status': 'ok', 'msg': 'ok', 'data': { 'category_tag': list(child_tags), 'resume_tag': list(resume_tag), 'previous_tag': previous_tag, } })
def post(self, request): resume = self.get_user_resume() job_category = resume.job_category if not job_category: return JsonResponse({ 'status': 'no_category', 'msg': '没有选择职位类别', 'data': { }, }) category_tag = request.POST.getlist('tag[]', '') tag = [ get_object_or_none(PositionCategoryTag, id=t) for t in category_tag ] if not tag or None in tag: return JsonResponse({ 'status': 'form_error', 'msg': '请选择正确的标签', 'data': { 'category_tag': category_tag, }, }) with transaction.atomic(): ResumePositionTag.objects.filter( resume=resume ).delete() code_name_list = [] for t in tag: if t.name in code_name_list: continue resume_tag = ResumePositionTag( resume=resume, position_tag=t, ) resume_tag.save() code_name_list.append(t.name) if len(tag) == 1: child_tags = tag[0].child_tags.all().values( 'id', 'name', ) previous_tag = { 'id': tag[0].id, 'name': tag[0].name, } else: child_tags = [] previous_tag = {} resume_tag = resume.position_tags.filter().values( 'position_tag__id', ) return JsonResponse({ 'status': 'ok', 'msg': 'ok', 'data': { 'category_tag': list(child_tags), 'resume_tag': list(resume_tag), 'previous_tag': previous_tag, } })