daily pastebin goal
33%
SHARE
TWEET

Untitled

a guest Jan 21st, 2018 52 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. # -*- encoding: utf-8 -*-
  2.  
  3. from django.db.models import *
  4. from django.utils.translation import ugettext as _
  5.  
  6. from imagekit.models import ImageModel
  7.  
  8. from loja.managers import *
  9.  
  10. _CHAR = {'max_length':255}
  11. _NULL = {'null': True, 'blank': True}
  12. _DECI = {'decimal_places': 5, 'max_digits': 20}
  13.  
  14. class Categoria(Model):
  15.     u'''
  16.    Categoria de um produto da Loja Virtual.
  17.    Ex: Material esportivo, eletrônico, etc.
  18.    '''
  19.    
  20.     # Nome do Produto
  21.     nome = CharField(_(u"Nome"), **_CHAR)
  22.  
  23.     def __unicode__(self):
  24.         return self.nome
  25.  
  26.     @permalink
  27.     def get_absolute_url(self):
  28.         return ('loja_categoria', [str(self.id)])
  29.  
  30.     class Meta:
  31.         verbose_name = _(u"Categoria")
  32.         verbose_name_plural = _(u"Categorias")
  33.         ordering = ["nome"]
  34.  
  35. class Produto(ImageModel):
  36.     u'''
  37.    Produto da Loja Virtual.
  38.    '''
  39.  
  40.     # Nome do Produto
  41.     nome = CharField(_(u"Nome"), **_CHAR)
  42.  
  43.     # Slug (serve para a URL)
  44.     slug = SlugField(_(u"URL Amigável"), **_CHAR)
  45.    
  46.     # Ex: Material esportivo, eletrônico, etc
  47.     categoria = ForeignKey(Categoria, verbose_name=_(u"Categoria"), null=True)
  48.    
  49.     # Foto do produto
  50.     # TODO: deve ser redimensionada para 232x182, 55x45, 123x100
  51.     foto = ImageField(verbose_name=_(u"Foto"), upload_to='imagens/loja/')
  52.    
  53.     # Preço em boletas
  54.     preco = DecimalField(_(u"Preço"), help_text=_(u"Valor em B$"), **_DECI)
  55.    
  56.     # Define se o produto é novo ou não
  57.     novo = BooleanField(_(u"Novo"), default=True)
  58.  
  59.     # Fica nos detalhes do produto, é o titulo com algumas características
  60.     subtitulo = CharField(_(u"Subtítulo interno"), **_CHAR)
  61.  
  62.     # Texto descritivo do produto
  63.     texto = TextField(_(u"Descrição"))
  64.  
  65.     # Data de publicação
  66.     data_publicacao = DateTimeField(
  67.         _(u"Data de Publicação"), auto_now_add=True, editable=False
  68.     )
  69.    
  70.     # Flag que define se o produto aparecerá na loja ou não
  71.     publicado = BooleanField(_(u"Publicado"), default=False)
  72.  
  73.     # Manager's
  74.     objects = Manager()
  75.     publicados = PublicadosManager()
  76.  
  77.     def __unicode__(self):
  78.         return self.nome
  79.  
  80.     @permalink
  81.     def get_absolute_url(self):
  82.         return ('loja_detalhe', [str(self.id)])
  83.  
  84.     @permalink
  85.     def finalizar_compra_url(self):
  86.         return ('loja_finalizacao', [str(self.id)])
  87.  
  88.     class IKOptions:
  89.         spec_module = 'loja.specs'
  90.         cache_dir = 'imagens/cache'
  91.         image_field = 'foto'
  92.  
  93.     class Meta:
  94.         ordering = ["-data_publicacao"]
  95.         verbose_name = _(u"Produto")
  96.         verbose_name_plural = _(u"Produtos")
  97.  
  98. class Caracteristica(Model):
  99.  
  100.     produto = ForeignKey(Produto, verbose_name=_(u"Produto"))
  101.     chave = CharField(_(u"Chave"), **_CHAR)
  102.     valor = CharField(_(u"Valor"), **_CHAR)
  103.  
  104.     def __unicode__(self):
  105.         return "%s : %s" % (self.chave, self.valor)
  106.  
  107.     class Meta:
  108.         verbose_name = _(u"Característica do produto")
  109.         verbose_name_plural = _(u"Características do produto")
  110.         unique_together = ('produto', 'valor', 'chave')
  111.  
  112. class Atributo(Model):
  113.  
  114.     # Nome do Atributo
  115.     nome = CharField(_(u"Nome"), **_CHAR)
  116.  
  117.     def __unicode__(self):
  118.         return self.nome
  119.    
  120.     class Meta:
  121.         verbose_name = _(u"Atributo do produto")
  122.         verbose_name_plural = _(u"Atributos de produtos")
  123.  
  124. class Opcao(Model):
  125.    
  126.     produto = ForeignKey(Produto, verbose_name=_(u"Produto"))
  127.     atributo = ForeignKey(Atributo, verbose_name=_(u"Atributo"))
  128.  
  129.     class Meta:
  130.         verbose_name = _(u"Opção")
  131.         verbose_name_plural = _(u"Opções")
  132.  
  133. class ValorAtributo(Model):
  134.    
  135.     # Nome do Atributo
  136.     nome = CharField(_(u"Nome"), **_CHAR)
  137.     opcao = ForeignKey(
  138.         Opcao, verbose_name=_(u"Opção")
  139.     )
  140.  
  141.     def __unicode__(self):
  142.         return self.nome
  143.  
  144.     class Meta:
  145.         verbose_name = _(u"Valor do Atributo")
  146.         verbose_name_plural = _(u"Valores de Atributo")
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top