Пример #1
0
    def clean_phone(self):
        '''
        判断简历重复需要从上传简历和简历库判断
        新录入简历判断重复,直接从pinbot简历库ContactInfoData里判断是否存在,
        即没有录入简历UploadResume并且ContactInfoData不存在才能通过

        编辑简历判断重复,如果用户编辑的简历联系信息是自己上传的简历UploadResume即可以录入
        如果用户编辑的简历联系信息不存在,并且不在聘宝简历库中,与新简历信息录入判断逻辑一
        致
        '''

        phone = self.cleaned_data['phone']
        if error_phone(phone):
            raise forms.ValidationError('电话号码有误,请填写正确格式的电话号码')

        has_phone_resume = UploadResume.objects.filter(
            phone=phone
        ).values_list('id', flat=True)

        has_contact_phone = ContactInfoData.objects.filter(
            phone=phone
        ).exists()

        if not has_phone_resume and not has_contact_phone:
            return phone

        if self.resume and self.resume.id in has_phone_resume:
            return phone

        raise forms.ValidationError('电话已经存在,请重新填写')
Пример #2
0
    def clean_phone(self):
        '''
        判断简历重复需要从上传简历和简历库判断
        新录入简历判断重复,直接从pinbot简历库ContactInfoData里判断是否存在,
        即没有录入简历UploadResume并且ContactInfoData不存在才能通过

        编辑简历判断重复,如果用户编辑的简历联系信息是自己上传的简历UploadResume即可以录入
        如果用户编辑的简历联系信息不存在,并且不在聘宝简历库中,与新简历信息录入判断逻辑一
        致
        '''

        phone = self.cleaned_data['phone']
        if error_phone(phone):
            raise forms.ValidationError('电话号码有误,请填写正确格式的电话号码')

        has_phone_resume = UploadResume.objects.filter(
            phone=phone).values_list('id', flat=True)

        has_contact_phone = ContactInfoData.objects.filter(
            phone=phone).exists()

        if not has_phone_resume and not has_contact_phone:
            return phone

        if self.resume and self.resume.id in has_phone_resume:
            return phone

        raise forms.ValidationError('电话已经存在,请重新填写')
Пример #3
0
    def clean_phone(self):
        phone = self.data['phone']

        if error_phone(phone):
            raise forms.ValidationError(
                u'电话号码格式错误,请填写正确的手机号'
            )
        return phone
Пример #4
0
    def clean_phone(self):
        phone = self.data['phone']

        if error_phone(phone):
            raise forms.ValidationError(
                u'电话号码格式错误,请填写正确的手机号或者座机号,<br />如:18042412009,07735422199,40000001111'
            )
        return phone
Пример #5
0
    def clean_phone(self):
        phone = self.cleaned_data['phone']
        if error_phone(phone):
            raise forms.ValidationError('电话号码有误,请填写正确格式的电话号码')

        if PinbotAccount.is_phone_bind(mobile=phone):
            raise forms.ValidationError('该手机号%s已被注册,请使用其他手机号注册!' % (phone))

        return phone
Пример #6
0
    def clean_phone(self):
        phone = self.cleaned_data['phone']
        if error_phone(phone):
            raise forms.ValidationError('电话号码有误,请填写正确格式的电话号码')

        if PinbotAccount.is_phone_bind(mobile=phone):
            raise forms.ValidationError('该手机号%s已被注册,请使用其他手机号注册!' % (phone))

        return phone
Пример #7
0
    def post(self, request):
        post_data = request.JSON
        mobile = post_data.get('mobile')
        code = post_data.get('code')
        password = post_data.get('password')
        re_password = post_data.get('re_password')

        if not error_phone(mobile) and not PinbotAccount.is_phone_bind(
                mobile=mobile):
            return JsonResponse({
                'status': 'error',
                'msg': '手机号未绑定,不能登录',
                'errors': {
                    "phone": ['手机号未绑定,不能登录']
                }
            })

        if password != re_password:
            return JsonResponse({
                'status': 'error',
                'msg': '前后密码不一致',
                'errors': {
                    "password": ['前后密码不一致']
                }
            })

        if not SmsCode.vaild_sms_code(
                mobile=mobile, code=code, action_name='ChangePwd'):
            return JsonResponse({
                'status': 'error',
                'msg': '短信验证码错误',
                'errors': {
                    "code": ['短信验证码错误']
                }
            })
        user_profile = PinbotAccount.get_profile(phone=mobile,
                                                 is_phone_bind=True)
        if not user_profile:
            return JsonResponse({
                'status': 'error',
                'msg': '账号错误',
                'errors': {
                    "phone": ['账号错误']
                }
            })

        if not PinbotAccount.change_user_pwd(user_id=user_profile.user.id,
                                             password=password):
            return JsonResponse({
                'status': 'error',
                'msg': '修改密码错误,请重试或者联系管理员!'
            })

        return JsonResponse({'status': 'ok', 'msg': '修改密码成功!'})
Пример #8
0
    def post(self, request):
        post_data = request.JSON
        mobile = post_data.get('mobile')
        code = post_data.get('code')
        password = post_data.get('password')
        re_password = post_data.get('re_password')

        if not error_phone(mobile) and not PinbotAccount.is_phone_bind(mobile=mobile):
            return JsonResponse(
                {
                    'status': 'error',
                    'msg': '手机号未绑定,不能登录',
                    'errors': {
                        "phone": [
                            '手机号未绑定,不能登录'
                        ]
                    }
                }
            )

        if password != re_password:
            return JsonResponse(
                {
                    'status': 'error',
                    'msg': '前后密码不一致',
                    'errors': {
                        "password": [
                            '前后密码不一致'
                        ]
                    }
                }
            )

        if not SmsCode.vaild_sms_code(
            mobile=mobile,
            code=code,
            action_name='ChangePwd'
        ):
            return JsonResponse(
                {
                    'status': 'error',
                    'msg': '短信验证码错误',
                    'errors': {
                        "code": [
                            '短信验证码错误'
                        ]
                    }
                }
            )
        user_profile = PinbotAccount.get_profile(phone=mobile, is_phone_bind=True)
        if not user_profile:
            return JsonResponse(
                {
                    'status': 'error',
                    'msg': '账号错误',
                    'errors': {
                        "phone": [
                            '账号错误'
                        ]
                    }
                }
            )

        if not PinbotAccount.change_user_pwd(
            user_id=user_profile.user.id,
            password=password
        ):
            return JsonResponse(
                {
                    'status': 'error',
                    'msg': '修改密码错误,请重试或者联系管理员!'
                }
            )

        return JsonResponse(
            {
                'status': 'ok',
                'msg': '修改密码成功!'
            }
        )
Пример #9
0
    def post(self, request):

        if self.malice_ip():
            return JsonResponse(
                {
                    'status': 'error',
                    'msg': '错误次数太多,请稍后再试',
                    'errors': {
                        "username": [
                            '错误次数太多,请稍后再试'
                        ]
                    }
                }
            )

        post_data = request.JSON
        username = post_data.get('username')
        password = post_data.get('password')

        next_url = post_data.get('next', reverse('special-feed-page'))

        if not error_phone(username) and not PinbotAccount.is_phone_bind(mobile=username):
            return JsonResponse(
                {
                    'status': 'error',
                    'msg': '手机号未绑定,不能登录',
                    'errors': {
                        "username": [
                            '手机号未绑定,不能登录'
                        ]
                    }
                }
            )

        user = authenticate(
            username=username,
            password=password
        )
        if not user:
            return JsonResponse(
                {
                    'status': 'error',
                    'msg': '登陆失败,用户名或密码错误',
                    'errors': {
                        "username": [
                            '登陆失败,用户名或密码错误'
                        ]
                    }
                }
            )

        if not hasattr(user, 'userprofile'):
            return JsonResponse({
                'status': 'error',
                'msg': '请使用新的企业邮箱重新注册聘宝企业端',
                'errors': {
                    "username": [
                        '请使用新的企业邮箱重新注册聘宝企业端',
                    ]
                }
            })

        redirect_url = get_valid_next_url(next_url)
        login(request, user)
        self.clean_malice()

        industrys = user.company_set.all().values_list('category__industry__code_name', flat=True)
        user_industry = industrys[0] if len(industrys) > 0 else ''

        if user_industry == 'medicine':
            redirect_url = reverse('new_field_attent')

        return JsonResponse(
            {
                'status': 'ok',
                'msg': '登陆成功',
                'username': user.username,
                'redirect_url': redirect_url,
                'user_industry': user_industry
            }
        )
Пример #10
0
def send_interview_alarm():
    sms_notify_meta = u'【聘宝招聘】面试提醒:您安排了%(time)s,%(name)s的%(position_title)s职位面试,建议您再次与候选人确认面试信息,详细链接:%(url)s。祝面试顺利!'
    html_notify_meta = u'面试提醒:您安排了%(time)s,%(name)s的%(position_title)s职位面试,建议您再次与候选人确认面试信息。!'

    now = datetime.datetime.now()
    notify_end_time = now + datetime.timedelta(hours=2)

    alarms = InterviewAlarm.objects.select_related(
        'buy_record',
        'buy_record__user',
        'buy_record__user__userprofile',
    ).filter(
        has_alarm=False,
        interview_time__gte=now,
        interview_time__lte=notify_end_time,
    )

    resume_id_list = [alarm.buy_record.resume_id for alarm in alarms if alarm.buy_record.resume_id]
    resume_data_mapper = get_resume_mapper(resume_id_list)
    contactinfo_mapper = get_contactinfo_mapper(resume_id_list)

    for alarm in alarms:
        user = alarm.buy_record.user
        if not hasattr(user, 'userprofile'):
            continue

        resume_id = alarm.buy_record.resume_id
        interview_time = alarm.interview_time.strftime('%Y-%m-%d %H:%M')
        name = contactinfo_mapper.get(resume_id, '')
        position_title = resume_data_mapper.get(resume_id, '')
        userprofile = user.userprofile
        phone = userprofile.phone

        if not error_phone(phone):
            resume_url = 'http://www.pinbot.me/resumes/display/%s' % resume_id
            sms_notify = sms_notify_meta % {
                'time': interview_time,
                'name': name,
                'position_title': position_title,
                'url': resume_url,
            }
            asyn_send_sms(phone, sms_notify)

        html_notify = html_notify_meta % {
            'time': interview_time,
            'name': name,
            'position_title': position_title,
        }

        html_url = '/resumes/display/%s' % resume_id
        notify.send(
            user,
            recipient=user,
            verb='%s(<a class="c0091fa" href="%s">查看详情</a>)' % (html_notify, html_url),
            user_role='hr',
            notify_type='interview_alarm_notify',
        )
        alarm.has_alarm = True
        alarm.save()

    return True
Пример #11
0
 def clean_phone(self):
     phone = self.cleaned_data['phone']
     if error_phone(phone):
         raise forms.ValidationError('电话号码有误,请填写正确格式的电话号码')
     return phone
Пример #12
0
    def post(self, request):

        if self.malice_ip():
            return JsonResponse({
                'status': 'error',
                'msg': '错误次数太多,请稍后再试',
                'errors': {
                    "username": ['错误次数太多,请稍后再试']
                }
            })

        post_data = request.JSON
        username = post_data.get('username')
        password = post_data.get('password')

        next_url = post_data.get('next', reverse('special-feed-page'))

        if not error_phone(username) and not PinbotAccount.is_phone_bind(
                mobile=username):
            return JsonResponse({
                'status': 'error',
                'msg': '手机号未绑定,不能登录',
                'errors': {
                    "username": ['手机号未绑定,不能登录']
                }
            })

        user = authenticate(username=username, password=password)
        if not user:
            return JsonResponse({
                'status': 'error',
                'msg': '登陆失败,用户名或密码错误',
                'errors': {
                    "username": ['登陆失败,用户名或密码错误']
                }
            })

        if not hasattr(user, 'userprofile'):
            return JsonResponse({
                'status': 'error',
                'msg': '请使用新的企业邮箱重新注册聘宝企业端',
                'errors': {
                    "username": [
                        '请使用新的企业邮箱重新注册聘宝企业端',
                    ]
                }
            })

        redirect_url = get_valid_next_url(next_url)
        login(request, user)
        self.clean_malice()

        industrys = user.company_set.all().values_list(
            'category__industry__code_name', flat=True)
        user_industry = industrys[0] if len(industrys) > 0 else ''

        if user_industry == 'medicine':
            redirect_url = reverse('new_field_attent')

        return JsonResponse({
            'status': 'ok',
            'msg': '登陆成功',
            'username': user.username,
            'redirect_url': redirect_url,
            'user_industry': user_industry
        })
Пример #13
0
 def clean_phone(self):
     phone = self.cleaned_data["phone"]
     if error_phone(phone):
         raise forms.ValidationError("电话号码有误,请填写正确格式的电话号码")
     return phone
Пример #14
0
 def clean_phone(self):
     phone = self.cleaned_data['phone']
     if error_phone(phone):
         raise forms.ValidationError('电话号码有误,请填写正确格式的电话号码')
     return phone
Пример #15
0
def send_interview_alarm():
    sms_notify_meta = u'【聘宝招聘】面试提醒:您安排了%(time)s,%(name)s的%(position_title)s职位面试,建议您再次与候选人确认面试信息,详细链接:%(url)s。祝面试顺利!'
    html_notify_meta = u'面试提醒:您安排了%(time)s,%(name)s的%(position_title)s职位面试,建议您再次与候选人确认面试信息。!'

    now = datetime.datetime.now()
    notify_end_time = now + datetime.timedelta(hours=2)

    alarms = InterviewAlarm.objects.select_related(
        'buy_record',
        'buy_record__user',
        'buy_record__user__userprofile',
    ).filter(
        has_alarm=False,
        interview_time__gte=now,
        interview_time__lte=notify_end_time,
    )

    resume_id_list = [
        alarm.buy_record.resume_id for alarm in alarms
        if alarm.buy_record.resume_id
    ]
    resume_data_mapper = get_resume_mapper(resume_id_list)
    contactinfo_mapper = get_contactinfo_mapper(resume_id_list)

    for alarm in alarms:
        user = alarm.buy_record.user
        if not hasattr(user, 'userprofile'):
            continue

        resume_id = alarm.buy_record.resume_id
        interview_time = alarm.interview_time.strftime('%Y-%m-%d %H:%M')
        name = contactinfo_mapper.get(resume_id, '')
        position_title = resume_data_mapper.get(resume_id, '')
        userprofile = user.userprofile
        phone = userprofile.phone

        if not error_phone(phone):
            resume_url = 'http://www.pinbot.me/resumes/display/%s' % resume_id
            sms_notify = sms_notify_meta % {
                'time': interview_time,
                'name': name,
                'position_title': position_title,
                'url': resume_url,
            }
            asyn_send_sms(phone, sms_notify)

        html_notify = html_notify_meta % {
            'time': interview_time,
            'name': name,
            'position_title': position_title,
        }

        html_url = '/resumes/display/%s' % resume_id
        notify.send(
            user,
            recipient=user,
            verb='%s(<a class="c0091fa" href="%s">查看详情</a>)' %
            (html_notify, html_url),
            user_role='hr',
            notify_type='interview_alarm_notify',
        )
        alarm.has_alarm = True
        alarm.save()

    return True
Пример #16
0
    def clean_phone(self):
        phone = self.data['phone']

        if error_phone(phone):
            raise forms.ValidationError(u'电话号码格式错误,请填写正确的手机号')
        return phone