6.5 JLL--实习日志

1.循环的机制有问题


def containsAnyInList(list, aset):
    for item in list:
        if containsAny(item, aset):
            return True
    return False

def containsAny(seq, aset):
    for c in seq:
        if c in aset:
            return True
    return False

view_availability函数的实现

1. 获取availabilities 没有过期的对象

availabilities = Availability.objects.filter(RecordEndDate="NULL").order_by('UpdateDate')

2.判断message是否存在,得到一个popout 的功能!

   if request.GET.get('message'):
        message_for_add_result = request.GET.get('message')

2.判定是不是有权限!如果没有权限,删除对应的id=item.id,同时也删除过期数据

 for item in availabilities:
        if not can_access(item, request): 
        availabilities=availabilities.exclude(id=item.id)
        elif not item.Property.RecordEndDate=='NULL':
            availabilities=availabilities.exclude(id=item.id)          

3.如果可以得到request.GET.get() 值说明可以是按了搜索的按钮了

if request.GET.get('a'):
            value_lower_1 = float(request.GET.get('a'))
            value_upper_1 = float(request.GET.get('b'))
            value_lower_2 = float(request.GET.get('d'))
            value_upper_2 = float(request.GET.get('e'))
            province_name = request.GET.get('f')
            filter_text = request.GET.get('c')

4.判定的逻辑:
如果省份的按钮框存在并且不是all ,删除对应的非province_name的值,
如果 filter_text的框是有值的,先创建一个value_list的列表,里面存放的 包涵的选择项,应该是每一个item的选择项,是用一个函数containsAnyInList判定是不是在里面,如果不在,就exclude对应的id

if province_name and province_name != 'All':
                if item.Province != province_name:
                    availabilities=availabilities.exclude(id=item.id)
            if filter_text:#search box
                value_list = [item.Property.NameUnicode, item.Unit, item.AvailableDate, item.Property.Access_Nearest_IC, item.Property.Access_Nearest_Station]
                if not views.containsAnyInList(value_list, filter_text):
                    availabilities=availabilities.exclude(id=item.id)

5.判断两个bar上的值是不是存在,如果不存在首先给0,exclude对应的不在范围里面的值:

 if item.UnitRental == "":
                item.UnitRental = '0'
 if item.Rent_Area =="":
                item.Rent_Area = '0'
  try:
                if float(item.UnitRental) < value_lower_1 or float(item.UnitRental) > value_upper_1:
      availabilities = availabilities.exclude(id=item.id)
                if float(item.Rent_Area)< value_lower_2 or float(item.Rent_Area) > value_upper_2:
     availabilities = availabilities.exclude(id=item.id)
            except:
                availabilities = availabilities.exclude(id=item.id)

6.初始化对应bar 的值,四个框里面的值,利用的函数checkrange

output_one = views.checkrange(availabilities,'UnitRental',request)#??? 'ProjectArea',UnitRental,Rent_Area
    output_two = views.checkrange(availabilities,'Rent_Area',request)
    price_min_range_one = output_one.min_range
    price_max_range_one = output_one.max_range
    price_min_range_two = output_two.min_range
    price_max_range_two = output_two.max_range

7.返回值render_to_response,

render_to_response(ui_sets['search_availability_list'], {'price_min_range_one':price_min_range_one,'price_max_range_one':price_max_range_one,'price_min_range_two':price_min_range_two,'price_max_range_two':price_max_range_two,
    'availabilities': availabilities, 'message_for_add_result': message_for_add_result,
    'untable_selection_box':untable_selection_box,     
    }, context_instance = RequestContext(request))    

2. view_availability函数的改进,完整代码如下

@login_required
def view_availability(request):
    availabilities = Availability.objects.filter(RecordEndDate="NULL").order_by('UpdateDate')
    message_for_add_result = "null"
    if request.GET.get('message'):
        message_for_add_result = request.GET.get('message')
    for item in availabilities:
        if not can_access(item, request):
            availabilities=availabilities.exclude(id=item.id)
        elif not item.Property.RecordEndDate=='NULL':
            availabilities=availabilities.exclude(id=item.id)
        else:
            item.AvailableDate = str(item.AvailableDate)
        if request.GET.get('a'):
            value_lower_1 = float(request.GET.get('a'))
            value_upper_1 = float(request.GET.get('b'))
            value_lower_2 = float(request.GET.get('d'))
            value_upper_2 = float(request.GET.get('e'))
            province_name = request.GET.get('f')
            filter_text = request.GET.get('c')
            if province_name and province_name != 'All':
                if item.Province != province_name:
                    availabilities=availabilities.exclude(id=item.id)
            if filter_text:#search box
                value_list = [item.Property.NameUnicode, item.Unit, item.AvailableDate, item.Property.Access_Nearest_IC, item.Property.Access_Nearest_Station]
                if not views.containsAnyInList(value_list, filter_text):
                    availabilities=availabilities.exclude(id=item.id)
            if item.UnitRental == "":
                item.UnitRental = '0'
            if item.Rent_Area =="":
                item.Rent_Area = '0'
            try:
                if float(item.UnitRental) < value_lower_1 or float(item.UnitRental) > value_upper_1:
                    availabilities = availabilities.exclude(id=item.id)
                if float(item.Rent_Area)< value_lower_2 or float(item.Rent_Area) > value_upper_2:
                    availabilities = availabilities.exclude(id=item.id)
            except:
                availabilities = availabilities.exclude(id=item.id)
    output_one = views.checkrange(availabilities,'UnitRental',request)#??? 'ProjectArea',UnitRental,Rent_Area
    output_two = views.checkrange(availabilities,'Rent_Area',request)
    price_min_range_one = output_one.min_range
    price_max_range_one = output_one.max_range
    price_min_range_two = output_two.min_range
    price_max_range_two = output_two.max_range
    return render_to_response(ui_sets['search_availability_list'], {'price_min_range_one':price_min_range_one,'price_max_range_one':price_max_range_one,'price_min_range_two':price_min_range_two,'price_max_range_two':price_max_range_two,
    'availabilities': availabilities, 'message_for_add_result': message_for_add_result,
    'untable_selection_box':untable_selection_box,     
    }, context_instance = RequestContext(request))    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值