from application.apps.locale.models import locale_model, DEFAULT_FIELD class PageManager(models.Manager): """ Object manager for Page class """ def get_active_page(self, title_slug): return self.get(title_slug=title_slug, active=True) class SliderImage(Image): pass slider_page_localized = locale_model({ 'title': DEFAULT_FIELD, 'body': ('TextField', {'blank': True, 'default': ''}) }) class SliderPage(slider_page_localized): image = models.ForeignKey(SliderImage, verbose_name=_('Image'), related_name='pages', null=True, blank=True) order = models.IntegerField(max_length=3, default=0) active = models.BooleanField(default=True, verbose_name=_('Active on site')) title = models.CharField(max_length=32, verbose_name=_('Internal title')) created = models.DateTimeField(auto_now_add=True, verbose_name=_('Created')) updated = models.DateTimeField(auto_now=True, verbose_name=_('Updated')) class Meta: verbose_name = _('Slider page') verbose_name_plural = _('Slider pages') def __unicode__(self):
queryset = self.filter(active=True, amount__gt=0) queryset = queryset.order_by('-featured', '-num_views', '-created') if prefetch: queryset = queryset.select_related('product_type') queryset = queryset.select_related('currency') queryset = queryset.prefetch_related('product_type') queryset = queryset.prefetch_related('business_domains') queryset = queryset.prefetch_related('images') return queryset ad_localized = locale_model({ 'title': ('CharField', { 'max_length': 64, 'blank': True, 'verbose_name': _('Title'), 'help_text': _('The title of your ad'), 'db_index': True}), 'description': ('TextField', { 'blank': True, 'verbose_name': _('Description'), 'help_text': _('A detailed description of your ad. Use English language to reach a wider audience.')}) }) class Ad(ad_localized): """ Ad """ objects = AdsManager() price = models.DecimalField(max_digits=20, decimal_places=2, verbose_name=_('Price / pcs'), help_text=_('Help text for the price')) currency = models.ForeignKey(Currency, related_name='+', verbose_name='Currency', help_text=_('Help text for the currency')) amount = models.IntegerField(verbose_name=_('Amount'), help_text=_('The amount of items you are selling.')) published = models.BooleanField(default=True, verbose_name='Published', help_text=_('Help text for published'), db_index=True) product_type = models.ForeignKey('ProductType', related_name='ads', verbose_name=_('Product type'), help_text=_('Help text for product type')) business_domains = models.ManyToManyField('BusinessDomain', related_name='ads', verbose_name=_('Business domains'), help_text=_('Help text for business domains'))