text: from django.contrib import admin
  from people.models import Direccion
  
  from store.models import (Categoria, Empresa, Producto,
                            Proveedor, OrdenMantenimiento, DetalleOrden, RevisionTecnica, Compra, DetalleCompra)
  import nested_admin
  import admin_thumbnails
  
  class DirecionAdminInline(admin.TabularInline):
      model = Direccion
  
  
  class EmpresaAdmin(admin.ModelAdmin):
      list_display = ('nombre', 'descripcion', 'contacto', 'email', 'telefono')
  
      fieldsets = (
          (('Información de Empresa'), {'fields': ('nombre', 'descripcion', 'mision', 'vision', 'contacto', 'email', 'telefono',
                                                   'celular', 'direccion')}),
      )
  
  
  class ProveedorAdmin(admin.ModelAdmin):
      list_display = ('nombre', 'contacto', 'email',
                      'telefono', 'celular', 'direccion')
  
      fieldsets = (
          (('Información de Proveedor'), {'fields': (
              'nombre', 'contacto', 'email', 'telefono', 'celular', 'direccion')}),
      )
  
  
  class CategoriaAdmin(admin.ModelAdmin):
      list_display = ('nombre', 'descripcion', 'empresa')
      search_fields = ('nombre', 'empresa')
      list_filter = ('nombre', 'empresa')
      fieldsets = (
          (('Información de Categoría'), {'fields': (
              'nombre', 'descripcion', 'empresa')}),
      )
  
  
  @admin_thumbnails.thumbnail('image')
  class ProductoAdmin(admin.ModelAdmin):
      list_display = ('nombre', 'cantidad', 'descripcion', 'categoria','image_thumbnail')
      search_fields = ('nombre', 'categoria')
      list_filter = ('nombre', 'categoria')
  
      def save_model(self, request, obj, form, change):
          obj.calcular_cantidad()
          obj.save()
     
  
  class RevisionTecnicaAdminInline(nested_admin.NestedTabularInline):
      model = RevisionTecnica
      extra = 1
  
  
  class DetalleOrdenInline(nested_admin.NestedTabularInline):
      model = DetalleOrden
      inlines = (RevisionTecnicaAdminInline,)
      extra = 1
  
  
  class OrdenMantenimientoAdmin(nested_admin.NestedModelAdmin):
      list_display = ('fecha_registro', 'estado', 'descripcion', 'cliente')
      search_fields = ('descripcion', 'estado')
      list_filter = ('descripcion', 'estado', 'cliente')
      inlines = (DetalleOrdenInline,)
  
  
  class DetalleCompraInline(admin.TabularInline):
      model = DetalleCompra
      fields = ('producto', 'cantidad', 'precio_unitario', 'impuesto')
  
  
  class CompraAdmin(admin.ModelAdmin):
      fields = ('fecha_compra', 'proveedor', 'estado',)
      list_display = ('fecha_compra', 'proveedor', 'estado',
                      'subtotal', 'impuesto', 'total')
      search_fields = ('proveedor', 'estado')
      list_filter = ('fecha_compra', 'estado', 'proveedor')
      inlines = (DetalleCompraInline,)
  
      def save_formset(self, request, form, formset, change):
          instances = formset.save(commit=False)
          for instance in instances:
              instance.calcular_total()
              instance.save()
              producto = Producto.objects.get(id=instance.producto.id)
              producto.cantidad = producto.cantidad+instance.cantidad
              producto.save()
          formset.instance.calcular_impuesto()
          formset.instance.calcular_subtotal()
          formset.instance.calcular_total()
          formset.instance.save()
  
  
  admin.site.register(Empresa, EmpresaAdmin)
  admin.site.register(Proveedor, ProveedorAdmin)
  admin.site.register(Categoria, CategoriaAdmin)
  admin.site.register(Producto, ProductoAdmin)
  admin.site.register(OrdenMantenimiento, OrdenMantenimientoAdmin)
  admin.site.register(Compra, CompraAdmin)
  