6.5 JLL--实习日志

来源:互联网 发布:python tf idf 的代码 编辑:程序博客网 时间:2024/05/22 02:12

1.循环的机制有问题

def containsAnyInList(list, aset):    for item in list:        if containsAny(item, aset):            return True    return Falsedef 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_requireddef 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))