- # -*- coding: utf-8 -*-
- from django.db import models
- from django.utils.translation import ugettext_lazy as _
- from django.conf import settings
- from easymode.i18n.decorators import I18n
- from easymode.admin.models.fields import SafeHTMLField
- from positions.fields import PositionField
- @I18n('name', 'description', 'slug')
- class Category(models.Model):
- name = models.CharField(_('name'), max_length=100)
- description = SafeHTMLField(_('description'), blank=True, null=True, **settings.TINYMCE_SAFEHTML_CONF)
- slug = models.SlugField(_('slug'), max_length=50)
- parent_category = models.ForeignKey('self', verbose_name=_('parent category'), blank=True, null=True, related_name="child_categories")
- image = models.ImageField(_('image'), upload_to="categories/", blank=True, null=True)
- position= PositionField(_('position'))
- def __unicode__(self):
- return self.name
- class Meta:
- verbose_name = _('category')
- verbose_name_plural = _('categories')
- ordering = ("position",)
- class Language(models.Model):
- '''Questa classe serve per correlare gli allegati alla lingua, e mostrare la bandiera'''
- language_code = models.CharField(_('language code'), max_length=5, primary_key=True)
- language = models.CharField(_('language'), max_length=30)
- flag = models.ImageField(_('flag'), upload_to="language_flags/")
- class Meta:
- verbose_name = _('language')
- verbose_name_plural = _('languages')
- ordering = ("language",)
- def __unicode__(self):
- return self.language
- @I18n('name', 'description', 'abstract', 'payoff')
- class Product(models.Model):
- name = models.CharField(_('name'), max_length=100)
- description = SafeHTMLField(_('description'), blank=True, null=True, **settings.TINYMCE_SAFEHTML_CONF)
- payoff = models.CharField(_('payoff'), max_length=200, blank=True, null=True)
- abstract = SafeHTMLField(_('abstract'), blank=True, null=True, **settings.TINYMCE_SAFEHTML_CONF)
- categories = models.ManyToManyField(Category, verbose_name=_('category'), related_name="products", blank=True, null=True)
- #attachment_folders = models.ManyToManyField(AttachmentFolder, verbose_name=_('attachment folders'), related_name="products", blank=True, null=True)
- #image = models.ImageField(_('image'), upload_to="products/%Y/", blank=True, null=True)
- #position= PositionField(_('position'), collection='categories')
- #position= PositionField(_('position'))
- is_upsell = models.BooleanField(_('is upsell'), default=False)
- upsell_products = models.ManyToManyField('self', limit_choices_to = {'is_upsell':'True'}, verbose_name=_('upsell products'), related_name="target_products", blank=True, null=True)
- class Meta:
- verbose_name = _('product')
- verbose_name_plural = _('products')
- #ordering = ("position", )
- def __unicode__(self):
- return self.name
- @I18n('title')
- class AttachmentFolder(models.Model):
- '''Questa classe รจ un contenitore di allegati'''
- product = models.ForeignKey(Product, verbose_name=_('product'), related_name="attachments")
- #files = models.ManyToManyField(AttachmentFile, verbose_name=_('files'), related_name="folder", blank=True, null=True)
- title = models.CharField(_('title'), max_length=100)
- #image = models.ImageField(_('image'), upload_to="attachments_images/%Y/")
- #position = PositionField(_('position'), collection='product')
- def __unicode__(self):
- return self.title
- class Meta:
- verbose_name = _('attachment folder')
- verbose_name_plural = _('attachment folders')
- #ordering = ('position',)
- @I18n('name')
- class AttachmentFile(models.Model):
- '''I file allegati ad un prodotto'''
- attachment_folder = models.ForeignKey(AttachmentFolder, verbose_name= _('attachment folder'), related_name="attachment_files")
- file = models.FileField(_('file'), upload_to="attachments/%Y/")
- name = models.CharField(_('name'), max_length=100)
- languages = models.ManyToManyField(Language, verbose_name=_('languages'), related_name="files")
- position = PositionField(_('position'), collection='attachment')
- def __unicode__(self):
- return self.name
- class Meta:
- verbose_name = _('attachment file')
- verbose_name_plural = _('attachment files')
- ordering = ('position',)