daily pastebin goal
70%
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
Top