Example #1
0
def feed_group_ajax(request, feed_id):
    """
    @summary: 订阅数据获取核心接口
    @change: [email protected] 调整修复系统bug,已读数量,已读简历

    """
    if not feed_id or feed_id == "":
        return HttpResponse("")
    all_tags = []
    tag_names = []
    limit = 36
    p = request.GET.copy()
    try:
        start = int(p.get('start', 0))
    except:
        start = 0
    try:
        limit = int(p.get('limit', 36))
    except:
        limit = 36

    try:
        feed_id = ObjectId(feed_id)
    except Exception, e:
        json_data = produce_return_json(status=False, error_dict={"error":str(e)})
        return  HttpResponse(json_data)
 def __inner_deco(request, group_name=group_name, *arg, **kw):
     pkg_point, pinbot_point = point_utils.get_user_point(request.user)
     total_points = pkg_point + pinbot_point
     if total_points >= 10:
         res = function(request, *arg, **kw)
         return res
     else:
         json_data = produce_return_json(data=3, status=False, error_dict=u'3.有效点数不够')
         return HttpResponse(json_data, "application/json")
Example #3
0
    def get(self, request):
        p = request.GET.copy()
        resume_id = p.get('resume_id', None)
        send_id = p.get('send_id', None)

        send_record = SendCompanyCard.objects.get(id=int(send_id))

        if ResumeBuyRecord.objects.filter(user=request.user, resume_id=resume_id).count():
            json_data = produce_return_json(
                data=2, status=False, error_dict=u'2.已购买过此简历_has bought this resume')
        else:
            result = buy_resume(
                user=request.user, resume_id=resume_id, send_record=send_record)
            if result:
                send_record.points_used = 13
                send_record.has_download = True
                send_record.save()
            else:
                send_record.download_status = False
                send_record.save()
            json_data = produce_return_json(data=8)
        return HttpResponse(json_data, "application/json")
Example #4
0
def modify_feed_result(request):
    """
    @summary: 功能1.修改机器推荐的结果
              功能2.手工添加结果推荐结果
    """

    get_data = request.GET
    feed_id = get_data.get('feed_id')
    resume_id = get_data.get('resume_id')

    if not (feed_id and resume_id):
        data = produce_return_json(data='feed_id or resume_id is None', status=False)
        return JsonResponse(data)

    reco_index = get_data.get('reco_index', 100)
    feedback_list = get_data.getlist('feedback[]', [])
    user = request.user
    username = user.username
    now = datetime.datetime.now()

    feed = ObjectId(feed_id)
    resume = ObjectId(resume_id)
    reco_index = int(reco_index)

    manual_push_resume = ManualPushResume(
        username=username,
        feed=feed,
        resume=resume,
        reco_index=reco_index,
        op_time=now,
    )
    manual_push_resume.save()

    recommend = True if reco_index >= 0 else False
    resume_update_time = get_today()

    feed_results = FeedResult.objects.filter(feed=feed, resume=resume)
    if not feed_results:
        # 对于搜索结果的推荐点击很合适
        feed_result = FeedResult(
            feed=feed,
            resume=resume,
            algorithm='search_result'
        )
        feed_results = [feed_result]

    for feed_result in feed_results:
        if not feed_result.is_recommended:
            feed_result.is_manual = True

        feed_result.is_recommended = recommend
        feed_result.resume_update_time = resume_update_time

        if reco_index >= 0:
            feed_result.calc_time = now
            feed_result.manual_ensure_time = now
        else:
            # 任务系统中会用到user_feedback_time字段,记录下用户反馈不感兴趣的时间
            feed_result.user_feedback_time = now

        feed_result.reco_index += reco_index

        # 记录下管理员账号,如果是用户自己点击不合适,则留下用户的账号
        feed_result.admin = username
        feed_result.feedback_list = feedback_list
        feed_result._data['is_staff'] = 1 if request.user.is_staff else 0

        # 添加cls_score
        if reco_index >= 0 and request.user.is_staff:
            feed_result.score['cls_score'] = 100

        feed_result.save()

    data = produce_return_json()
    return HttpResponse(data, 'application/json')
Example #5
0
def add_manual_feed_result(request):
    """
    @summary: 向订阅添加人工的结果
    """
    p = request.POST
    feed_id = p.get('feed_id')
    url = p.get('url')
    username = p.get('username') or request.user.username
    recommend = p.get('recommend', True)
    user = request.user

    if not recommend:
        recommend = False

    feed = ObjectId(feed_id)
    x_pinbot_admin_auth = request.META.get('HTTP_X_PINBOT_ADMIN_AUTH', '')

    if x_pinbot_admin_auth != PINBOT_ADMIN_AUTH_DICT['x-pinbot-admin-auth'] and not user.is_staff:
        data = produce_return_json(data=' x_pinbot_admin_auth is error', status=False)
    elif feed_id and url:
        try:
            resume = get_resume_from_url(url)
            try:
                if resume.update_time.find("-") > 0:
                    resume_update_time = datetime.datetime.strptime(resume.update_time, "%Y-%m-%d")
                elif resume.update_time.find("/") > 0:
                    resume_update_time = datetime.datetime.strptime(resume.update_time, "%Y/%m/%d")
                else:
                    resume_update_time = datetime.datetime.today()
            except :
                resume_update_time = datetime.datetime.today()
            if resume:
                ManualPushResume(username=username, feed=feed, resume=resume, url=url, reco_index=300).save()
                feed_results = FeedResult.objects.filter(feed=feed, resume=resume)
                if feed_results:
                    for feed_result in feed_results:

                        # 判断是否用户自己已经屏蔽过了
                        if feed_result.is_manual  and feed_result.is_recommended == False:
                            data = produce_return_json(data='用户已经被人工屏蔽过了,这条推荐没有保存', status=False)
                            break
                        elif feed_result.is_manual == False and feed_result.is_recommended == False:
                            feed_result.is_recommended = recommend
                            feed_result.resume_update_time = resume_update_time
                            feed_result.is_manual = True
                            feed_result.calc_time = get_datetime(hours=12)
                            feed_result.admin = username
                            feed_result.is_staff = 1 if 'hopperclouds.com' in username else 0
                            feed_result.published = False
                            feed_result.save()
                            data = produce_return_json(data='已经成功修改结果(机器屏蔽数据)', status=False)
                        else:
                            reco_er = ''
                            if '@' in feed_result.admin:
                                reco_er = feed_result.admin
                            else:
                                reco_er = '算法%s_%s' % (feed_result.algorithm, feed_result.admin)
                            hint = "[已推]%s 在 %s[added] 不会强推" % (reco_er, feed_result.calc_time)
                            data = produce_return_json(data = hint  , status = False)
                else:
                    # 管理员,首次添加新的推荐
                    feed_result = FeedResult(feed=feed, resume=resume, \
                                                is_recommended=recommend, reco_index=300, \
                                                job_related=30)
                    feed_result.resume_update_time = resume_update_time
                    feed_result.is_manual = True
                    feed_result.calc_time = datetime.datetime.today()
                    feed_result.published = False
                    feed_result.admin = username
                    feed_result.is_staff = 1 if 'hopperclouds.com' in username else 0
                    feed_result.save()

                    data = produce_return_json(data='首次添加成功')
            else:
                # 人工添加但是还不能在resumeData中找到
                ManualPushResume(username=username, feed=feed, url=url, reco_index=110, has_collected=False).save()
                data = produce_return_json(data='Pinbot 还没有收集到这个简历.has not collected in pinbot sys', status=False)

        except Exception, e:
            data = produce_return_json(data=str(e), status=False)
Example #6
0
                    feed_result.calc_time = datetime.datetime.today()
                    feed_result.published = False
                    feed_result.admin = username
                    feed_result.is_staff = 1 if 'hopperclouds.com' in username else 0
                    feed_result.save()

                    data = produce_return_json(data='首次添加成功')
            else:
                # 人工添加但是还不能在resumeData中找到
                ManualPushResume(username=username, feed=feed, url=url, reco_index=110, has_collected=False).save()
                data = produce_return_json(data='Pinbot 还没有收集到这个简历.has not collected in pinbot sys', status=False)

        except Exception, e:
            data = produce_return_json(data=str(e), status=False)
    else:
        data = produce_return_json(data='feed_id or url is null', status=False)

    return HttpResponse(data, 'application/json')


@login_required
@feedback_finished
def modify_feed_result(request):
    """
    @summary: 功能1.修改机器推荐的结果
              功能2.手工添加结果推荐结果
    """

    get_data = request.GET
    feed_id = get_data.get('feed_id')
    resume_id = get_data.get('resume_id')
Example #7
0
def buy(request):
    """
    @summary: 购买简历
    """
    try:
        p = request.GET.copy()
        resume_id = p.get('resume_id', '')
        feed_id = p.get('feed_id', '')
        keywords = p.get('feed_keywords', '')
        job_id = p.get('job_id', '')
        user = request.user

        if ResumeBuyRecord.objects.filter(user=request.user, resume_id=resume_id).count():
            json_data = produce_return_json(data=2, status=False, error_dict=u'2.已购买过此简历_has bought this resume')
        else:
            pkg_points, user_points = point_utils.get_user_point(user)
            result, point = point_utils.consume_download_point(user)
            if result == 'success':
                status = 'LookUp' if ContactInfoData.objects.filter(resume_id=ObjectId(resume_id)).count() > 0 else 'Start'
                if status == 'LookUp':
                    # pinbot系统已经购买过,可以马上查阅了
                    json_data = produce_return_json(data=8)
                else:
                    # pinbot系统还没有,要等一段时间,后边邮件提醒一下
                    json_data = produce_return_json(data=9)

                resume = ResumeData.objects.get(pk=ObjectId(resume_id))
                record = ResumeBuyRecord(user=user, resume_id=resume_id, \
                                         feed_id=feed_id,
                                         keywords=keywords,
                                          op_time=datetime.now(), status=status, resume_url=resume.url)
                if status == 'LookUp':
                    record.finished_time = datetime.now()

                PartnerCoinUtils.download_resume(feed_id, resume_id)
                JobUtils.download_send_resume(job_id, user)

                # 反馈结果给算法,修改feed_result
                FeedUtils.feed_result_download(resume_id, feed_id)
                send_id = p.get('sendid',None)
                if send_id:
                    send_record = SendCompanyCard.objects.get(id=int(send_id))
                    record.send_card = send_record
                    send_record.points_used = 13
                    send_record.has_download = True
                    send_record.save()

                record.save()

                # 如果状态是start,就表示是当前库中没有该简历的联系信息,先发送一个通知给管理员
                # 然后需要通知爬虫去下载
                if record.status == 'Start':
                    notify_buy_resume(user, str(resume_id), resume.source)
                    asyn_send_download_msg.delay(record.id)
            else:
                json_data = produce_return_json(
                    data=5,
                    status=False,
                    error_dict=u'点数不足10点',
                    msg=u'聘点不足10点'
                )
    except Exception, e:
        if resume_id:
            json_data = produce_return_json(data=4, status=False, error_dict=str(e))
        else:
            json_data = produce_return_json(data=4, status=False, error_dict='4.resume_id is null')