示例#1
0
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])
示例#2
0
class GalleryPluginModel(CMSPlugin):
    ''' Gallery Plugin model
    '''
    folder = FilerFolderField(on_delete=models.PROTECT)

    def __str__(self) -> str:
        return "{}".format(self.folder)
示例#3
0
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
示例#4
0
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', )
示例#5
0
文件: _media.py 项目: yurkobb/shuup
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
示例#6
0
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
示例#7
0
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',)
示例#8
0
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']
示例#10
0
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)
示例#11
0
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)
示例#12
0
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',
    )
示例#13
0
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
示例#14
0
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')
示例#15
0
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
示例#16
0
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
示例#17
0
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>"
示例#18
0
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
示例#19
0
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)
示例#20
0
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']
示例#21
0
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
示例#22
0
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', )
示例#23
0
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
示例#24
0
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
示例#25
0
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
示例#26
0
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
示例#27
0
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)
示例#28
0
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']
示例#29
0
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']
示例#30
0
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')))