Exemple #1
0
 def setUp(self):
     # fake settings needed to run plugin, even with mocked library.
     settings.OPENSTACK_URL = '/'
     settings.OPENSTACK_USER = '******'
     settings.OPENSTACK_PASSWORD = '******'
     # model group for sample costs calculations.
     self.cmg = ComponentModelGroup()
     self.cmg.price = 100.0
     self.cmg.per_size = 1
     self.cmg.size_modifier = 1
     self.cmg.save()
     self.mk = MarginKind()
     self.mk.margin = 200
     self.mk.remarks = 'Margin kind 200%'
     self.mk.save()
Exemple #2
0
 def post(self, *args, **kwargs):
     if not self.request.user.get_profile().has_perm(
             Perm.edit_device_info_financial):
         raise HttpResponseForbidden(
                 "You have no permission to edit catalog")
     if 'move' in self.request.POST:
         items = self.request.POST.getlist('items')
         if not items:
             messages.error(self.request, "Nothing to move.")
             return HttpResponseRedirect(self.request.path)
         target_id = self.request.POST.get('target', '')
         if target_id == 'none':
             target = None
         elif target_id == 'new':
             item = get_object_or_404(ComponentModel, id=items[0])
             target = ComponentModelGroup(name=item.name, type=item.type)
             target.save(user=self.request.user)
         else:
             target = get_object_or_404(ComponentModelGroup, id=target_id)
         for item in items:
             model = get_object_or_404(ComponentModel, id=item)
             model.group = target
             model.save(user=self.request.user)
         self.update_cached(target)
         messages.success(self.request, "Items moved.")
         return HttpResponseRedirect(self.request.path)
     elif 'delete' in self.request.POST:
         try:
             self.group_id = int(self.kwargs.get('group', ''))
         except ValueError:
             messages.error(self.request, "No such group.")
         else:
             self.group = get_object_or_404(ComponentModelGroup,
                                            id=self.group_id)
             self.group.price = 0
             self.group.save(user=self.request.user)
             self.update_cached(self.group)
             self.group.delete()
             messages.warning(self.request,
                              "Group '%s' deleted." % self.group.name)
         return HttpResponseRedirect(self.request.path+'..')
     else:
         try:
             self.group_id = int(self.kwargs.get('group', ''))
         except ValueError:
             self.group_id = None
             self.group = None
         else:
             self.group = get_object_or_404(ComponentModelGroup,
                                            id=self.group_id)
         self.form = ComponentModelGroupForm(self.request.POST,
                                             instance=self.group)
         if self.form.is_valid():
             self.form.save(commit=False)
             self.form.instance.save(user=self.request.user)
             self.update_cached(self.group)
             messages.success(self.request, "Changes saved.")
             return HttpResponseRedirect(self.request.path)
         else:
             messages.error(self.request, "Correct the errors.")
     return self.get(*args, **kwargs)
Exemple #3
0
 def test_disk_share(self):
     storage_dev = Device.create(
         sn='device',
         model_type=DeviceType.storage,
         model_name='storage device',
     )
     storage_dev.save()
     share_group = ComponentModelGroup(
         price=1,
         type=ComponentType.share,
         per_size=False,
         size_unit='',
         size_modifier=1,
     )
     share_group.save()
     share_model = ComponentModel(
         speed=0,
         cores=0,
         size=7,
         type=ComponentType.share,
         group=share_group,
         family='',
     )
     share_model.save()
     disk_share = DiskShare(
         device=storage_dev,
         model=share_model,
         share_id=1,
         label="share",
         size=7,
         snapshot_size=5,
         wwn='123456789012345678901234567890123',
         full=True,
     )
     disk_share.save()
     share_mount = DiskShareMount(
         share=disk_share,
         device=storage_dev,
         size=17,
     )
     share_mount.save()
     today = date.today()
     this_month = date(year=today.year, month=today.month, day=1)
     pricing_group = PricingGroup(
         name='group',
         date=this_month,
     )
     pricing_group.save()
     pricing_group.devices.add(storage_dev)
     pricing_group.save()
     pricing_formula = PricingFormula(
         group=pricing_group,
         component_group=share_group,
         formula='3+size+11*variable',
     )
     pricing_formula.save()
     pricing_variable = PricingVariable(
         name='variable',
         group=pricing_group,
         aggregate=PricingAggregate.sum,
     )
     pricing_variable.save()
     pricing_value = PricingValue(
         device=storage_dev,
         variable=pricing_variable,
         value=13,
     )
     pricing_value.save()
     variable_value = pricing_variable.get_value()
     self.assertEqual(variable_value, 13)
     formula_value = pricing_formula.get_value(size=7)
     self.assertEqual(formula_value, 3 + 7 + 11 * 13)
     share_price = disk_share.get_price()
     self.assertEqual(share_price, 3 + (7.0 + 5.0) / 1024 + 11 * 13)
     mount_price = share_mount.get_price()
     self.assertEqual(mount_price, 3 + 17.0 / 1024 + 11 * 13)