Exemplo n.º 1
0
 def get(self, *args, **kwargs):
     try:
         self.model_type_id = int(self.kwargs.get('type', ''))
     except ValueError:
         self.model_type_id = None
     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(DeviceModelGroup, id=self.group_id)
     if self.group:
         self.query = self.group.devicemodel_set.all()
     else:
         self.query = DeviceModel.objects.filter(
                 type=self.model_type_id).filter(group=None)
     self.unassigned_count = DeviceModel.objects.filter(
             type=self.model_type_id
         ).filter(
             group=None
         ).count()
     self.groups = list(DeviceModelGroup.objects.filter(
         type=self.model_type_id))
     for g in self.groups:
         g.count = g.get_count()
     if not self.form:
         self.form = DeviceModelGroupForm(instance=self.group)
     return super(CatalogDevice, self).get(*args, **kwargs)
Exemplo n.º 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(DeviceModel, id=items[0])
             target = DeviceModelGroup(name=item.name, type=item.type)
             target.save(user=self.request.user)
         else:
             target = get_object_or_404(DeviceModelGroup, id=target_id)
         for item in items:
             model = get_object_or_404(DeviceModel, 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(DeviceModelGroup,
                                            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(DeviceModelGroup,
                                            id=self.group_id)
         self.form = DeviceModelGroupForm(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)