Exemplo n.º 1
0
 def _set_additional_info_form(self):
     if self.mode == 'dc':
         # XXX: how do it better, differ only by one arg?
         if self.request.method == 'POST':
             self.additional_info = DeviceForm(
                 self.request.POST,
                 instance=self.asset.device_info,
                 mode=self.mode,
             )
         else:
             self.additional_info = DeviceForm(
                 instance=self.asset.device_info,
                 mode=self.mode,
             )
     elif self.mode == 'back_office':
         # XXX: how do it better, differ only by one arg?
         if self.request.method == 'POST':
             self.additional_info = OfficeForm(
                 self.request.POST,
                 instance=self.asset.office_info,
             )
         else:
             self.additional_info = OfficeForm(
                 instance=self.asset.office_info,
             )
             fields = ['imei', 'purpose']
             for field in fields:
                 if field in self.asset_form.fields:
                     self.asset_form.fields[field].initial = (
                         getattr(self.asset.office_info, field, '')
                     )
Exemplo n.º 2
0
 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)
Exemplo n.º 3
0
 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()
Exemplo n.º 4
0
 def get(self, *args, **kwargs):
     self.initialize_vars()
     self.asset = get_object_or_404(Asset.admin_objects,
                                    id=kwargs.get('asset_id'))
     if not self.asset.device_info:  # it isn't device asset
         raise Http404()
     mode = _get_mode(self.request)
     self.asset_form = EditDeviceForm(instance=self.asset, mode=mode)
     if self.asset.type in AssetType.BO.choices:
         self.office_info_form = OfficeForm(instance=self.asset.office_info)
     self.device_info_form = DeviceForm(
         instance=self.asset.device_info,
         mode=mode,
     )
     self.parts = Asset.objects.filter(part_info__device=self.asset)
     return super(EditDevice, self).get(*args, **kwargs)
Exemplo n.º 5
0
 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)
Exemplo n.º 6
0
 def post(self, *args, **kwargs):
     self.initialize_vars()
     post_data = self.request.POST
     self.asset = get_object_or_404(Asset.admin_objects,
                                    id=kwargs.get('asset_id'))
     mode = _get_mode(self.request)
     self.asset_form = EditDeviceForm(
         post_data,
         instance=self.asset,
         mode=mode,
     )
     self.device_info_form = DeviceForm(
         post_data,
         mode=mode,
         instance=self.asset.device_info,
     )
     self.part_form = MoveAssetPartForm(post_data)
     if 'move_parts' in post_data.keys():
         destination_asset = post_data.get('new_asset')
         if not destination_asset or not Asset.objects.filter(
                 id=destination_asset, ):
             messages.error(
                 self.request,
                 _("Source device asset does not exist"),
             )
         elif kwargs.get('asset_id') == destination_asset:
             messages.error(
                 self.request,
                 _("You can't move parts to the same device"),
             )
         else:
             for part_id in post_data.get('part_ids'):
                 info_part = PartInfo.objects.get(asset=part_id)
                 info_part.device_id = destination_asset
                 info_part.save()
             messages.success(self.request, _("Selected parts was moved."))
     elif 'asset' in post_data.keys():
         if self.asset.type in AssetType.BO.choices:
             self.office_info_form = OfficeForm(
                 post_data,
                 self.request.FILES,
             )
         if all(
             (self.asset_form.is_valid(), self.device_info_form.is_valid(),
              self.asset.type not in AssetType.BO.choices
              or self.office_info_form.is_valid())):
             modifier_profile = self.request.user.get_profile()
             self.asset = _update_asset(modifier_profile, self.asset,
                                        self.asset_form.cleaned_data)
             if self.asset.type in AssetType.BO.choices:
                 self.asset = _update_office_info(
                     modifier_profile.user, self.asset,
                     self.office_info_form.cleaned_data)
             self.asset = _update_device_info(
                 modifier_profile.user, self.asset,
                 self.device_info_form.cleaned_data)
             if self.device_info_form.cleaned_data.get('create_stock'):
                 self.asset.create_stock_device()
             self.asset.save(user=self.request.user)
             messages.success(self.request, _("Assets edited."))
             cat = self.request.path.split('/')[2]
             return HttpResponseRedirect('/assets/%s/edit/device/%s/' %
                                         (cat, self.asset.id))
         else:
             messages.error(self.request, _("Please correct the errors."))
             messages.error(
                 self.request,
                 self.asset_form.non_field_errors(),
             )
     return super(EditDevice, self).get(*args, **kwargs)