1.实现access 函数的调整,里面涉及到两个函数
def import_data(request):
if operation_access(access_setting.upload_operation_access_list, request):if request.method == "POST":
form = UploadFileForm(request.POST, request.FILES)
if form.is_valid():
#这边是一个file文件类型的上传,具体的数据是取不到的
request.FILES['file'].save_to_database(
model=Propert_import,
mapdict=data_import_setting.property_form_standard_form)
#insert in to Property
#取到updateDate 里面的最大值,本身是一个list 对象
date_max = Propert_import.objects.aggregate(Max('UpdateDate'))
# 取到的是 Propert_import对象里面update最大值,property_import_set是一个list类型的
property_import_set = Propert_import.objects.filter(UpdateDate=str(date_max.values()[0]))
#这边设定了一个空的property,作用是为了在后面可以存进ropertyForm(instance=property_instance),然后save
property_instance = Property()
#后面的
for property_import_instance in property_import_set:
for field in property_import_instance._meta.fields:
setattr(property_instance, field.name, getattr(property_import_instance,field.name))
if field.name =='UpdateDate':
setattr(property_instance,'UpdateDate_Xuhui', getattr(property_import_instance,field.name))
property_instance.save()
form_imports = PropertyForm(instance=property_instance)
if form_imports.is_valid():
form_imports.save()
message_for_add_result = "success"
return render_to_response('property/view.html',{'form': form, 'message_for_add_result': message_for_add_result},context_instance = RequestContext(request))
else:
message_for_add_result = "fail"
return render_to_response('property/view.html',{'form': form, 'message_for_add_result': message_for_add_result}, context_instance = RequestContext(request))
else :
form = UploadFileForm()
return render(
request,
'import/upload_form.html',
{
'form': form,
'title': 'Import excel data into database example',
'header': 'Please upload sample-data.xls:'
})
else:
return page_not_found(request)
def operation_access(object, request):
if request.user.is_authenticated() and (isinstance(object, list)):
# Check login
userRole_subgroup_value = UserRole.objects.filter(user=request.user).first().userRole_subgroup
if userRole_subgroup_value in object:
return True
else:
return False
else:
return False