def get(self, *args, **kwargs): mode = _get_mode(self.request) self.asset_form = AddDeviceForm(mode=mode) self.device_info_form = DeviceForm( mode=mode, exclude='create_stock', ) return super(AddDevice, self).get(*args, **kwargs)
class AddDevice(Base): template_name = 'assets/add_device.html' def get_context_data(self, **kwargs): ret = super(AddDevice, self).get_context_data(**kwargs) ret.update({ 'asset_form': self.asset_form, 'device_info_form': self.device_info_form, 'form_id': 'add_device_asset_form', 'edit_mode': False, }) return ret def get(self, *args, **kwargs): mode = _get_mode(self.request) self.asset_form = AddDeviceForm(mode=mode) self.device_info_form = DeviceForm(mode=mode) return super(AddDevice, self).get(*args, **kwargs) def post(self, *args, **kwargs): mode = _get_mode(self.request) self.asset_form = AddDeviceForm(self.request.POST, mode=mode) self.device_info_form = DeviceForm(self.request.POST, mode=mode) if self.asset_form.is_valid() and self.device_info_form.is_valid(): creator_profile = self.request.user.get_profile() asset_data = {} for f_name, f_value in self.asset_form.cleaned_data.items(): if f_name in ["barcode", "sn"]: continue asset_data[f_name] = f_value serial_numbers = self.asset_form.cleaned_data['sn'] barcodes = self.asset_form.cleaned_data['barcode'] ids = [] for sn, index in zip(serial_numbers, range(len(serial_numbers))): barcode = barcodes[index] if barcodes else None ids.append( _create_device( creator_profile, asset_data, self.device_info_form.cleaned_data, sn, mode, barcode ) ) messages.success(self.request, _("Assets saved.")) cat = self.request.path.split('/')[2] if len(ids) == 1: return HttpResponseRedirect( '/assets/%s/edit/device/%s/' % (cat, ids[0]) ) else: return HttpResponseRedirect( '/assets/%s/bulkedit/?select=%s' % ( cat, '&select='.join(["%s" % id for id in ids])) ) else: messages.error(self.request, _("Please correct the errors.")) return super(AddDevice, self).get(*args, **kwargs)
def get(self, *args, **kwargs): self.asset_form = AddDeviceForm(mode=self.mode) device_form_class = self.form_dispatcher('AddDevice') self.asset_form = device_form_class(mode=self.mode) self._set_additional_info_form() return super(AddDevice, self).get(*args, **kwargs)
class AddDevice(AssetsBase): template_name = 'assets/add_device.html' sidebar_selected = 'add device' def get_context_data(self, **kwargs): ret = super(AddDevice, self).get_context_data(**kwargs) ret.update({ 'asset_form': self.asset_form, 'additional_info': self.additional_info, 'form_id': 'add_device_asset_form', 'edit_mode': False, 'multivalue_fields': ['sn', 'barcode', 'imei'], }) return ret def _set_additional_info_form(self): if self.mode == 'dc': # XXX: how to clean it? if self.request.method == 'POST': self.additional_info = DeviceForm( self.request.POST, mode=self.mode, exclude='create_stock', ) else: self.additional_info = DeviceForm( mode=self.mode, exclude='create_stock', ) elif self.mode == 'back_office': if self.request.method == 'POST': self.additional_info = OfficeForm(self.request.POST) else: self.additional_info = OfficeForm() def get(self, *args, **kwargs): self.asset_form = AddDeviceForm(mode=self.mode) device_form_class = self.form_dispatcher('AddDevice') self.asset_form = device_form_class(mode=self.mode) self._set_additional_info_form() return super(AddDevice, self).get(*args, **kwargs) def post(self, *args, **kwargs): device_form_class = self.form_dispatcher('AddDevice') self.asset_form = device_form_class(self.request.POST, mode=self.mode) self._set_additional_info_form() if self.asset_form.is_valid() and self.additional_info.is_valid(): creator_profile = self.request.user.get_profile() asset_data = {} for f_name, f_value in self.asset_form.cleaned_data.items(): if f_name not in { "barcode", "category", "company", "cost_center", "department", "employee_id", "imei", "licences", "manager", "sn", "profit_center", "supports", }: asset_data[f_name] = f_value sns = self.asset_form.cleaned_data.get('sn', []) barcodes = self.asset_form.cleaned_data.get('barcode', []) imeis = ( self.asset_form.cleaned_data.pop('imei') if 'imei' in self.asset_form.cleaned_data else None ) ids = [] for index in range(len(sns or barcodes)): asset_data['sn'] = sns[index] if sns else None asset_data['barcode'] = barcodes[index] if barcodes else None if imeis: self.additional_info.cleaned_data['imei'] = imeis[index] device = _create_device( creator_profile, asset_data, self.additional_info.cleaned_data, self.mode, ) ids.append(device.id) messages.success(self.request, _("Assets saved.")) cat = self.request.path.split('/')[2] if len(ids) == 1: return HttpResponseRedirect( '/assets/%s/edit/device/%s/' % (cat, ids[0]) ) else: return HttpResponseRedirect( '/assets/%s/bulkedit/?select=%s' % ( cat, '&select='.join(["%s" % id for id in ids])) ) else: messages.error(self.request, _("Please correct the errors.")) return super(AddDevice, self).get(*args, **kwargs)
class AddDevice(HardwareModeMixin, SubmoduleModeMixin, AssetsBase): active_sidebar_item = 'add device' template_name = 'assets/add_device.html' def get_context_data(self, **kwargs): ret = super(AddDevice, self).get_context_data(**kwargs) ret.update({ 'asset_form': self.asset_form, 'additional_info': self.additional_info, 'form_id': 'add_device_asset_form', 'edit_mode': False, 'multivalue_fields': ['sn', 'barcode', 'imei'], }) return ret def _set_additional_info_form(self): if self.mode == 'dc': # XXX: how to clean it? if self.request.method == 'POST': self.additional_info = DeviceForm( self.request.POST, mode=self.mode, exclude='create_stock', ) else: self.additional_info = DeviceForm( mode=self.mode, exclude='create_stock', ) elif self.mode == 'back_office': if self.request.method == 'POST': self.additional_info = OfficeForm(self.request.POST) else: self.additional_info = OfficeForm() def get(self, *args, **kwargs): self.asset_form = AddDeviceForm(mode=self.mode) device_form_class = self.form_dispatcher('AddDevice') self.asset_form = device_form_class(mode=self.mode) self._set_additional_info_form() return super(AddDevice, self).get(*args, **kwargs) def post(self, *args, **kwargs): device_form_class = self.form_dispatcher('AddDevice') self.asset_form = device_form_class(self.request.POST, mode=self.mode) self._set_additional_info_form() if self.asset_form.is_valid() and self.additional_info.is_valid(): force_unlink = self.additional_info.cleaned_data.get( 'force_unlink', None, ) if self.validate_barcodes( self.asset_form.cleaned_data['barcode'], ) and not force_unlink: msg = _( "Device with barcode already exist, check" " 'force unlink' option to relink it." ) messages.error(self.request, msg) return super(AddDevice, self).get(*args, **kwargs) try: ids = _create_assets( self.request.user.get_profile(), self.asset_form, self.additional_info, self.mode ) except ValueError as e: messages.error(self.request, e.message) return super(AddDevice, self).get(*args, **kwargs) messages.success(self.request, _("Assets saved.")) cat = self.request.path.split('/')[2] if len(ids) == 1: return HttpResponseRedirect( '/assets/%s/edit/device/%s/' % (cat, ids[0]) ) else: return HttpResponseRedirect( '/assets/%s/bulkedit/?select=%s' % ( cat, '&select='.join(["%s" % id for id in ids])) ) else: messages.error(self.request, _("Please correct the errors.")) return super(AddDevice, self).get(*args, **kwargs)