5.26 JLL--实习日志--Primary_Image+total_setting
来源:互联网 发布:语句sql2000创建数据库 编辑:程序博客网 时间:2024/05/21 09:29
debug for different Users
- primary_image 图片选取!!涉及到的函数是view_property 的change_file_image_flag和add_files的两个函数!
首先在数据库层面的property里面的加一个列,并且设置默认的值是
default_building_pic
image_path = models.CharField('图片路径',max_length=255, default="default_building_pic.jpg")
然后在add_files函数里面加上判定的步骤!,代码如下
def add_files(request, property_id): if request.method == 'POST': form = UploadFileFormChoice(request.POST, request.FILES) # get post if form.is_valid(): file_type =request.POST['property_form_type_choice']#从form表单里面得到类型 now_time = datetime.datetime.utcnow() yesterdaytime = now_time + datetime.timedelta(days=-1) userid = User.objects.filter(id=request.user.id).first().id #为什么这边要取第一个? property_instance=Property.objects.all().first() #request.user通过获取到对应的user_role_instance的对象 user_role_instance = UserRole.objects.filter(user=request.user).first().userRole propertyfiles_count = PropertyFile.objects.filter(Q(Property_File_Timestamp__gt=yesterdaytime)&Q(Q(UploadBy=userid)|Q(DeleteBy=userid))).count() #用来判定是不是primary_image_instance是不是存在?判定的标准是photo类型的,并且没有过期的同时primary_image_flag是存在的PropertyFile类型的 primary_image_instance=PropertyFile.objects.filter(Q(Property=property_instance) & Q(Property_File_Type = 'PHO') & Q(RecordEndDate="NULL") & Q(primary_image_flag="1")) #primary_image_instance primary image exist ? if(propertyfiles_count < 500): if request.FILES.getlist('file'): for file_item in request.FILES.getlist('file'): #为什么这边是需要循环的? property_instance = get_object_or_404(Property,pk=int(property_id)) file_name_original = file_item.name file_name_extension = file_item.name.split('.')[-1].lower() #file_name 拼接实现是为了存放在系统中固定的位置! file_name = file_type + '_' + property_id + '_' + datetime.datetime.now().strftime("%Y_%m_%d_%H_%M_%S_%f") + '.' + file_name_extension file_item.name = file_name record_start_date=now_time if primary_image_instance: #如果存在那就把property_file 的image_flag设置为0,如果没有,那就还要判定传入进来的文件是不pho类型的如果是,那就把最新传进来的文件设置为primary_image!如果不是pho类型,那就仍然设置为0,感觉总是涉及到property类型的! image_flag = '0' elif file_type == 'PHO': image_flag = '1' #这边还需要加上first()?? property_instance.image_path = PropertyFile.objects.filter(Q(Property=property_instance) & Q(Property_File_Type = 'PHO') & Q(RecordEndDate="NULL") & Q(primary_image_flag="1")).first().Property_File_Path property_instance.save() else: image_flag ='0' #如果没有那就创建一个property_file 对象并且给里面赋值 property_file = PropertyFile(Property=property_instance, Property_File=file_item, Property_File_Path=file_name, Property_File_Name = file_name_original, Property_File_Type = file_type, Property_File_Subpart = file_name_extension, RecordStartDate=record_start_date, view_flag = user_role_instance, control_flag = user_role_instance, UploadBy = userid, primary_image_flag = image_flag) #保存对象到数据库! property_file.save() views.write_operation_log(property_file, "Add", request) return HttpResponseRedirect("/property/view_detail/%s?message=success&item=files" % property_id) else: return HttpResponseRedirect("/property/view_detail/%s?message=fail&item=files" % property_id) else: return HttpResponseRedirect("/property/view_detail/%s?message=fail&item=files" % property_id) else: return HttpResponseRedirect("/property/view_detail/%s?message=fail&item=files" % property_id)
在view_property 里面的两个函数需要添加default_image的步骤,给propety这个函数添加image_path的属性!
在add_files函数中,如果存在primary_image_instance对象的,那就会把新传入的对象的image_path属性设置为默认的,如果没有就用property_file里面的Property_File_Path赋值给property 里面的 image_path值!
primary_image_instance=PropertyFile.objects.filter(Q(Property=property_instance) & Q(Property_File_Type = 'PHO') & Q(RecordEndDate="NULL") & Q(primary_image_flag="1"))
2 change_file_image_flag改变显示图片的功能!同时去改变对应的 property_instance里面的image_path !
def change_file_image_flag(request, file_id): property_file_instance = get_object_or_404(PropertyFile,pk=int(file_id),RecordEndDate="NULL") property_instance = property_file_instance.Property#property_instance property_id = property_instance.id if not can_control(property_file_instance, request): return views.page_not_found(request) else: primary_images = PropertyFile.objects.filter(Q(Property=property_instance)&Q(RecordEndDate='NULL')&Q(primary_image_flag='1')) if primary_images:#exist primary_image,change other image flag and then change the instance for 1 for item in primary_images: item.primary_image_flag = '0' item.save() property_file_instance.primary_image_flag = '1' property_file_instance.save() property_instance.first().image_path = PropertyFile.objects.filter(Q(Property=property_instance.first()) & Q(Property_File_Type = 'PHO') & Q(RecordEndDate="NULL") & Q(primary_image_flag="1")).first().Property_File_Path property_instance.save() views.write_operation_log(property_file_instance, "Edit", request) return HttpResponseRedirect("/property/view_detail/%s?message=success&item=files" % property_id)
2. 增加image_path还可以是在改变primary_image的图片时候需要改动
具体实现的代码
def change_file_image_flag(request, file_id): #通过file_id和对象的类型找到property_file_instance,感觉传入的id 还是很重要的 property_file_instance = get_object_or_404(PropertyFile,pk=int(file_id),RecordEndDate="NULL") #因为file关联到property_instance上所以可以找到对应的 property_instance property_instance = property_file_instance.Property property_id = property_instance.id if not can_control(property_file_instance, request): return views.page_not_found(request) else: #通过判断Property,endDate,primary_image_flag是不是已经有primary_images primary_images_instance = PropertyFile.objects.filter(Q(Property=property_instance)&Q(RecordEndDate='NULL')&Q(primary_image_flag='1')) if primary_images: #exist primary_image,change other image flag and then change the instance for 1 for item in primary_images: item.primary_image_flag = '0' item.save() property_file_instance.primary_image_flag = '1' property_file_instance.save() #同时改变property_instance对应的image_path里面的路径名称 property_instance.image_path = PropertyFile.objects.filter(Q(Property=property_instance) & Q(Property_File_Type = 'PHO') & Q(RecordEndDate="NULL") & Q(primary_image_flag="1")).first().Property_File_Path property_instance.save() views.write_operation_log(property_file_instance, "Edit", request) return HttpResponseRedirect("/property/view_detail/%s?message=success&item=files" % property_id)
total_setting
对象的形式传过来!不是用string 的类型传过来!
这样的方式已经解决了! 使用的是一个列表的形式进行优化的!
total_setting是一个总的开关,达到的效果是指需要total_setting里面改,所有的setting都会变动!
OrderedDict 实现了一个有序list 的概念
from collections import OrderedDict
遇到的问题是没有办法传对象类型过来policy_jp_ind 和policy_xuhui_gov 这两个只能是以字符串的形式传过来!所以用的
以下的方式进行调整!
import total_settingfrom collections import OrderedDict# Load specific policy herepolicy_list = OrderedDict()policy_list[0]=policy_jp_indpolicy_list[1]=policy_xuhui_govpolicy = policy_list[total_setting.environment_setting]
系统部件的熟悉
static—-upload —上传文件的地方!
阅读全文
0 0
- 5.26 JLL--实习日志--Primary_Image+total_setting
- 5.3 JLL 实习日志
- 5.5 JLL 实习日志
- 5.9 JLL实习日志
- 5.27 JLL--实习日志--
- 6.5 JLL--实习日志
- 6.16-6.19 JLL--实习日志--
- 6.15 JLL--实习日志--SetupNewWorkSpace on cloud9
- 7.14-7.21 JLL实习日志-DropDownBox Upgrade
- 8.29-8.30 JLL实习日志-validate deprecated
- 9.1-9. JLL实习日志-未完结
- 5.4 JLL 实习日志 –form 表单问题
- 5.11 JLL实习日志-实现download功能实现
- 5.10 JLL实习日志-实现upload 功能实现
- 5.12 JLL实习日志-实现download功能实现
- 5.12 JLL实习日志-实现Anjular Js 功能实现
- 5.19 JLL--实习日志--view_availability前端和后端
- 5.22 JLL--实习日志--Js--to be contining
- 时间轴
- Linux 内核文件系统(进阶篇)
- markdown用法备注
- Android 有关修改
- 2016-2017 ACM-ICPC, Asia Tsukuba Regional Contest
- 5.26 JLL--实习日志--Primary_Image+total_setting
- Boyer_Moore字符串匹配算法.java
- having的用法
- Unsupported major.minor version 52.0
- R语言的基本统计分析
- java 设计模式整理(方便记忆)
- SAS学习︱逻辑库、数据集创建与查看、数据库链接(SAS与R的code对照)
- MongoDB集群搭建
- 《二》取消关注并删除用户信息