Esempio n. 1
0
class BaseDataMartImage(
        with_metaclass(deferred.ForeignKeyBuilder, models.Model)):
    """
    ENG: ManyToMany relation from the polymorphic Datamart to a set of images.
    RUS: Связь многие-ко многим от полиморфной Витрины данных к изображениям.
    """
    image = image.FilerImageField(verbose_name=_('Image'))
    data_mart = deferred.ForeignKey('BaseDataMart', verbose_name=_('DataMart'))
    order = models.SmallIntegerField(default=0,
                                     blank=False,
                                     null=False,
                                     db_index=True)

    class Meta:
        """
        RUS: Метаданные класса.
        """
        abstract = True
        verbose_name = _("DataMart Image")
        verbose_name_plural = _("DataMart Images")
        ordering = ('order', )

    def __str__(self):
        """
        RUS: Строковое представление данных.
        """
        return "{}".format(self.image)
Esempio n. 2
0
class RecipeStep(GenericBaseModel):
    """
    RecipeStep class - inherits from GenericBaseModel
    This class represents the step for a recipe preparation
    """
    text = models.TextField(verbose_name=_(u'Text'), blank=True, null=True)
    recipe = models.ForeignKey(Recipe, verbose_name=_(u'Recipe'))
    order = models.IntegerField(verbose_name=_(u'Order'),
                                blank=True,
                                null=True)
    duration = models.IntegerField(verbose_name=_(u'Duration (min.)'),
                                   blank=True,
                                   null=True)
    image = image.FilerImageField(related_name="recipes_steps",
                                  verbose_name=_(u'Image'),
                                  null=True,
                                  blank=True)

    def __unicode__(self):
        ret = self.text[:40]
        if len(self.text) > 40:
            ret += "..."
        return ret

    class Meta:
        ordering = ['order', 'id']
Esempio n. 3
0
class BaseEntityImage(with_metaclass(deferred.ForeignKeyBuilder,
                                     models.Model)):
    """
    ENG: ManyToMany relation from the polymorphic Entity to a set of images.
    RUS: Связь многие-ко многим от полиморфной Сущности к изображениям.
    """
    image = image.FilerImageField(verbose_name=_('Image'))
    entity = deferred.ForeignKey('BaseEntity', verbose_name=_('Entity'))
    order = models.SmallIntegerField(default=0,
                                     blank=False,
                                     null=False,
                                     db_index=True)

    class Meta:
        """
        RUS: Метаданные класса.
        """
        abstract = True
        verbose_name = _("Entity Image")
        verbose_name_plural = _("Entity Images")
        ordering = ('order', )
        unique_together = (('image', 'entity'), )

    def __str__(self):
        """
        RUS: Строковое представление данных.
        """
        return "{}".format(self.image)
Esempio n. 4
0
class HoverAnimation(plugin_base.CMSPlugin):
    static_image = image.FilerImageField(
        verbose_name=_("static image"),
        related_name='hoveranimation_staticimage_set')
    animation = image.FilerImageField(
        verbose_name=_("animation"),
        related_name='hoveranimation_animation_set')

    objects = cmsplugin_filer_utils.FilerPluginManager(
        select_related=('static_image', 'animation'))

    def __unicode__(self):
        if self.static_image:
            return posixpath.basename(self.static_image.path)
        elif self.animation:
            return posixpath.basename(self.animation.path)
        return "<empty>"
Esempio n. 5
0
    class Commodity(CMSPageReferenceMixin, TranslatableModelMixin,
                    BaseProduct):
        """
        Generic Product Commodity to be used whenever the merchant does not require product specific
        attributes and just required a placeholder field to add arbitrary data.
        """
        # common product fields
        product_code = models.CharField(_("Product code"),
                                        max_length=255,
                                        unique=True)
        unit_price = MoneyField(_("Unit price"),
                                decimal_places=3,
                                help_text=_("Net price for this product"))

        # controlling the catalog
        order = models.PositiveIntegerField(verbose_name=_("Sort by"),
                                            db_index=True)
        cms_pages = models.ManyToManyField(
            'cms.Page',
            through=ProductPage,
            help_text=_("Choose list view this product shall appear on."))
        sample_image = image.FilerImageField(
            verbose_name=_("Sample Image"),
            blank=True,
            null=True,
            help_text=_("Sample image used in the catalog's list view."))
        show_breadcrumb = models.BooleanField(
            _("Show Breadcrumb"),
            default=True,
            help_text=_(
                "Shall the detail page show the product's breadcrumb."))
        placeholder = PlaceholderField("Commodity Details")

        # translatable fields for the catalog's list- and detail views
        product_name = TranslatedField()
        slug = TranslatedField()
        caption = TranslatedField()

        # filter expression used to search for a product item using the Select2 widget
        lookup_fields = (
            'product_code__startswith',
            'product_name__icontains',
        )

        objects = ProductManager()

        class Meta:
            app_label = app_settings.APP_LABEL
            ordering = ('order', )
            verbose_name = _("Commodity")
            verbose_name_plural = _("Commodities")

        def __str__(self):
            return self.product_code

        def get_price(self, request):
            return self.unit_price
Esempio n. 6
0
class Recipe(GenericBaseModel):
    """
    Recipe class - inherits from GenericBaseModel
    """

    title = models.CharField(max_length=200, verbose_name=_(u'Title'))
    summary = models.CharField(max_length=500,
                               verbose_name=_(u'Summary'),
                               blank=True,
                               null=True)
    preparation_time = models.CharField(max_length=100,
                                        verbose_name=_(u'Title'),
                                        blank=True,
                                        null=True)
    difficulty = models.IntegerField(verbose_name=_(u'Difficulty'),
                                     choices=DIFFICULTY_CHOICES)
    category = models.ForeignKey(Category, verbose_name=_(u'Category'))
    is_for_vegan = models.BooleanField(verbose_name=_(u'Vegan Friendly'),
                                       default=False)
    is_for_vegetarian = models.BooleanField(
        verbose_name=_(u'Vegetarian Friendly'), default=False)
    area = models.ForeignKey(AdministrativeArea,
                             verbose_name=_(u'Area'),
                             null=True,
                             blank=True)
    country = models.ForeignKey(Country, verbose_name=_(u'Country'))
    image = image.FilerImageField(related_name="recipes",
                                  verbose_name=_(u'Image'),
                                  null=True,
                                  blank=True)
    suggested_wine = models.ManyToManyField(Wine,
                                            verbose_name=_(u'Suggested Wine'),
                                            related_name='recipes',
                                            null=True,
                                            blank=True)
    author = models.ForeignKey(User, verbose_name=_(u'Author'))
    fork_origin = models.ForeignKey('self',
                                    verbose_name=_(u'Fork Origin'),
                                    blank=True,
                                    null=True)
    #Use django-tagging application here
    tags = TagField()
    objects = models.Manager()
    pub_objects = PublishedManager()
    veg_objects = VegManager()

    def __unicode__(self):
        return self.title

    class Meta:
        ordering = ['title']
Esempio n. 7
0
class Wine(GenericBaseModel):
    """
    Wine class - inherits from GenericBaseModel
    """

    name = models.CharField(max_length=200, verbose_name=_(u'Wine Name'))
    description = models.TextField(verbose_name=_(u'Wine Description'),
                                   null=True,
                                   blank=True)
    image = image.FilerImageField(verbose_name=_(u'Image'),
                                  null=True,
                                  blank=True)
    code = models.CharField(max_length=20, verbose_name=_(u'Code'))
    traditional_code = models.IntegerField(verbose_name=_(u'Traditional Code'),
                                           choices=WINE_TRADITIONAL_TYPES,
                                           default=1)
    european_code = models.IntegerField(verbose_name=_(u'EU Code'),
                                        choices=WINE_EUROPEAN_TYPES,
                                        default=1)
    place = models.ForeignKey(Location,
                              verbose_name=_(u'Location'),
                              null=True,
                              blank=True)
    cooperative = models.CharField(max_length=200,
                                   verbose_name=_(u'Cooperative'),
                                   null=True,
                                   blank=True)
    area = models.ForeignKey(AdministrativeArea, verbose_name=_(u'Area'))
    suggest_temperature = models.IntegerField(
        verbose_name=_(u'Temperature(°C)'), null=True, blank=True)
    estate_bottled = models.BooleanField(verbose_name=_(u'Estate Bottled'),
                                         default=False)
    alcohol_percentage = models.FloatField(verbose_name=_(u'Alcohol(%)'))
    year = models.IntegerField(verbose_name=_(u'Year'))
    grape_type = models.ManyToManyField(GrapeType,
                                        verbose_name=_(u'Grape Type'),
                                        related_name='wines',
                                        null=True,
                                        blank=True)
    rating = models.PositiveIntegerField(
        verbose_name=_(u'Rating'),
        default=1,
        help_text=_(u'This field is used wine prices (min=1, max=5)'))
    kind = models.IntegerField(verbose_name=_(u'Kind'), choices=WINE_KIND_LIST)
    tags = TagField()

    def __unicode__(self):
        return self.name

    class Meta:
        ordering = ['name']
Esempio n. 8
0
class QualityLabel(models.Model):

    ordering = models.PositiveIntegerField(_("Ordering"), default=10)

    name = models.CharField(_("Quality Label"), max_length=150, unique=True)

    logo = image.FilerImageField(on_delete=models.CASCADE)

    class Meta:
        verbose_name = _("Quality label")
        verbose_name_plural = _("Quality lables")

    def __str__(self):
        return self.name
Esempio n. 9
0
File: models.py Progetto: bwrm/alby
class VariantImage(models.Model):
    image = image.FilerImageField(on_delete=models.CASCADE)
    product = models.ForeignKey(
        SofaVariant,
        on_delete=models.CASCADE,
        blank=True,
    )
    order = models.SmallIntegerField(default=0)

    class Meta:
        abstract = False
        verbose_name = _("Product Image")
        verbose_name_plural = _("Product Images")
        ordering = ['order']
Esempio n. 10
0
class BaseProductImage(with_metaclass(deferred.ForeignKeyBuilder,
                                      models.Model)):
    """
    ManyToMany relation from the polymorphic Product to a set of images.
    """
    image = image.FilerImageField()
    product = deferred.ForeignKey(BaseProduct)
    order = models.SmallIntegerField(default=0, blank=False, null=False)

    class Meta:
        abstract = True
        verbose_name = ugettext_lazy("Product Image")
        verbose_name_plural = ugettext_lazy("Product Images")
        ordering = ('order', )
Esempio n. 11
0
class BaseProductImage(models.Model, metaclass=deferred.ForeignKeyBuilder):
    """
    ManyToMany relation from the polymorphic Product to a set of images.
    """
    image = image.FilerImageField(on_delete=models.CASCADE)

    product = deferred.ForeignKey(
        BaseProduct,
        on_delete=models.CASCADE,
    )

    order = models.SmallIntegerField(default=0)

    class Meta:
        abstract = True
        verbose_name = _("Product Image")
        verbose_name_plural = _("Product Images")
        ordering = ['order']
Esempio n. 12
0
class Product(models.Model):
    name = models.CharField(max_length=120, verbose_name=_('Product name'), )
    category = TreeForeignKey(Category, verbose_name=_('Category'), )
    feature = models.ForeignKey(Feature, null=True, blank=True)
    brand = models.ForeignKey(Brands, verbose_name=_('Brand'), )
    description = RichTextUploadingField(blank=True, null=True, verbose_name=_('Description'), )
    characters = RichTextUploadingField(blank=True, null=True, verbose_name=_('Characters'), )
    owner = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name=_('Product Owner'), related_name='products', )
    volume = models.ForeignKey(VolumeType, verbose_name=_('Volume type'))
    updated = models.DateField(auto_now=True, auto_created=True, )
    available_in_stock = models.BooleanField(default=True, verbose_name=_('Available in stock'))
    is_recommended = models.BooleanField(default=False, verbose_name=_('Is recommended'))
    price = models.DecimalField(decimal_places=2, max_digits=10, verbose_name=_('Price'), null=True, blank=True, )
    is_top = models.BooleanField(default=False)
    image_0 = image.FilerImageField(verbose_name=_('First image'), null=True, related_name='product_image0')
    image_1 = image.FilerImageField(verbose_name=_('Second image'),  null=True, blank=True, related_name='product_image1')
    image_2 = image.FilerImageField(verbose_name=_('Third image'),  null=True, blank=True, related_name='product_image2')

    default_image = models.CharField(choices=(
        ('image_0', 'First image', ),
        ('image_1', 'Second image', ),
        ('image_2', 'Third image', ),
    ), max_length=60, default='image_0')

    def __str__(self):
        return "{}".format(self.name)

    def is_color_exist(self, obj):
        return self.variations.all().first().color

    def get_default_image(self):
        return getattr(self, self.default_image)

    def get_all_images(self):
        images = list()
        images.append(self.image_0)
        if self.image_1:
            images.append(self.image_1)
        if self.image_2:
            images.append(self.image_2)
        return images

    def get_price(self):
        if not self.price:
            self.price = self.get_default_variation().price
            self.save()
        return self.price

    def get_default_variation(self):
        return self.variations.first()

    def get_variations(self):
        return self.variations.filter(product=self).distinct('name')

    def get_reviews(self):
        return self.product_reviews.filter(is_approved=True)

    def get_absolute_url(self):
        return reverse('products:product_detail', args=[self.category.slug, self.pk])

    class Meta:
        verbose_name = _('Product')
        verbose_name_plural = _('Products')
Esempio n. 13
0
    class Commodity(CMSPageReferenceMixin, CommodityMixin, BaseProduct):
        """
        Generic Product Commodity to be used whenever the merchant does not require product specific
        attributes and just required a placeholder field to add arbitrary data.
        """
        # common product fields
        product_name = models.CharField(
            max_length=255,
            verbose_name=_("Product Name"),
        )

        product_code = models.CharField(
            _("Product code"),
            max_length=255,
            unique=True,
        )

        unit_price = MoneyField(
            _("Unit price"),
            decimal_places=3,
            help_text=_("Net price for this product"),
        )

        # controlling the catalog
        order = models.PositiveIntegerField(
            verbose_name=_("Sort by"),
            db_index=True,
        )

        cms_pages = models.ManyToManyField(
            'cms.Page',
            through=ProductPage,
            help_text=_("Choose list view this product shall appear on."),
        )

        sample_image = image.FilerImageField(
            verbose_name=_("Sample Image"),
            blank=True,
            null=True,
            default=None,
            on_delete=models.SET_DEFAULT,
            help_text=_("Sample image used in the catalog's list view."),
        )

        show_breadcrumb = models.BooleanField(
            _("Show Breadcrumb"),
            default=True,
            help_text=_(
                "Shall the detail page show the product's breadcrumb."),
        )

        placeholder = PlaceholderField("Commodity Details")

        quantity = models.PositiveIntegerField(
            _("Quantity"),
            default=0,
            validators=[MinValueValidator(0)],
            help_text=_("Available quantity in stock"))

        # common fields for the catalog's list- and detail views
        slug = models.SlugField(verbose_name=_("Slug"))

        caption = HTMLField(
            verbose_name=_("Caption"),
            blank=True,
            null=True,
            help_text=_("Short description for the catalog list view."),
        )

        # filter expression used to search for a product item using the Select2 widget
        lookup_fields = ['product_code__startswith', 'product_name__icontains']

        objects = BaseProductManager()

        class Meta:
            app_label = app_settings.APP_LABEL
            ordering = ('order', )
            verbose_name = _("Commodity")
            verbose_name_plural = _("Commodities")

        def __str__(self):
            return self.product_code