예제 #1
0
def check_verify_code(request):
    try:
        #utils.logger.debug('check verification body %s', request)
        utils.logger.debug('check verification body: %s', request.body)
        utils.logger.debug('check verification post body: %s', request.POST)
        
        post_data = json.loads(request.body.decode('utf-8'))
        phone_num = post_data['mobile']
        recv_code = post_data['code']
        send_code = phone_verify_code.get(phone_num)

        data = {}
        data['has_investment'] = 0
        utils.logger.debug('phone number: %s, code: %s', phone_num, recv_code)
        if send_code is not None and send_code == int(recv_code):
            if User.objects.filter(mobile=phone_num).exists() is False:
                # create a new user object for current phone number
                new_uobj = User.objects.create()
                new_uobj.mobile = phone_num
                new_uobj.save()
            else:
                uobj = User.objects.get(mobile=phone_num)
                uobj.save() # just for update active time
                if uobj.investment_set.count() > 0:
                    data['has_investment'] = 1

            return utils.return_success(data)
        else:
           return utils.return_error(403)
            #return HttpResponse(403)
    except Exception as e:
        utils.logger.debug('check verification fail: %s', str(e))
        return utils.return_error(400)
예제 #2
0
def get_list(request):
    try:
        page_size = 10
        page_id = request.GET.get('page')
        if page_id is None or int(page_id) < 0:
            page_id = 1

        all_data = []
        total_count = Project.objects.count()

        start = (int(page_id) - 1) * page_size
        end = start + page_size
        #projects = Project.objects.all()[start:end]
        projects = Project.objects.order_by('-is_top')[start:end]

        for p in projects:
            data = collect_project_info(p)

            if data['is_show'] == 1:
                # already ordered by is_top value
                all_data.append(data)

        return utils.return_success(all_data, total_count)
    except Exception as e:
        utils.logger.debug('get project list fail: %s', str(e))
        return utils.return_error(400)
예제 #3
0
def get_detail(request):
    try:
        post_data = json.loads(request.body.decode('utf-8'))

        project_id = post_data['id']
        response = {}
        response['follow'] = 0

        if 'mobile' in post_data:
            phone_num = post_data['mobile']
            uobj = User.objects.get(mobile=phone_num)
            if uobj.follow_projects.filter(id=project_id).exists():
                response['follow'] = 1

        p = Project.objects.get(id=project_id)
        #response = HttpResponse()

        desc = p.project_detail.content
        new_content = desc.replace(
            "src=\"/upload/upload/",
            "src=\"http://img.fang88.com/ng_server_upload/")

        #response.write(new_content)
        response['data'] = new_content
        return utils.return_success(response)

    except Exception as e:
        utils.logger.debug('get project detail fail: %s', str(e))
        return utils.return_error(400)
예제 #4
0
def send_proposal(request):
    try:
        # send_mail的参数分别是  邮件标题,邮件内容,发件箱(settings.py中设置过的那个),收件箱列表(可以发送给多个人),失败静默(若发送失败,报错提示我们)
        send_mail('Subject here',
                  'Here is the message.',
                  '*****@*****.**', ['*****@*****.**'],
                  fail_silently=False)
        return utils.return_success({})
    except Exception as e:
        utils.logger.debug('send proposal fail: %s', str(e))
        return utils.return_error(400)
예제 #5
0
def get_user_projects_info(request):
    try:
        #page_id = request.POST.get('page')
        #phone_num = request.POST.get('mobile')
        post_data = json.loads(request.body.decode('utf-8'))
        phone_num = post_data['mobile']
        page_id = post_data['page']

        utils.logger.debug('user[%s] request projects info', phone_num)
        uobj = User.objects.get(mobile=phone_num)
        #followed_projects = uobj.follow_projects.all()
        
        total_count = uobj.follow_projects.count()
        # 10 projects for one page
        page_size = 10
        
        if page_id is None or int(page_id) < 0:
            page_id = 1

        full_info = {}

        # get followed projects
        projects_data = []
        
        start = (int(page_id) - 1) * page_size
        end = start + page_size
        #projects = followed_projects[start:end]

        # execute raw sql to get ordered follow projects
        sql = 'select project_id from user_follow_projects where user_id=%s order by id desc limit %s, %s'
        
        cursor = connection.cursor()
        cursor.execute(sql, [uobj.id, start, page_size])

        res = cursor.fetchone()
        utils.logger.debug('fetch user follow projects result %s', res)
        while res is not None:
            pid = res[0]
            p = Project.objects.get(id=pid)
            
            data = collect_project_info(p)
            
            data['follow'] = 1
            
            projects_data.append(data)
            res = cursor.fetchone()
        
        full_info['projects'] = projects_data
        return utils.return_success(full_info, total_count)
    except Exception as e:
        utils.logger.debug('get user projects info fail: %s', str(e))
        return utils.return_error(400)
예제 #6
0
def send_verify_code(request):
    try:
        phoneNumber = request.GET.get('mobile')
        # check phone, cn or us
        type = 'cn'
        # TODO if front-end not verify the phone number, back-end will verify again
        if len(phoneNumber) == 11:
            type = 'cn'
        elif len(phoneNumber) == 10:
            type = 'us'
        else:
            type = 'unknown'
        
        utils.logger.debug('type is %s', type)
        if type == 'unknown':
            return utils.return_error(400)
        # send msg
        send(type, phoneNumber)

        # return http response
        return utils.return_success({})
    except Exception as e:
        utils.logger.debug("send verify code fail: %s", str(e))
        return utils.return_error(400)
예제 #7
0
def send_email(data):
    try:
        message = '所属行业: ' + data['field'] + '\n'
        message += '融资情况: ' + data['invest'] + '\n'
        message += '公司注册情况: ' + data['register'] + '\n'
        message += '所需工位数量: ' + data['cubes'] + '\n'
        message += '联系电话: ' + data['mobile'] + '\n'
        message += 'BP链接: ' + data['oss_url'] + '\n'
        send_mail('入驻申请',
                  message,
                  '*****@*****.**', ['*****@*****.**'],
                  fail_silently=False)
        return utils.return_success({})
    except Exception as e:
        utils.logger.debug('send email fail: %s', str(e))
        return utils.return_error(400)
예제 #8
0
def unfollow(request):
    try:
        #phone_num = request.POST.get('mobile')
        #pid = request.POST.get('project_id')
        post_data = json.loads(request.body.decode('utf-8'))
        phone_num = post_data['mobile']
        pid = post_data['project_id']

        utils.logger.debug('user[%s] unfollows project[id: %s]', phone_num, pid)
        uobj = User.objects.get(mobile=phone_num)
        pobj = Project.objects.get(id=pid)
        
        # add relation ship
        uobj.follow_projects.remove(pobj)

        return utils.return_success({})
    except Exception as e:
        utils.logger.debug('unfollow fail: %s', str(e))
        return utils.return_error(400)
예제 #9
0
def get_user_investments_info(request):
    try:
        #page_id = request.POST.get('page')
        #phone_num = request.POST.get('mobile')
        post_data = json.loads(request.body.decode('utf-8'))
        phone_num = post_data['mobile']
        page_id = post_data['page']

        utils.logger.debug('user[%s] request projects info', phone_num)
        uobj = User.objects.get(mobile=phone_num)
        
        total_count = uobj.investment_set.count()
        
        # 10 projects for one page
        page_size = 10
        
        if page_id is None or int(page_id) < 0:
            page_id = 1
        
        start = (int(page_id) - 1) * page_size
        end = start + page_size

        all_invests = uobj.investment_set.all()[start:end]
        full_info = {}
        invests_data = []

        for invest in all_invests:
            data = {}
            data['estimate_yearly_return'] = get_yearly_return(invest.project)['yearly_return']
            data['project_id'] = invest.project.id
            data['project_name'] = invest.project.project_name
            data['principal'] = invest.principal
            data['interest'] = invest.interest
            data['unit'] = invest.unit
            invests_data.append(data)
        
        full_info['investments'] = invests_data
        return utils.return_success(full_info, total_count)
    except Exception as e:
        utils.logger.debug('get user investments info fail: %s', str(e))
        return utils.return_error(400)
예제 #10
0
def receive_proposal(request):
    try:
        utils.logger.debug('request is : %s', request.POST.get('data'))
        utils.logger.debug('request files is : %s', request.FILES)
        request_data = json.loads(request.POST.get('data'))
        utils.logger.debug('jsonfy request data is %s', request_data)

        data = {}
        data['field'] = request_data['field']
        data['invest'] = request_data['invest']
        data['register'] = request_data['register']
        data['cubes'] = request_data['cubes']
        data['mobile'] = request_data['mobile']
        bp_name = request_data['bp_name']
        utils.logger.debug('receive data is: %s', data)
        #bp_content = request.POST.get('bp_content')

        bp_content = request.FILES.get('files')
        utils.logger.debug('bp content is %s', bp_content)

        save_path = os.path.join(settings.MEDIA_ROOT, 'upload', bp_name)
        path = default_storage.save(save_path, ContentFile(bp_content.read()))

        utils.logger.debug('file saved to path: %s', path)

        # upload to oss cn
        target = 'grock_upload/' + oss2util.md5(path) + '.' + bp_name.split(
            '.')[-1]
        oss2util.uploadFileCN(path, target)

        # send email
        oss_url = 'http://img.fang88.com/' + target
        data['oss_url'] = oss_url

        return send_email(data)
        #return utils.return_success({})
    except Exception as e:
        utils.logger.debug('receive proposal fail: %s', str(e))
        return utils.return_error(400)