class ClienteView(View): @method_decorator(permission_resource_required()) def dispatch(self, request, *args, **kwargs): return super(ClienteView, self).dispatch(request, *args, **kwargs) def get(self, request, *args, **kwargs): clientes = Cliente.objects.all() list_data = [] for c in clientes: list_data.append({ "nombre": c.nombres, "campo_search": "%s %s %s" % (c.nombres, c.apellidos, c.nro_documento), "apellidos": c.apellidos, "tipo_documento": c.tipo_documento.descripcion, "nro_documento": c.nro_documento, "direccion": c.direccion, "distrito": c.lugar.nombre, "provicia": c.lugar.provincia.nombre, "departamento": c.lugar.provincia.departamento.nombre, "lugar": "%s - %s - %s" % (c.lugar.provincia.departamento.nombre, c.lugar.provincia.nombre, c.lugar.nombre) }) dump = json.dumps(list_data) return HttpResponse(dump, status=200, content_type="application/json")
class ProductoListGetView(View): @method_decorator(permission_resource_required()) def dispatch(self, request, *args, **kwargs): return super(ProductoListGetView, self).dispatch(request, *args, **kwargs) def get(self, request, *args, **kwargs): producto_general_codigo = self.request.GET.get( "producto_general_codigo") if producto_general_codigo: productos = Producto.objects.filter( producto_general__codigo=producto_general_codigo) data = [] for p in productos: data.append({ "codigo": p.codigo, "codigo_general": p.codigo_general, "marca": p.producto_general.marca.nombre }) dump = json.dumps(data) return HttpResponse(dump, status=200, content_type="application/json") productos = Producto.objects.all() data = [] for p in productos: data.append({ "codigo": p.codigo, "codigo_general": p.codigo_general, "marca": p.producto_general.marca }) dump = json.dumps(data) return HttpResponse(dump, status=200, content_type="application/json")
class UserListView(ListView): model = User template_name = "auths/user/list.html" paginate_by = settings.PER_PAGE @method_decorator(permission_resource_required()) def dispatch(self, request, *args, **kwargs): return super(UserListView, self).dispatch(request, *args, **kwargs) def get_paginate_by(self, queryset): if 'all' in self.request.GET: return None return ListView.get_paginate_by(self, queryset) def get_queryset(self): self.o = empty(self.request, 'o', '-id') self.f = empty(self.request, 'f', 'username') self.q = empty(self.request, 'q', '') column_contains = u'%s__%s' % (self.f, 'contains') return self.model.objects.filter(**{ column_contains: self.q }).order_by(self.o) def get_context_data(self, **kwargs): context = super(UserListView, self).get_context_data(**kwargs) context['opts'] = self.model._meta context['cmi'] = 'user' context['title'] = ('Seleccione %s para cambiar') % 'Usuario' context['o'] = self.o context['f'] = self.f context['q'] = self.q.replace('/', '-') return context
class ProductoListView(ListView): model = Producto template_name = "almacen/producto/list.html" @method_decorator(permission_resource_required()) def dispatch(self, request, *args, **kwargs): return super(ProductoListView, self).dispatch(request, *args, **kwargs) def get_queryset(self): agrupar = self.request.GET.get("agrupar") query = self.model.objects.all() if agrupar: q = """ select 'af415e59-2185-4e5b-85a6-b23544355bdf' as id, producto_producto.codigo_general, count(almacen_equipo.id) as cantidad_almacen, pm.nombre as marca_nombre from producto_producto, almacen_equipo, producto_marca pm where almacen_equipo.producto_id = producto_producto.id and almacen_equipo.estado = 'ALMACEN' and pm.id = producto_producto.marca_id group by producto_producto.codigo_general, pm.nombre """ query = Producto.objects.raw(q) else: query = self.model.objects.all() return query def get_context_data(self, **kwargs): context = super(ProductoListView, self).get_context_data(**kwargs) context['title'] = "productos" context['opts'] = self.model._meta return context
class ArqueoSalidaEquipoUpdateView(View): @method_decorator(permission_resource_required()) def dispatch(self, request, *args, **kwargs): return super(ArqueoSalidaEquipoUpdateView, self).dispatch(request, *args, **kwargs) def update(self, *args, **kwargs): salida_detalle = SalidaDetalle.objects.get( id=self.kwargs['salida_detalle_pk']) equipo = salida_detalle.equipo equipo.estado = ALMACEN equipo.save() messages.success(self.request, "Equipo de en almacen") return HttpResponseRedirect(self.get_url_redirect(*args, **kwargs)) def get(self, *args, **kwargs): return self.update(*args, **kwargs) def get_url_redirect(self, *args, **kwargs): salida_detalle_id = self.kwargs['salida_detalle_pk'] salida = Salida.objects.get(salidadetalle__id=salida_detalle_id) return reverse("almacen:arqueo_salida_detail", kwargs={'salida_pk': salida.id})
class ComprobanteEstadoUpdateView(BaseUpdateView): """Acutaliza el estado de la compra para que ya este verificador completamente""" model = Compra fields = [ '', ] success_url = reverse_lazy("almacen:compra_list") @method_decorator(permission_resource_required()) def dispatch(self, request, *args, **kwargs): return super(ComprobanteEstadoUpdateView, self).dispatch(request, *args, **kwargs) def update(self, request, *args, **kwargs): """Acutaliza el estado de la compra para que ya este verificador completamente""" # validamos que todos los detalles esten completados comprobate = self.get_object() flag = True comprobate_detalles = CompraDetalle.objects.filter(compra=comprobate) for com_det in comprobate_detalles: if len(com_det.equipo_set.all()) != com_det.cantidad: flag = False if not flag: messages.error(request, "Aun no se completan los equipos") return HttpResponseRedirect( reverse("almacen:compra_detail", kwargs={'pk': comprobate.id})) comprobate.estado = True comprobate.save() messages.success(request, "Comprobaten totalmente ingresado") return HttpResponseRedirect(self.success_url) def get(self, request, *args, **kwargs): return self.update(request, *args, **kwargs)
class UserView(View): @method_decorator(permission_resource_required()) def dispatch(self, request, *args, **kwargs): return super(UserView, self).dispatch(request, *args, **kwargs) def get(self, request, *args, **kwargs): users = User.objects.all() rol = self.request.GET.get("rol") if rol: users = users.filter(groups__name=rol) data = [] for user in users: if user.person: data.append({ "username": user.username, "nombres": user.person.first_name if user.person else user.username, "apellidos": user.person.last_name if user.person else user.username, "nro_documento": user.person.identity_num if user.person else "SN", }) dump = json.dumps(data) return HttpResponse(dump, status=201, content_type="application/json")
class SalidaUpdateView(BaseUpdateView): model = Salida form_class = SalidaModelForm @method_decorator(permission_resource_required()) def dispatch(self, request, *args, **kwargs): return super(SalidaUpdateView, self).dispatch(request, *args, **kwargs) def update(self, request, *args, **kwargs): d = self.get_object() d.estado = True print("update") d.save() msg = "La salida se acepto exitosamente" messages.success(self.request, msg) return HttpResponseRedirect(self.get_success_url()) def get(self, request, *args, **kwargs): return self.update(request, *args, **kwargs) def get_success_url(self): d = self.get_object() return reverse("vendedor:salida_detail", kwargs={"pk": d.id})
class ArqueoSalidaCerrar(View): @method_decorator(permission_resource_required()) def dispatch(self, request, *args, **kwargs): return super(ArqueoSalidaCerrar, self).dispatch(request, *args, **kwargs) def update(self, *args, **kwargs): salida = Salida.objects.get(id=self.kwargs['salida_pk']) self.vendedor = salida.vendedor salida_detalles = SalidaDetalle.objects.filter(salida=salida, equipo__estado=SALIDA) if salida_detalles: messages.error(self.request, "Tiene Equipos sin areglar") return HttpResponseRedirect( reverse("almacen:arqueo_salida_detail", kwargs={"salida_pk": salida.id})) else: salida.arqueado = True messages.success(self.request, "Salida Cerrada") salida.save() return HttpResponseRedirect(self.get_url_redirect(*args, **kwargs)) def get(self, *args, **kwargs): return self.update(*args, **kwargs) def get_url_redirect(self, *args, **kwargs): return reverse("almacen:arqueo_salida_list", kwargs={'user_pk': self.vendedor.id})
class PedidoListView(ListView): model = Pedido template_name = "vendedor/pedido/list.html" @method_decorator(permission_resource_required()) def dispatch(self, request, *args, **kwargs): return super(PedidoListView, self).dispatch(request, *args, **kwargs) def get_paginate_by(self, queryset): if 'all' in self.request.GET: return None return ListView.get_paginate_by(self, queryset) def get_queryset(self): self.o = empty(self.request, 'o', 'codigo') self.f = empty(self.request, 'f', 'ruta') self.q = empty(self.request, 'q', '') column_contains = u'%s__%s' % (self.f, 'contains') return self.model.objects.filter(**{column_contains: self.q}, distribuidor=self.request.user) \ .order_by('-estado') def get_context_data(self, **kwargs): context = super(PedidoListView, self).get_context_data(**kwargs) context['opts'] = self.model._meta context['cmi'] = 'marca' context['title'] = ('Seleccione %s para Cambiar') % ('marca') context['o'] = self.o context['f'] = self.f context['q'] = self.q.replace('/', '-') return context
class EquipoListView(ListView): model = Equipo template_name = "reporte/equipo/list.html" @method_decorator(permission_resource_required()) def dispatch(self, request, *args, **kwargs): return super(EquipoListView, self).dispatch(request, *args, **kwargs) def get_queryset(self): self.o = empty(self.request, 'o', 'imei') self.f = empty(self.request, 'f', 'estado') self.q = empty(self.request, 'q', '') column_contains = u'%s__%s' % (self.f, 'contains') estado = self.request.GET.get('estado') contable = self.request.GET.get('contable') query = self.model.objects.all() print(query) print(estado) print(contable) if estado != "all": query = query.filter(estado=estado) if contable != 'all': if contable == 'true': query = query.filter(contable=True) else: query = query.filter(contable=False) return query.filter(**{column_contains: self.q}).order_by(self.o) def get_context_data(self, **kwargs): context = super(EquipoListView, self).get_context_data(**kwargs) context['opts'] = self.model._meta context['estados'] = ESTADO_EQUIPO_CHOICES context['title'] = "reporte Equipo" return context
class PedidoStateUpdate(BaseUpdateView): model = Pedido success_url = reverse_lazy('vendedor:pedido_list') @method_decorator(permission_resource_required()) def dispatch(self, request, *args, **kwargs): return super(PedidoStateUpdate, self).dispatch(request, *args, **kwargs) def update(self, request, *args, **kwargs): try: d = self.get_object() d.estado = False d.save() msg = 'El %(name)s "%(obj)s" fue dado de baja satisfactoriamente.' % { 'name': self.model._meta.verbose_name, 'obj': d } messages.success(self.request, msg) except Exception as e: messages.error(request, e) return HttpResponseRedirect(self.success_url) def get(self, request, *args, **kwargs): return self.update(request, *args, **kwargs)
class CompraDetalleServiceView(DetailView): @method_decorator(permission_resource_required()) def dispatch(self, request, *args, **kwargs): return super(CompraDetalleServiceView, self).dispatch(request, *args, **kwargs) def get(self, request, *args, **kwargs): compra_detalle_id = self.request.GET.get("compra_detalle_id") compra_detalle = CompraDetalle.objects.get(id=compra_detalle_id) equipos = Equipo.objects.filter(compra_detalle=compra_detalle) equipos_dic = [] for equipo in equipos: equipos_dic.append({ "producto_codigo": equipo.producto.codigo, "imei": equipo.imei }) registrados = len(equipos) data = { "registrados": registrados, "equipos": equipos_dic, "cantidad": compra_detalle.cantidad, "contable": compra_detalle.compra.contable } dump = json.dumps(data) print(dump) return HttpResponse(dump, status=200, content_type="application/json")
class EquipoMenuListView(ListView): model = Equipo template_name = "almacen/equipo/list_menu.html" @method_decorator(permission_resource_required()) def dispatch(self, request, *args, **kwargs): return super(EquipoMenuListView, self).dispatch(request, *args, **kwargs) def get_paginate_by(self, queryset): if 'all' in self.request.GET: return None return ListView.get_paginate_by(self, queryset) def get_queryset(self): self.o = empty(self.request, 'o', 'imei') self.f = empty(self.request, 'f', 'producto__id') self.q = empty(self.request, 'q', '') column_contains = u'%s__%s' % (self.f, 'contains') return self.model.objects.filter(**{ column_contains: self.q }).order_by(self.o) def get_context_data(self, **kwargs): context = super(EquipoMenuListView, self).get_context_data(**kwargs) context['opts'] = self.model._meta context['title'] = "equipos" return context
class EquiposAddServicioView(View): u"""Ingreso directo""" @method_decorator(permission_resource_required()) def dispatch(self, request, *args, **kwargs): return super(EquiposAddServicioView, self).dispatch(request, *args, **kwargs) def post(self, request, *args, **kwargs): data = json.loads(request.body) producto = Producto.objects.get(id=data['producto_id']) try: compra_detalle_id = data['compra_detalle_id'] except: compra_detalle_id = False cantidad = 0 for e in data['equipos']: equipo = Equipo() equipo.user = self.request.user equipo.estado = ALMACEN if compra_detalle_id: equipo.compra_detalle_id = compra_detalle_id equipo.imei = e['imei'] equipo.producto = producto equipo.contable = data['contable'] equipo.save() cantidad = cantidad + 1 messages.success(self.request, "%s Equipos agregados satisfactoriamente" % cantidad) return HttpResponse({ "ss": "222", })
class EquipoDeleteView(BaseDeleteView): u"""Eliminar Equipo""" model = Equipo success_url = reverse_lazy("almacen:equipo_list_menu") @method_decorator(permission_resource_required()) def dispatch(self, request, *args, **kwargs): user = self.request.user # buscando si es superadmin flag = False for g in user.groups.all(): if g.name == SUPERADMIN or user.is_staff == True: flag = True if user.is_staff: flag = True if not flag: messages.error(self.request, "Ud. No es administrador") return HttpResponseRedirect(reverse("almacen:equipo_list_menu")) pk = self.kwargs['pk'] if not pk: return HttpResponseRedirect(self.success_url) self.kwargs['pk'] = pk try: self.get_object() except Exception as e: messages.error(self.request, e) return HttpResponseRedirect(self.success_url) return super(EquipoDeleteView, self).dispatch(request, *args, **kwargs) def delete(self, request, *args, **kwargs): try: d = self.get_object() deps, msg = get_dep_objects(d) if deps: messages.warning( self.request, 'No se Puede eliminar %(name)s' % {"name": self.model._meta.verbose_name + ' "' + (d) + '"'}) raise Exception(msg) d.delete() msg = 'The %(name)s "%(obj)s" was deleted successfully.' % { 'name': self.model._meta.verbose_name, 'obj': d } if not d.id: messages.success(self.request, msg) except Exception as e: messages.error(request, e) return HttpResponseRedirect(self.success_url) def get(self, request, *args, **kwargs): return self.delete(request, *args, **kwargs)
class SalidaCreateTemplateView(TemplateView): model = Salida template_name = "almacen/salida/form.html" @method_decorator(permission_resource_required()) def dispatch(self, request, *args, **kwargs): return super(SalidaCreateTemplateView, self).dispatch(request, *args, **kwargs) def get_context_data(self, **kwargs): context = super(SalidaCreateTemplateView, self).get_context_data(**kwargs) distribuidores = User.objects.filter(groups__name=DISTRIBUIDOR) rutas = RUTA_CHOICES print(distribuidores) context['title'] = 'Salida de Productos' context['opts'] = self.model._meta context['distribuidores'] = distribuidores context['rutas'] = rutas return context def post(self, request, *args, **kwargs): try: with transaction.atomic(): data = json.loads(request.body) user = self.request.user username = data['distribuidor'] ruta = data['ruta'] distribuidor = User.objects.get(username=username) salida = Salida() salida.vendedor = distribuidor salida.ruta = ruta salida.user = user salida.save() # cargando detalles for e in data['equipos']: sd = SalidaDetalle() sd.salida = salida equipo = Equipo.objects.get(imei=e['imei']) sd.equipo = equipo sd.save() equipo.estado = SALIDA equipo.save() salida_data = { 'id': salida.id, } dump = json.dumps(salida_data, cls=UUIDEncoder) return HttpResponse(dump, content_type="application/json", status=201) except IntegrityError as e: print("error", e)
class TipoComprobantesJson(View): u"""Lista de comprobantes""" @method_decorator(permission_resource_required()) def dispatch(self, request, *args, **kwargs): return super(TipoComprobantesJson, self).dispatch(request, *args, **kwargs) def get(self, *args, **kwargs): tipo_comprobantes = TipoComprobantePago.objects.all() dump = serializers.serialize('json', tipo_comprobantes) return HttpResponse(dump, content_type="application/json")
class SalidaDetailView(DetailView): model = Salida template_name = "vendedor/salida/detail.html" @method_decorator(permission_resource_required()) def dispatch(self, request, *args, **kwargs): return super(SalidaDetailView, self).dispatch(request, *args, **kwargs) def get_context_data(self, **kwargs): context = super(SalidaDetailView, self).get_context_data(**kwargs) context['opts'] = self.model._meta context['title'] = "Salida Detalle" return context
class UserDetailView(DetailView): model = User template_name = "almacen/user/detail.html" @method_decorator(permission_resource_required()) def dispatch(self, request, *args, **kwargs): return super(UserDetailView, self).dispatch(request, *args, **kwargs) def get_context_data(self, **kwargs): context = super(UserDetailView, self).get_context_data(**kwargs) salidas = Salida.objects.filter(vendedor=self.object) context['salidas'] = salidas return context
class VentaListView(ListView): model = Venta template_name = "venta/venta/list.html" @method_decorator(permission_resource_required()) def dispatch(self, request, *args, **kwargs): return super(VentaListView, self).dispatch(request, *args, **kwargs) def get_context_data(self, **kwargs): context = super(VentaListView, self).get_context_data(**kwargs) context['opts'] = self.model._meta context['title'] = "Comprobante Electronico" return context
class VentaDetailView(DetailView): model = Venta template_name = "venta/venta/detail.html" @method_decorator(permission_resource_required()) def dispatch(self, request, *args, **kwargs): return super(VentaDetailView, self).dispatch(request, *args, **kwargs) def get_context_data(self, **kwargs): context = super(VentaDetailView, self).get_context_data(**kwargs) productos_generales = VentaDetalle.objects.values( 'equipo__producto__producto_general', 'equipo__producto__producto_general__codigo', 'precio_unitario').annotate( precio_total=Sum('precio_total'), base_imponible=Sum('base_imponible'), cantidad=Sum('cantidad')).filter(venta=self.get_object()) for pr in productos_generales: equipos = Equipo.objects.filter( ventadetalle__venta=self.get_object(), producto__producto_general__id=pr[ 'equipo__producto__producto_general']) pr['equipos'] = equipos qr_url = qr_url_from_text(self.object.qr, version=5, image_format="png", error_correction="L") context['opts'] = self.model._meta context['qr_url'] = qr_url context['productos_generales'] = productos_generales context['empresa'] = Empresa.objects.get(estado=True) context['title'] = "Venta" return context def get_template_names(self): if self.get_object().tipo_comprobante.codigo == "01": return ['venta/venta/factura.html'] if self.get_object().tipo_comprobante.codigo == "03": return ['venta/venta/boleta.html'] if self.get_object().tipo_comprobante.codigo == "99": return ['venta/venta/boleta.html']
class SalidaDetailView(DetailView): u"""Metodo para imprimir la salida""" model = Salida template_name = "almacen/salida/detail.html" @method_decorator(permission_resource_required()) def dispatch(self, request, *args, **kwargs): return super(SalidaDetailView, self).dispatch(request, *args, **kwargs) def get_context_data(self, **kwargs): context = super(SalidaDetailView, self).get_context_data(**kwargs) context['opts'] = self.model._meta context['title'] = "salida" return context
class ArqueoSalidaDetailView(DetailView): u"""Formulario para reingresar productos al almacen""" model = Salida pk_url_kwarg = 'salida_pk' template_name = "almacen/arqueo/salida_detail.html" @method_decorator(permission_resource_required()) def dispatch(self, request, *args, **kwargs): return super(ArqueoSalidaDetailView, self).dispatch(request, *args, **kwargs) def get_context_data(self, **kwargs): context = super(ArqueoSalidaDetailView, self).get_context_data(**kwargs) detalles = SalidaDetalle.objects.filter( salida=self.get_object()).order_by("equipo__estado") context['title'] = "%s" % self.get_object().codigo context['opts'] = self.model._meta context['detalles'] = detalles return context def post(self, request, *args, **kwargs): imei = self.request.POST.get('imei') salida_pk = self.kwargs['salida_pk'] try: salida_detalle = SalidaDetalle.objects.get(salida__id=salida_pk, equipo__imei=imei) if salida_detalle.equipo.estado == ALMACEN: messages.info(request, "Equipo ya se encuentra en almacen") return HttpResponseRedirect( self.get_url_redirect(*args, **kwargs)) except: messages.error(request, "Equipo no se encuentra en esta salida") return HttpResponseRedirect(self.get_url_redirect(*args, **kwargs)) equipo = salida_detalle.equipo equipo.estado = ALMACEN equipo.save() messages.success(self.request, "Equipo Ingresado a almacen") return HttpResponseRedirect(self.get_url_redirect(*args, **kwargs)) def get_url_redirect(self, *args, **kwargs): return reverse("almacen:arqueo_salida_detail", kwargs={'salida_pk': self.kwargs['salida_pk']})
class EquipoDetailView(DetailView): u""" Vista para realizar manenimiento de equipo """ model = Equipo template_name = "almacen/equipo/detail.html" @method_decorator(permission_resource_required()) def dispatch(self, request, *args, **kwargs): return super(EquipoDetailView, self).dispatch(request, *args, **kwargs) def get_context_data(self, **kwargs): context = super(EquipoDetailView, self).get_context_data(**kwargs) context['opts'] = self.model._meta context['title'] = "Equipo" return context
class CompraDetalleDetailView(DetailView): template_name = "almacen/compra_detalle/detail.html" model = CompraDetalle @method_decorator(permission_resource_required()) def dispatch(self, request, *args, **kwargs): return super(CompraDetalleDetailView, self).dispatch(request, *args, **kwargs) def get_context_data(self, **kwargs): context = super(CompraDetalleDetailView, self).get_context_data(**kwargs) producto = Producto.objects.get(id=self.kwargs['producto_pk']) context['producto'] = producto context['opts'] = self.model._meta context['title'] = "Producto" return context
class ProductoDetailView(DetailView): u""" Vista para agregar productos directamente """ model = Producto template_name = "almacen/producto/detail.html" @method_decorator(permission_resource_required()) def dispatch(self, request, *args, **kwargs): return super(ProductoDetailView, self).dispatch(request, *args, **kwargs) def get_context_data(self, **kwargs): context = super(ProductoDetailView, self).get_context_data(**kwargs) context['opts'] = self.model._meta context['title'] = "Producto" return context
class EquipoGetJson(View): u"""Equipos Get retorna equipos cargados en almacen a un usuario""" # modificar este metodo para realizar la venta directa del almacen @method_decorator(permission_resource_required()) def dispatch(self, request, *args, **kwargs): return super(EquipoGetJson, self).dispatch(request, *args, **kwargs) def get(self, *args, **kwargs): ruta = self.request.GET.get("ruta") estado = self.request.GET.get("estado") imei = self.request.GET.get("imei") if imei: try: equipo = Equipo.objects.get(imei=imei, estado=estado) try: precio_venta = PrecioVenta.objects.get( producto_general__producto__equipo=equipo, ruta=ruta) except Exception as e: data = {"message": e} dump = json.dumps(data) return HttpResponse(dump, status=400, content_type="application/json") data = { 'imei': equipo.imei, 'precio_venta': Decimal(precio_venta.precio), 'model': equipo.producto.codigo, } dump = json.dumps(data) return HttpResponse(dump, status=200, content_type="application/json") except Exception as e: data = {"message": e} dump = json.dumps(data) return HttpResponse(dump, status=400, content_type="application/json")
class EquipoUpdateView(UpdateView): u"""Actualizar equipo""" model = Equipo form_class = EquipoUpdateModelForm template_name = "almacen/equipo/update.html" @method_decorator(permission_resource_required()) def dispatch(self, request, *args, **kwargs): user = self.request.user # buscando si es superadmin flag = False for g in user.groups.all(): if g.name == SUPERADMIN: flag = True if user.is_staff: flag = True if not flag: messages.error(self.request, "Ud. No es administrador") return HttpResponseRedirect(reverse("almacen:equipo_list_menu")) return super(EquipoUpdateView, self).dispatch(request, *args, **kwargs) def get_context_data(self, **kwargs): context = super(EquipoUpdateView, self).get_context_data(**kwargs) context['opts'] = self.model._meta context['title'] = "Actualiza Equipo" return context def form_valid(self, form): self.object = form.save(commit=False) msg = ('La %(name)s "%(obj)s" fue modificado satisfactoriamente.') % { 'name': self.model._meta.verbose_name, 'obj': self.object } messages.success(self.request, msg) return super(EquipoUpdateView, self).form_valid(form) def get_success_url(self): return reverse("almacen:equipo_detail", kwargs={'pk': self.get_object().id})
class ProductoDetailCountAlmacenServiceView(View): @method_decorator(permission_resource_required()) def dispatch(self, request, *args, **kwargs): return super(ProductoDetailCountAlmacenServiceView, self).dispatch(request, *args, **kwargs) def get(self, *args, **kwargs): producto = Producto.objects.get(id=self.kwargs["pk"]) almacen = Equipo.objects.filter(producto=producto, estado=ALMACEN) vendidos = Equipo.objects.filter(producto=producto, estado=VENDIDO) salida = Equipo.objects.filter(producto=producto, estado=SALIDA) data = { 'almacen': len(almacen), 'vendidos': len(vendidos), 'salida': len(salida), } dump = json.dumps(data) return HttpResponse(dump, content_type="application/json")