Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # -*- encoding: utf-8 -*-
- from django.db.models import *
- from django.utils.translation import ugettext as _
- from imagekit.models import ImageModel
- from loja.managers import *
- _CHAR = {'max_length':255}
- _NULL = {'null': True, 'blank': True}
- _DECI = {'decimal_places': 5, 'max_digits': 20}
- class Categoria(Model):
- u'''
- Categoria de um produto da Loja Virtual.
- Ex: Material esportivo, eletrônico, etc.
- '''
- # Nome do Produto
- nome = CharField(_(u"Nome"), **_CHAR)
- def __unicode__(self):
- return self.nome
- @permalink
- def get_absolute_url(self):
- return ('loja_categoria', [str(self.id)])
- class Meta:
- verbose_name = _(u"Categoria")
- verbose_name_plural = _(u"Categorias")
- ordering = ["nome"]
- class Produto(ImageModel):
- u'''
- Produto da Loja Virtual.
- '''
- # Nome do Produto
- nome = CharField(_(u"Nome"), **_CHAR)
- # Slug (serve para a URL)
- slug = SlugField(_(u"URL Amigável"), **_CHAR)
- # Ex: Material esportivo, eletrônico, etc
- categoria = ForeignKey(Categoria, verbose_name=_(u"Categoria"), null=True)
- # Foto do produto
- # TODO: deve ser redimensionada para 232x182, 55x45, 123x100
- foto = ImageField(verbose_name=_(u"Foto"), upload_to='imagens/loja/')
- # Preço em boletas
- preco = DecimalField(_(u"Preço"), help_text=_(u"Valor em B$"), **_DECI)
- # Define se o produto é novo ou não
- novo = BooleanField(_(u"Novo"), default=True)
- # Fica nos detalhes do produto, é o titulo com algumas características
- subtitulo = CharField(_(u"Subtítulo interno"), **_CHAR)
- # Texto descritivo do produto
- texto = TextField(_(u"Descrição"))
- # Data de publicação
- data_publicacao = DateTimeField(
- _(u"Data de Publicação"), auto_now_add=True, editable=False
- )
- # Flag que define se o produto aparecerá na loja ou não
- publicado = BooleanField(_(u"Publicado"), default=False)
- # Manager's
- objects = Manager()
- publicados = PublicadosManager()
- def __unicode__(self):
- return self.nome
- @permalink
- def get_absolute_url(self):
- return ('loja_detalhe', [str(self.id)])
- @permalink
- def finalizar_compra_url(self):
- return ('loja_finalizacao', [str(self.id)])
- class IKOptions:
- spec_module = 'loja.specs'
- cache_dir = 'imagens/cache'
- image_field = 'foto'
- class Meta:
- ordering = ["-data_publicacao"]
- verbose_name = _(u"Produto")
- verbose_name_plural = _(u"Produtos")
- class Caracteristica(Model):
- produto = ForeignKey(Produto, verbose_name=_(u"Produto"))
- chave = CharField(_(u"Chave"), **_CHAR)
- valor = CharField(_(u"Valor"), **_CHAR)
- def __unicode__(self):
- return "%s : %s" % (self.chave, self.valor)
- class Meta:
- verbose_name = _(u"Característica do produto")
- verbose_name_plural = _(u"Características do produto")
- unique_together = ('produto', 'valor', 'chave')
- class Atributo(Model):
- # Nome do Atributo
- nome = CharField(_(u"Nome"), **_CHAR)
- def __unicode__(self):
- return self.nome
- class Meta:
- verbose_name = _(u"Atributo do produto")
- verbose_name_plural = _(u"Atributos de produtos")
- class Opcao(Model):
- produto = ForeignKey(Produto, verbose_name=_(u"Produto"))
- atributo = ForeignKey(Atributo, verbose_name=_(u"Atributo"))
- class Meta:
- verbose_name = _(u"Opção")
- verbose_name_plural = _(u"Opções")
- class ValorAtributo(Model):
- # Nome do Atributo
- nome = CharField(_(u"Nome"), **_CHAR)
- opcao = ForeignKey(
- Opcao, verbose_name=_(u"Opção")
- )
- def __unicode__(self):
- return self.nome
- class Meta:
- verbose_name = _(u"Valor do Atributo")
- verbose_name_plural = _(u"Valores de Atributo")
Add Comment
Please, Sign In to add comment