class Bus(models.Model): name = models.CharField(max_length=64) slug = AutoSlugField(populate_from='name', always_update=True, unique=True) license_plate = models.CharField(max_length=20, null=True, blank=True) blueprint = FilerFileField(null=True, blank=True, on_delete=models.CASCADE) nb_seats = models.PositiveIntegerField(default=0) services = models.ManyToManyField(Service) picture = FilerImageField(null=True, blank=True, related_name="+", on_delete=models.CASCADE) cover = FilerImageField(null=True, blank=True, related_name="+") gallery = FilerFolderField(null=True, blank=True, related_name="+", on_delete=models.CASCADE) index_eco = models.PositiveIntegerField(default=0) description = RichTextField(blank=True, null=True) equipments = RichTextField(blank=True, null=True, config_name='only_bullet_point') confort = RichTextField(blank=True, null=True, config_name='only_bullet_point') security = RichTextField(blank=True, null=True, config_name='only_bullet_point') def get_absolute_url(self): return reverse("transportation-fleet-vehicule", args=[self.slug])
class GalleryPluginModel(CMSPlugin): ''' Gallery Plugin model ''' folder = FilerFolderField(on_delete=models.PROTECT) def __str__(self) -> str: return "{}".format(self.folder)
class Folder(CMSPlugin): layout = models.CharField( blank=True, default='', max_length=60, verbose_name=_('layout'), ) title = models.CharField(max_length=255, verbose_name=_('title'), default='', blank=True) summary = HTMLField(verbose_name=_('summary'), default='', blank=True) folder = FilerFolderField( verbose_name=_('select folder'), blank=True, null=True, on_delete=models.SET_NULL, related_name='+', ) order_by = models.CharField( max_length=60, verbose_name=_('order by'), null=True, blank=True, ) open_in_new_window = models.BooleanField( default=False, verbose_name=_('Open in new window')) def __str__(self): return self.title
class FilerFolder(CMSPlugin): """ Plugin for storing any type of Folder. Default template displays files store inside this folder. """ STYLE_CHOICES = settings.CMSPLUGIN_FILER_FOLDER_STYLE_CHOICES DEFAULT_STYLE = settings.CMSPLUGIN_FILER_FOLDER_DEFAULT_STYLE title = models.CharField(_("title"), max_length=255, null=True, blank=True) folder = FilerFolderField() style = models.CharField(_('Style'), choices=STYLE_CHOICES, default=DEFAULT_STYLE, max_length=50) objects = FilerPluginManager(select_related=('folder', )) @property def view_option(self): warnings.warn( "view_option on cmsplugin_filer_folder.FilderFolder is deprecated. Use .style instead.", DeprecationWarning) return self.style def __unicode__(self): if self.title: return self.title elif self.folder.name: # added if, because it raised attribute error when file wasnt defined return self.folder.name return "<empty>" search_fields = ('title', )
class MediaFolder(models.Model): folder = FilerFolderField(related_name="media_folder", verbose_name=_("folder"), on_delete=models.CASCADE) shops = models.ManyToManyField( "shuup.Shop", related_name="media_folders", verbose_name=_("shops"), help_text=_( "Select which shops you would like the folder to be visible in."), ) visible = models.BooleanField( default=False, verbose_name=_("visible"), help_text=_( "Should this folder be visible for everyone in the media browser"), ) owners = models.ManyToManyField( settings.AUTH_USER_MODEL, related_name=_("owning_media_folders"), verbose_name=_("owners"), help_text=_("Select which users will own this folder."), ) def __str__(self): # pragma: no cover return "%s" % (self.folder) def get_all_children(self): folders = [self.folder] for sub_folder in self.folder.children.all(): for sub_media_folder in sub_folder.media_folder.all(): folders.extend(sub_media_folder.get_all_children()) return folders
class Work(models.Model): title = models.CharField(_('Title'), max_length=200) slug = models.SlugField() pub_date = models.DateTimeField(_('Published on'), auto_now_add=True) description = HTMLField(_('Work Description')) category = models.ForeignKey(CategoryWork, verbose_name=_('Category')) tags = TaggableManager() client = models.CharField(_('Client'), max_length=255, null=True, blank=True) location = models.CharField(_('Location'), max_length=255, null=True, blank=True) head_picture = FilerImageField(verbose_name=_("Head")) folder = FilerFolderField(verbose_name=_('Gallery Folder'), null=True, blank=True) class Meta: verbose_name = _('Work') verbose_name_plural = _('Works') def __str__(self): return self.title def get_absolute_url(self): return reverse('work_detail', args=[self.slug]) def get_next_work(self): try: next_work = Work.objects.get(pk=self.pk+1) return reverse('work_detail', args=[next_work.slug]) except: return None def get_previous_work(self): try: previous_work = Work.objects.get(pk=self.pk-1) return reverse('work_detail', args=[previous_work.slug]) except: return None
class FilerFolder(CMSPlugin): """ Plugin for storing any type of Folder. Default template displays files store inside this folder. """ STYLE_CHOICES = settings.CMSPLUGIN_FILER_FOLDER_STYLE_CHOICES DEFAULT_STYLE = settings.CMSPLUGIN_FILER_FOLDER_DEFAULT_STYLE title = models.CharField(_("title"), max_length=255, null=True, blank=True) folder = FilerFolderField(null=True, on_delete=models.SET_NULL) style = models.CharField( _('Style'), choices=STYLE_CHOICES, default=DEFAULT_STYLE, max_length=50) objects = FilerPluginManager(select_related=('folder',)) @property def view_option(self): warnings.warn("view_option on cmsplugin_filer_folder.FilderFolder is deprecated. Use .style instead.", DeprecationWarning) return self.style def __str__(self): return self.get_display_name() def get_display_name(self): if self.title: return self.title elif self.folder_id and self.folder.name: return self.folder.name return "<empty>" search_fields = ('title',)
class SlideFolderPlugin(CMSPlugin): cmsplugin_ptr = CMSPluginField() folder = FilerFolderField(verbose_name=_('folder'), on_delete=models.CASCADE) def copy_relations(self, oldinstance): self.folder_id = oldinstance.folder_id
class Page(models.Model): title = models.CharField(max_length=100, verbose_name="Titolo") title_uk = models.CharField(max_length=100, verbose_name="Titolo UK") image = models.ImageField(blank=True, null=True, upload_to='slider') body = models.TextField(null=True, blank=True, verbose_name="Descrizione") body_uk = models.TextField(null=True, blank=True, verbose_name="Descrizione UK") link = models.TextField(null=True, blank=True) slider = ImageRatioField('image', '1000x300', verbose_name="Gallery in Home") album = FilerFolderField(null=True, blank=True) pub_date = models.DateTimeField('date published') active = models.BooleanField('attiva', default=False) def image_img(self): if self.image: return u'<img src="%s" style="width:300px"/>' % self.image.url else: return '(Sin imagen)' image_img.short_description = 'Thumb' image_img.allow_tags = True def __unicode__(self): return self.title class Meta: verbose_name_plural = "Pagine" ordering = ['id']
class MyModel(models.Model): general = FilerFileField(related_name='test_file', on_delete=models.CASCADE) image = FilerImageField(related_name='test_image', on_delete=models.CASCADE) folder = FilerFolderField(related_name='test_folder', on_delete=models.CASCADE)
class MediaFolder(models.Model): folder = FilerFolderField(related_name="media_folder", verbose_name=_("folder"), on_delete=models.CASCADE) shops = models.ManyToManyField( "shuup.Shop", related_name="media_folders", verbose_name=_('shops'), help_text=_("Select which shops you would like the folder to be visible in.")) def __str__(self): # pragma: no cover return "%s" % (self.folder)
class SliderPlugin(CMSPlugin): title = CharField(_('title'), max_length=255, null=True, blank=True) album = FilerFolderField(verbose_name=_('album'), help_text=_("Best image size 600x300")) theme = CharField(_('theme'), choices=THEME_CHOICES, max_length=50, default="default") effect = CharField(_('effect'), choices=EFFECT_CHOICES, max_length=50, default="random") manual_advance = BooleanField(_('manual advance')) anim_speed = PositiveIntegerField(_('anim speed'), default=500, help_text=_("Animation Speed (ms)")) pause_time = PositiveIntegerField(_('pause time'), default=3000, help_text=_("Pause time (ms)")) width = PositiveIntegerField(_('width'), null=True, blank=True, help_text=_("Width of the plugin (px)")) height = PositiveIntegerField(_('height'), null=True, blank=True, help_text=_("Height of the plugin (px)")) arrows = BooleanField(_('arrows'), default=True, help_text=_('Arrow buttons for navigation')) thumbnails = BooleanField(_('thumbnails'), help_text=_('Thumbnails for navigation [only ' 'works with the default theme!]')) random_start = BooleanField(_('random start')) pause_on_hover = BooleanField(_('pause on mouse hover'), default=True) def __unicode__(self): if self.title: return self.title return unicode(self.album) @property def images(self): if not hasattr(self, '__images'): files = self.album.files self.__images = [f for f in files if f.file_type == 'Image'] self.__images.sort() return self.__images @property def size(self): if self.width and self.height: return self.width, self.height search_fields = ( 'title', 'album__title', )
class Folder(models.Model): #titolo = models.CharField(max_length=200, null=True, blank=True) #post = models.ForeignKey(Post) #didascalia = models.TextField(null=True, blank=True) #image = models.ImageField(upload_to='uploaded_galleria') images_folder = FilerFolderField() def __unicode__(self): # Python 3: def __str__(self): return self.images_folder
class SlickCarouselFolderImages(CMSPlugin): title = models.CharField(_("Title"), max_length=128, null=True, blank=True) folder = FilerFolderField(null=True, on_delete=models.SET_NULL) caption = models.BooleanField(_("Add caption"), default=False) #Image autoscale = models.BooleanField( _("Use automatic scaling"), default=True, help_text=_('fit the image to the size of the container'), ) thumbnail = models.BooleanField( _("Use thumbnails"), default=True, help_text=_('accelerate page load and save mobile traffic.') ) thumbnail_option = models.ForeignKey( 'filer.ThumbnailOption', verbose_name=_("Thumbnail options"), null=True, blank=True, on_delete=models.SET_NULL, ) #Link original_link = models.BooleanField(_("Link to original image"), default=True) target_blank = models.BooleanField(_('Open link in new window'), default=False) #Advanced ORDERED_BY_CHOUSE =( ('id', _('ID')), ('original_filename', _('File name')), ('uploaded_at', _('Uploadet at')), ('modified_at', _('Modified at')), ) ordered_by = models.CharField( _('Ordered by'), choices=ORDERED_BY_CHOUSE, default='original_filename', max_length=17 ) reverse_order = models.BooleanField(_('Reverse order'), default=False) classes = models.TextField(verbose_name=_('CSS classes'), blank=True) def __str__(self): if self.title: return self.title elif self.folder_id and self.folder.name: return self.folder.name else: return _('<empty>') class Meta: verbose_name = _('Carousel Folder Images') verbose_name_plural = _('Carousels Folders Images')
class FileFieldPluginBase(FieldPluginBase): upload_to = FilerFolderField( verbose_name=_('Upload files to'), help_text=_('Select a folder to which all files submitted through ' 'this field will be uploaded to.')) max_size = FileSizeField( verbose_name=_('Maximum file size'), null=True, blank=True, help_text=_('The maximum file size of the upload, in bytes. You can ' 'use common size suffixes (kB, MB, GB, ...).')) class Meta: abstract = True
class Carousel(CMSPlugin): domid = models.CharField(_('Domid'), max_length=50) interval = models.IntegerField(_('Interval'), default=5000) album = FilerFolderField(verbose_name=_('album')) @property def images(self): if not hasattr(self, '__images'): files = self.album.files.order_by('name', 'original_filename') self.__images = [f for f in files if f.file_type == 'Image'] return self.__images def __unicode__(self): return self.domid
class CaroselImageFolder(CMSPlugin): title = models.CharField(_("Title"), max_length=255, null=True, blank=True) folder = FilerFolderField(null=True, on_delete=models.SET_NULL) #objects = FilerPluginManager(select_related=('folder',)) def __str__(self): return self.get_display_name() def get_display_name(self): if self.title: return self.title elif self.folder_id and self.folder.name: return self.folder.name return "<empty>"
class GridloadingItemFolderPlugin(CMSPlugin): """ Gridloading: "Image folder" Model """ #cmsplugin_ptr = CMSPluginField() folder = FilerFolderField(verbose_name=_('Folder'), \ help_text=_('Show all the image(s) include in the selected folder.')) def __str__(self): if self.folder_id: return self.folder.pretty_logical_path else: return _('<folder is missing>') def copy_relations(self, oldinstance): self.folder_id = oldinstance.folder_id
class LightSliderConfig(CMSPlugin): gallery_folder = FilerFolderField( verbose_name='Folder', on_delete=models.CASCADE, ) class Meta: db_table = 'light_slider_plugin' verbose_name_plural = 'Light Slider Plugins' def __str__(self): return self.gallery_folder.name def get_folder_images(self): images = self.gallery_folder.files.instance_of(Image) return images.filter(is_public=True)
class Fiere(models.Model): titolo = models.CharField(max_length=100) titolo_uk = models.CharField(max_length=250, null=True, blank=True) sottotitolo = models.CharField(max_length=250, null=True, blank=True) sottotitolo_uk = models.CharField(max_length=250, null=True, blank=True) provincia = models.ForeignKey(Province, null=True, blank=True) location = models.CharField(max_length=250, null=True, blank=True) body = models.TextField(null=True, blank=True, verbose_name="Descrizione") body_uk = models.TextField(null=True, blank=True, verbose_name="Descrizione Inglese") image = models.ImageField('Logo Neutro', blank=True, null=True, upload_to='fiere') cropping = ImageRatioField('image', '500x281', verbose_name="500x281") #crop hover image_hover = models.ImageField('Logo Hover', blank=True, null=True, upload_to='fiere') cropping_hover = ImageRatioField('image_hover', '500x281', verbose_name="500x281 hover") album = FilerFolderField(null=True, blank=True) attiva_slider = models.BooleanField('attiva in slider', default=False) active = models.BooleanField('attiva', default=False) tags = TaggableManager(verbose_name="Parole chiave", blank=True) def image_img(self): if self.image: return u'<img src="%s" style="width:300px"/>' % self.image.url else: return '(Sin imagen)' image_img.short_description = 'Thumb' image_img.allow_tags = True def __unicode__(self): return self.titolo class Meta: verbose_name_plural = "Fiere" ordering = ['titolo']
class AudioFolder(CMSPlugin): """ Render files contained in a folder, only ALLOWED_EXTENSIONS are considered. If you desire more customisation (title name, description) use the File plugin. """ audio_folder = FilerFolderField( verbose_name=_('Folder'), blank=False, null=True, on_delete=models.SET_NULL, related_name='+', ) attributes = AttributesField( verbose_name=_('Attributes'), blank=True, help_text=_('Is applied to all audio file instances.'), ) def __str__(self): if self.audio_folder_id and self.audio_folder.name: return self.audio_folder.name return str(self.pk) def get_files(self): files = [] for audio_file in self.audio_folder.files: if audio_file.extension in ALLOWED_EXTENSIONS: files.append(audio_file) return files def get_short_description(self): if self.audio_folder_id and self.audio_folder.name: return self.audio_folder.name return ugettext('<folder is missing>') def copy_relations(self, oldinstance): # Because we have a ForeignKey, it's required to copy over # the reference from the instance to the new plugin. self.audio_folder = oldinstance.audio_folder
class FilerFolder(CMSPlugin): """ Plugin for storing any type of Folder. Default template displays files store inside this folder. """ title = models.CharField(_("title"), max_length=255, null=True, blank=True) view_option = models.CharField(_("view option"), max_length=10, choices=VIEW_OPTIONS, default="list") folder = FilerFolderField() def __unicode__(self): if self.title: return self.title elif self.folder.name: # added if, because it raised attribute error when file wasnt defined return self.folder.name return "<empty>" search_fields = ('title', )
class Gallery(models.Model): """ Model to display a filer folder's contents and provide extra information. :title: Gallery title. :date: Date/Time of the gallery event. :location: Location of the gallery items. :description: Description of the gallery. :folder: Linked folder of the filer app. """ title = models.CharField( max_length=100, verbose_name=_('Title'), ) date = models.DateTimeField( verbose_name=_('Date'), blank=True, null=True, ) location = models.CharField( max_length=100, verbose_name=_('Location'), blank=True, null=True, ) description = PlaceholderField( 'description', verbose_name=_('Description'), ) folder = FilerFolderField(verbose_name=_('Folder'), ) def __unicode__(self): return self.title
class Televisione(models.Model): titolo = models.CharField(max_length=200, null=True, blank=True) categoria = models.CharField(choices=CATEGORIA_CHOICES, max_length=200, null=True, blank=True) image = models.ForeignKey(Image) cropping = ImageRatioField('image__image_field', '700x500') croppingthumb = ImageRatioField('image__image_field', '350x213') youtube = models.CharField(max_length=300, null=True, blank=True) body = RichTextField(null=True, blank=True) galleria_folder = FilerFolderField(null=True, blank=True) inizio_programma = models.DateTimeField('Inizio') fine_programma = models.DateTimeField('Fine') sfondo = models.ImageField(upload_to='uploaded_sfondi', null=True, blank=True) class Meta: verbose_name_plural = "Televisione" def __unicode__(self): # Python 3: def __str__(self): return self.titolo
class GalleryPlugin(CMSPlugin): folder = FilerFolderField() template = models.CharField(max_length=255, choices=TEMPLATE_CHOICES, default='cmsplugin_gallery/gallery.html', editable=len(TEMPLATE_CHOICES) > 1) width = models.PositiveSmallIntegerField(editable=False, null=True) height = models.PositiveSmallIntegerField(editable=False, null=True) def __unicode__(self): return _(u'%(count)d image(s) in gallery') % { 'count': self.folder.file_count } def get_size(self): """ returns given or found width x height tuple""" size = (0, 0) if self.src_width: size = (self.src_width, self.src_height) else: if self.image_set.count() > 0: img = self.image_set.all()[0] size = (img.src.width, img.src.height) return size
class Folder(CMSPlugin): """ Renders a folder plugin to the selected tempalte """ template = models.CharField( verbose_name=_('Template'), choices=get_templates(), default=get_templates()[0][0], max_length=255, ) folder_src = FilerFolderField( verbose_name=_('Folder'), blank=False, null=True, on_delete=models.SET_NULL, related_name='+', ) link_target = models.CharField( verbose_name=_('Link target'), choices=LINK_TARGET, blank=True, max_length=255, default='', ) show_file_size = models.BooleanField( verbose_name=_('Show file size'), blank=True, default=False, help_text=_('Appends the file size at the end of the name.'), ) attributes = AttributesField( verbose_name=_('Attributes'), blank=True, excluded_keys=['href', 'target'], ) # Add an app namespace to related_name to avoid field name clashes # with any other plugins that have a field with the same name as the # lowercase of the class name of this model. # https://github.com/divio/django-cms/issues/5030 cmsplugin_ptr = models.OneToOneField( CMSPlugin, related_name='%(app_label)s_%(class)s', parent_link=True, ) def __str__(self): if self.folder_src and self.folder_src.name: return self.folder_src.name return str(self.pk) def get_short_description(self): if self.folder_src and self.folder_src.name: return self.folder_src.name return ugettext('<folder is missing>') def copy_relations(self, oldinstance): # Because we have a ForeignKey, it's required to copy over # the reference from the instance to the new plugin. self.folder_src = oldinstance.folder_src def get_files(self): folder_files = [] if self.folder_src: for folder in self.folder_src.files: folder_files.append(folder) return folder_files
class LightGallery(CMSPlugin): folder = FilerFolderField( verbose_name=_('Folder'), on_delete=models.CASCADE, ) pageThumbWidth = models.CharField( _("Page Thumb Width"), max_length=255, default="150", help_text=_("Width of thumbnail on page")) pageThumbHeight = models.CharField( _("Page Thumb Height"), max_length=255, default="150", help_text=_("Height of thumbnail on page")) mode = models.CharField(_("Mode"), choices=MODES, default=MODES[0], help_text=_("Type of transition between images"), max_length=255) cssEasing = models.CharField( _("CSS Easing"), max_length=255, default="ease", help_text=_("Type of easing to be used for css animations")) easing = models.CharField( _("Easing"), max_length=255, default="linear", help_text=_("Type of easing to be used for jquery animations")) speed = models.PositiveIntegerField( _("Speed"), default=600, help_text=_("Transition duration (in ms)")) height = models.CharField(_("Height"), max_length=255, default="100%", help_text=_("Height of the gallery")) width = models.CharField(_("Width"), max_length=255, default="100%", help_text=_("Width of the gallery")) addClass = models.CharField( _("Add Class"), max_length=255, default="", help_text= _("Add custom class for gallery, can be used to set different style for different gallery" ), blank=True) startClass = models.CharField( _("Add Class"), max_length=255, default="lg-start-zoom", help_text=_("Starting animation class for the gallery")) backdropDuration = models.PositiveIntegerField( _("Backdrop Duration"), default=150, help_text= _("Lightgallery backdrop transtion duration. Do not change the value of backdrop via css" )) hideBarsDelay = models.PositiveIntegerField( _("Hide Bars Delay"), default=6000, help_text=_("Delay for hiding gallery controls in ms")) useLeft = models.BooleanField( _("Use Left"), default=False, help_text=_( "Force lightgallery to use css left property instead of transform") ) closable = models.BooleanField( _("Closable"), default=True, help_text=_("Allows clicks on dimmer to close gallery")) loop = models.BooleanField( _("Loop"), default=True, help_text= _("If false, will disable the ability to loop back to the beginning of the gallery when on the last element" )) escKey = models.BooleanField( _("ESC Key"), default=True, help_text=_( "Whether the LightGallery could be closed by pressing the 'Esc' key" )) keyPress = models.BooleanField(_("Key Press"), default=True, help_text=_("Enable keyboard navigation")) controls = models.BooleanField( _("Controls"), default=True, help_text=_("If false, prev/next buttons will not be displayed")) slideEndAnimation = models.BooleanField( _("Slide End Animation"), default=True, help_text=_("Enable slideEnd animation")) hideControlOnEnd = models.BooleanField( _("Hide Control On End"), default=False, help_text=_( "If true, prev/next button will be hidden on first/last image")) mousewheel = models.BooleanField(_("Mousewheel"), default=True, help_text=_("Change slide on mousewheel")) preload = models.PositiveIntegerField( _("Preload"), default=1, help_text= _("Number of preload slides. will execute only after the current slide is fully loaded" )) showAfterLoad = models.BooleanField( _("Show After Load"), default=True, help_text=_("Show Content once it is fully loaded")) nextHtml = models.CharField(_("Next Html"), max_length=255, default="", help_text=_("Custom html for next control"), blank=True) prevHtml = models.CharField(_("Prev Html"), max_length=255, default="", help_text=_("Custom html for prev control"), blank=True) index = models.PositiveIntegerField( _("Index"), default=0, help_text=_("Allows to set which image/video should load initially")) iframeMaxWidth = models.CharField( _("IFrame Max Width"), max_length=255, default="100%", help_text=_("Set maximum width for iframe.")) download = models.BooleanField(_("Download"), default=True, help_text=_("Enable download button")) counter = models.BooleanField( _("Counter"), default=True, help_text= _("Whether to show total number of images and index number of currently displayed image" )) appendCounterTo = models.CharField( _("Append Counter To"), max_length=255, default=".lg-toolbar", help_text=_("Where the counter should be appended")) swipeThreshold = models.PositiveIntegerField( _("Swipe Threshold"), default=50, help_text= _("By setting the swipeThreshold (in px) you can set how far the user must swipe for the next/prev image" )) enableDrag = models.BooleanField( _("Enable Drag"), default=True, help_text=_("Enables desktop mouse drag support")) enableSwipe = models.BooleanField(_("Enable Swipe"), default=True, help_text=_("Enables swipe support")) thumbnails = models.BooleanField( _("Enable Thumbnails"), default=True, help_text=_("Enable/disable thumbnails for this gallery")) animateThumb = models.BooleanField(_("Enable Thumbnail Animation "), default=True) currentPagerPosition = models.CharField( _("Current Pager Position"), choices=CURRENT_PAGER_POSITIONS, max_length=255, default=CURRENT_PAGER_POSITIONS[1][0], help_text=_("Position of selected thumbnail")) thumbWidth = models.PositiveIntegerField( _("Thumb Width"), default=100, help_text=_("Width of each thumbnails")) thumbContHeight = models.PositiveIntegerField( _("Thumb Container Height"), default=100, help_text=_( "Height of the thumbnail container including padding and border")) thumbMargin = models.PositiveIntegerField( _("Thumb Margin"), default=5, help_text=_("Spacing between each thumbnails")) showThumbByDefault = models.BooleanField( _("Show/Hide thumbnails by default"), default=True) toggleThumb = models.BooleanField( _("Toggle Thumbnail Button"), default=True, help_text=_("Whether to display thumbnail toggle button")) pullCaptionUp = models.BooleanField( _("Pull Captions Up"), default=True, help_text=_("Pull captions above thumbnails")) enableThumbDrag = models.BooleanField( _("Enable Thumbnail Drag"), default=True, help_text=_("Enables desktop mouse drag support for thumbnails")) enableThumbSwipe = models.BooleanField( _("Enable Thumbnail Swipe"), default=True, help_text=_("Enables thumbnail touch/swipe support for touch devices")) swipeThreshold = models.PositiveIntegerField( _("Swipe Threshold"), default=50, help_text= _("By setting the swipeThreshold (in px) you can set how far the user must swipe for the next/prev slide" )) zoom = models.BooleanField(_("Enable Zoom Buttons"), default=False) zoomScale = models.PositiveIntegerField( _("Scale"), default=1, help_text=_("Value of zoom should be incremented/decremented")) zoomEnableZoomAfter = models.PositiveIntegerField( _("Enable Zoom After"), default=50, help_text=_("Number in ms")) zoomActualSize = models.BooleanField(_("Enable Actual Size Button"), default=True) fullscreen = models.BooleanField(_("Enable Fullscreen Button"), default=False) pager = models.BooleanField( _("Enable Pager"), default=False, help_text=_("Enable/disable pager for this gallery")) hash = models.BooleanField(_("Enable Hash"), default=False, help_text=_("Enable/Disable hash plugin")) galleryId = models.PositiveIntegerField( _("Gallery Id"), default=1, help_text= ("Unique id for each gallery. It is mandatory when you use hash plugin for multiple galleries on the same page" )) share = models.BooleanField(_("Enable/Disable share plugin"), default=True) facebook = models.BooleanField(_("Enable Facebook share"), default=True) facebookDropdownText = models.CharField(_("Facebook dropdown text"), default="Facebook", max_length=255) twitter = models.BooleanField(_("Enable Twitter share"), default=True) twitterDropdownText = models.CharField(_("Twitter dropdown text"), default="Twitter", max_length=255) googlePlus = models.BooleanField(_("Enable googlePlus share"), default=True) googlePlusDropdownText = models.CharField(_("GooglePlus dropdown text"), default="GooglePlus", max_length=255) pinterest = models.BooleanField(_("Enable Pinterest share"), default=True) pinterestDropdownText = models.CharField(_("Pinterest dropdown text"), default="Pinterest", max_length=255) def get_folder_images(self): images = self.folder.files.instance_of(Image) return images.filter(is_public=True) def generate_id(self): return str(uuid.uuid4().fields[-1])[:7] def parse_page_thumb_width_height(self): return "%sx%s" % (self.pageThumbWidth, self.pageThumbHeight)
class Product(models.Model): name = models.CharField(max_length=100, verbose_name="Titolo:") name_uk = models.CharField('Titolo Inglese', max_length=250, null=True, blank=True) code = models.CharField('Codice', max_length=250, null=True, blank=True) category = models.ManyToManyField(Category, null=True, blank=True, verbose_name="Seleziona Categorie") ## composizione quantity = models.IntegerField( blank=True, null=True, verbose_name="quantita", help_text="quantita quando non e composizione") ##PRICE price = models.DecimalField('Prezzo', max_digits=10, decimal_places=2, blank=True, null=True, help_text="prezzo base") discount = models.IntegerField(blank=True, null=True, default=0, verbose_name="sconto percentuale") price_offer = models.DecimalField('Prezzo Scontato', max_digits=10, decimal_places=2, blank=True, null=True) ##MULTIMEDIA image = models.ImageField(blank=True, null=True, upload_to='product', verbose_name="Immagine") gallery = models.ManyToManyField( Gallery, null=True, blank=True, verbose_name="Seleziona Immagini x Slider") slider = ImageRatioField('image', '1000x556', verbose_name="Slider") thumb = ImageRatioField('image', '800x578', verbose_name="Miniatura") thumbdue = ImageRatioField('image', '745x558', verbose_name="Miniatura pagina dettaglio") croplibero = ImageRatioField('image', '595x335', free_crop=True, verbose_name="Ritaglio Libero") album = FilerFolderField(null=True, blank=True) video = models.ManyToManyField(Video, null=True, blank=True, verbose_name="Video") ## Data color = models.ManyToManyField(Color, null=True, blank=True, verbose_name="Seleziona Colori", help_text="solo se a 40 giorni") material = models.ManyToManyField(Material, null=True, blank=True, verbose_name="Seleziona Materiale") size = models.CharField('Misure', max_length=250, null=True, blank=True) width = models.IntegerField(blank=True, null=True, verbose_name="larghezza") lenght = models.IntegerField(blank=True, null=True, verbose_name="lunghezza") depth = models.IntegerField(blank=True, null=True, verbose_name="Profondita") height = models.IntegerField(blank=True, null=True, verbose_name="altezza") volume = models.DecimalField('Volume', max_digits=10, decimal_places=2, blank=True, null=True) descrizione = models.TextField(null=True, blank=True, verbose_name="Descrizione") descrizione_uk = models.TextField(null=True, blank=True, verbose_name="Descrizione Inglese") allegato = models.FileField(blank=True, null=True, upload_to='allegato') moduli = models.ManyToManyField(Moduli, null=True, blank=True, verbose_name="Seleziona Moduli") ## Accessory tags = TaggableManager(verbose_name="Parole chiave", blank=True) pub_date = models.DateTimeField('date published', editable=False) active = models.BooleanField('attiva', default=False) slide = models.BooleanField('Mostra in Slide', default=False) promo = models.BooleanField('Mostra in Promo', default=False) def ivato(self): iva = self.price * 22 / 100 ivato = self.price + iva return ivato def save(self, *args, **kwargs): self.price_offer = self.price - (self.price * self.discount / 100) self.pub_date = datetime.now() super(Product, self).save(*args, **kwargs) # Call the "real" save() method. def image_img(self): if self.image: return u'<img src="%s" style="width:300px"/>' % self.image.url else: return '(Sin imagen)' image_img.short_description = 'Thumb' image_img.allow_tags = True def __unicode__(self): return self.name class Meta: verbose_name_plural = "Prodotti" ordering = ['id']
class Accessory(models.Model): name = models.CharField(max_length=100, verbose_name="Titolo:") code = models.CharField('Codice', max_length=250, null=True, blank=True) category = models.ManyToManyField(Category, null=True, blank=True, verbose_name="Seleziona Categorie") ##PRICE price = models.DecimalField('Prezzo', max_digits=10, decimal_places=2, blank=True, null=True) discount = models.IntegerField(blank=True, null=True, verbose_name="sconto percentuale") price_offer = models.DecimalField('Prezzo Scontato', max_digits=10, decimal_places=2, blank=True, null=True) ##MULTIMEDIA image = models.ImageField(blank=True, null=True, upload_to='accessory', verbose_name="Immagine") slider = ImageRatioField('image', '1170x600', verbose_name="Slider") thumb = ImageRatioField('image', '800x578', verbose_name="Miniatura") thumbdue = ImageRatioField('image', '745x558', verbose_name="Miniatura pagina dettaglio") croplibero = ImageRatioField('image', '595x335', free_crop=True, verbose_name="Ritaglio Libero") album = FilerFolderField(null=True, blank=True) ## Composition color = models.ManyToManyField(Color, null=True, blank=True, verbose_name="Seleziona Colori") material = models.ManyToManyField(Material, null=True, blank=True, verbose_name="Seleziona Materiali") ## Data quantity = models.IntegerField(blank=True, null=True, verbose_name="Quantita") size = models.CharField('Misure', max_length=250, null=True, blank=True) width = models.IntegerField(blank=True, null=True, verbose_name="larghezza") lenght = models.IntegerField(blank=True, null=True, verbose_name="lunghezza") depth = models.IntegerField(blank=True, null=True, verbose_name="Profondita") height = models.IntegerField(blank=True, null=True, verbose_name="altezza") volume = models.DecimalField('Volume', max_digits=10, decimal_places=2, blank=True, null=True) descrizione = models.TextField(null=True, blank=True, verbose_name="Descrizione") allegato = models.FileField(blank=True, null=True, upload_to='allegato') ## Delivery prompt_delivery = models.BooleanField('Pronta Consegna', default=False) delivery = models.BooleanField('Consegna 40gg', default=False) tags = TaggableManager(verbose_name="Parole chiave", blank=True) pub_date = models.DateTimeField('date published') active = models.BooleanField('attiva', default=False) slide = models.BooleanField('Mostra in Slide', default=False) promo = models.BooleanField('Mostra in Promo', default=False) def image_img(self): if self.image: return u'<img src="%s" style="width:300px"/>' % self.image.url else: return '(Sin imagen)' image_img.short_description = 'Thumb' image_img.allow_tags = True def __unicode__(self): return self.name class Meta: verbose_name_plural = "Accessori" ordering = ['id']
class Gallery(models.Model): """ Model to display a filer folder's contents and provide extra information. :title: Gallery title. :date: Date/Time of the gallery event. :location: Location of the gallery items. :description: Description of the gallery. :folder: Linked folder of the filer app. :is_published: True if the Gallery is published or not. """ category = models.ForeignKey( 'image_gallery.GalleryCategory', verbose_name=_('Category'), blank=True, null=True, ) title = models.CharField( max_length=100, verbose_name=_('Title'), ) date = models.DateTimeField( verbose_name=_('Date'), blank=True, null=True, ) location = models.CharField( max_length=100, verbose_name=_('Location'), blank=True, null=True, ) description = PlaceholderField( 'description', verbose_name=_('Description'), ) folder = FilerFolderField(verbose_name=_('Folder'), ) is_published = models.BooleanField( verbose_name=_('Is published'), default=False, ) class Meta: ordering = ('title', ) verbose_name = _('Gallery') verbose_name_plural = _('Galleries') def __unicode__(self): return '{0}'.format(self.title) def get_absolute_url(self): return reverse('image_gallery_detail', kwargs={ 'pk': self.pk, }) def get_featured_images(self): """ Returns those images of a given Gallery that are featured images. TODO: Find a way to test this """ result = [] for image in self.get_folder_images(): try: if image.galleryimageextension.is_featured_image: result.append(image) except GalleryImageExtension.DoesNotExist: pass return result def get_folder_images(self): """ Returns a set of images, which have been placed in this folder. TODO: Find a way to test this """ qs_files = self.folder.files.instance_of(Image) return qs_files.filter(is_public=True) def get_folder_image_list(self): """ Returns a list of images, which have been placed in this folder. They are first sorted by name, followed by those without name, sorted by file name. """ qs_files = self.folder.files.instance_of(Image) qs_files = qs_files.filter(is_public=True) return list( chain( qs_files.exclude(name='').order_by('name'), qs_files.filter(name='').order_by('file')))