def index(request, template): user = request.user devices = Device.objects.all() assets = Assets.objects.all() pag_list = [] if user.get_profile().asset_edit: pag_list += assets if user.get_profile().parts_edit: pag_list += devices elif user.get_profile().parts_edit: pag_list += devices cus_form = CustomerForm() bom_form = BomForm() device_form = DeviceForm() asset_form = AssetsFrom() if request.method == "POST": if request.POST['subname'] == 'add_device': try: name = request.POST.getlist('bom_sns') if len(list(set(name))) == 1 and list(set(name))[0] == '': #全为空 pass else: new_device = Device() dev = {} for i in name: try: bom = Bom.objects.get(bom_sn=i) if bom.bom_name == u'ser' and dev.has_key(u'ser'): pass else: dev[bom.bom_name] = (bom, bom.bom_sn) except Exception,e: pass if dev.has_key('ser'): new_device.device_sn = dev['ser'][1] bom = Bom.objects.get(bom_sn=dev['ser'][1]) bom.bom_status = 'inuse' bom.save() new_device.save() for key in dev: if key != 'ser': new_device.device_boms.add(dev[key][0]) dev[key][0].bom_status = 'inuse' dev[key][0].save() new_device.save() return HttpResponseRedirect(reverse('index')) except: pass elif request.POST['subname'] == 'add_cus': cus_form = CustomerForm(request.POST) if cus_form.is_valid(): cus_form.save() return HttpResponseRedirect(reverse('index')) else: err_msg = 'error' elif request.POST['subname'] == 'add_asset': asset_form = AssetsFrom(request.POST) if asset_form.is_valid(): asset_form.save() return HttpResponseRedirect(reverse('index')) else: bom_form = BomForm(request.POST) if bom_form.is_valid(): bom_form.save() return HttpResponseRedirect(reverse('index')) else: err_msg = 'error' page = request.GET.get('page', '') paginator = Paginator(pag_list,'20') try: contacts = paginator.page(page) except PageNotAnInteger: contacts = paginator.page('1') except EmptyPage: contacts = paginator.page(paginator.num_pages) return TemplateResponse(request, template,{'cus_form':cus_form, 'bom_form':bom_form, 'devices':devices, 'asset_form':asset_form, 'contacts':contacts, 'pages':paginator})