Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on May 8th, 2012  |  syntax: None  |  size: 4.45 KB  |  hits: 10  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. # -*- coding: utf-8 -*-
  2.  
  3. from django.db import models
  4. from django.utils.translation import ugettext_lazy as _
  5. from django.conf import settings
  6.  
  7. from easymode.i18n.decorators import I18n
  8. from easymode.admin.models.fields import  SafeHTMLField
  9.  
  10. from positions.fields import PositionField
  11.  
  12. @I18n('name', 'description', 'slug')
  13. class Category(models.Model):
  14.     name = models.CharField(_('name'), max_length=100)
  15.     description = SafeHTMLField(_('description'), blank=True, null=True, **settings.TINYMCE_SAFEHTML_CONF)
  16.     slug = models.SlugField(_('slug'), max_length=50)
  17.     parent_category =  models.ForeignKey('self', verbose_name=_('parent category'), blank=True, null=True, related_name="child_categories")
  18.     image = models.ImageField(_('image'), upload_to="categories/", blank=True, null=True)
  19.     position= PositionField(_('position'))
  20.    
  21.     def __unicode__(self):
  22.         return self.name
  23.    
  24.     class Meta:
  25.         verbose_name = _('category')
  26.         verbose_name_plural = _('categories')
  27.         ordering = ("position",)
  28.    
  29. class Language(models.Model):
  30.     '''Questa classe serve per correlare gli allegati alla lingua, e mostrare la bandiera'''
  31.    
  32.     language_code = models.CharField(_('language code'), max_length=5, primary_key=True)
  33.     language = models.CharField(_('language'), max_length=30)
  34.     flag = models.ImageField(_('flag'), upload_to="language_flags/")
  35.  
  36.     class Meta:
  37.         verbose_name = _('language')
  38.         verbose_name_plural = _('languages')
  39.         ordering = ("language",)
  40.        
  41.     def __unicode__(self):
  42.         return self.language        
  43.  
  44.  
  45.  
  46.  
  47. @I18n('name', 'description', 'abstract', 'payoff')
  48. class Product(models.Model):
  49.     name = models.CharField(_('name'), max_length=100)
  50.     description = SafeHTMLField(_('description'),  blank=True, null=True, **settings.TINYMCE_SAFEHTML_CONF)
  51.     payoff = models.CharField(_('payoff'), max_length=200, blank=True, null=True)
  52.     abstract = SafeHTMLField(_('abstract'), blank=True, null=True, **settings.TINYMCE_SAFEHTML_CONF)
  53.     categories = models.ManyToManyField(Category, verbose_name=_('category'), related_name="products", blank=True, null=True)
  54.     #attachment_folders = models.ManyToManyField(AttachmentFolder, verbose_name=_('attachment folders'), related_name="products", blank=True, null=True)
  55.     #image = models.ImageField(_('image'), upload_to="products/%Y/", blank=True, null=True)
  56.     #position= PositionField(_('position'), collection='categories')
  57.     #position= PositionField(_('position'))
  58.     is_upsell = models.BooleanField(_('is upsell'), default=False)
  59.     upsell_products = models.ManyToManyField('self', limit_choices_to = {'is_upsell':'True'}, verbose_name=_('upsell products'), related_name="target_products", blank=True, null=True)
  60.    
  61.     class Meta:
  62.         verbose_name = _('product')
  63.         verbose_name_plural = _('products')
  64.         #ordering = ("position", )
  65.        
  66.     def __unicode__(self):
  67.         return self.name
  68.  
  69.  
  70.                
  71. @I18n('title')                
  72. class AttachmentFolder(models.Model):
  73.     '''Questa classe รจ un contenitore di allegati'''
  74.     product = models.ForeignKey(Product, verbose_name=_('product'), related_name="attachments")
  75.     #files = models.ManyToManyField(AttachmentFile, verbose_name=_('files'), related_name="folder", blank=True, null=True)
  76.     title = models.CharField(_('title'), max_length=100)
  77.     #image = models.ImageField(_('image'), upload_to="attachments_images/%Y/")
  78.     #position = PositionField(_('position'), collection='product')
  79.  
  80.     def __unicode__(self):
  81.         return self.title
  82.        
  83.     class Meta:
  84.         verbose_name = _('attachment folder')
  85.         verbose_name_plural = _('attachment folders')
  86.         #ordering = ('position',)
  87.  
  88. @I18n('name')  
  89. class AttachmentFile(models.Model):
  90.     '''I file allegati ad un prodotto'''
  91.     attachment_folder = models.ForeignKey(AttachmentFolder, verbose_name= _('attachment folder'), related_name="attachment_files")
  92.     file = models.FileField(_('file'), upload_to="attachments/%Y/")
  93.     name = models.CharField(_('name'), max_length=100)
  94.     languages = models.ManyToManyField(Language, verbose_name=_('languages'), related_name="files")
  95.     position = PositionField(_('position'), collection='attachment')
  96.  
  97.     def __unicode__(self):
  98.         return self.name
  99.    
  100.     class Meta:
  101.         verbose_name = _('attachment file')
  102.         verbose_name_plural = _('attachment files')
  103.         ordering = ('position',)