Example #1
0
class Employee(models.Model):
    name = models.CharField("employee name",
                            max_length=150,
                            null=False,
                            blank=False)
    position = models.CharField("employee position", max_length=150)
    description = models.TextField("extra information")
    photo = models.ImageField("employee photo",
                              upload_to=upload_to,
                              blank=True,
                              null=True)

    photo_80x80 = ImageSpecField(
        source="photo",
        processors=[SmartResize(80, 80)],
        format="JPEG",
        options={"quality": 80},
    )
    photo_300x200 = ImageSpecField(
        source="photo",
        processors=[SmartResize(300, 200)],
        format="JPEG",
        options={"quality": 80},
    )

    class Meta:
        ordering = ("id", )

    def __str__(self):
        return self.name

    def __repr__(self):
        return f"<Employee id={self.pk} name={self.name} position={self.position}>"
Example #2
0
class Area(djm.Model):
    """
    A field of knowledge
    """
    #: The title of the area
    title = djm.CharField(max_length=64)
    #: An image that illustrates the area
    image = djm.ImageField(null=True, blank=True, upload_to=area_pic_path)
    image_thumbnail = ImageSpecField(
        source='image',
        processors=[SmartResize(*settings.THUMBNAIL_SIZE)],
        format='JPEG',
        options={'quality': settings.HIGH_QUALITY})
    image_cover = ImageSpecField(
        source='image',
        processors=[SmartResize(*settings.COVER_SIZE)],
        format='JPEG',
        options={'quality': settings.HIGH_QUALITY})
    img_url = djm.TextField(null=True, blank=True)  # TODO deleteme

    class Meta:
        ordering = ('title',)

    def __str__(self):
        return self.title
Example #3
0
class Subarea(djm.Model):
    """
    A category inside a field of knowledge (area)
    """
    #: This subarea's title
    title = djm.CharField(max_length=256)
    #: An image that illustrates the area
    description = djm.TextField(max_length=1024, verbose_name='descrição')
    #: The :py:class:`synopses.models.Area` that owns this subarea
    area = djm.ForeignKey(Area, on_delete=djm.PROTECT, related_name='subareas')
    #: An image that illustrates the subarea
    image = djm.ImageField(null=True, blank=True, upload_to=subarea_pic_path, verbose_name='imagem')
    image_thumbnail = ImageSpecField(
        source='image',
        processors=[SmartResize(*settings.THUMBNAIL_SIZE)],
        format='JPEG',
        options={'quality': settings.HIGH_QUALITY})
    image_cover = ImageSpecField(
        source='image',
        processors=[SmartResize(*settings.COVER_SIZE)],
        format='JPEG',
        options={'quality': settings.HIGH_QUALITY})
    img_url = djm.TextField(null=True, blank=True, verbose_name='imagem (url)')  # TODO deleteme

    class Meta:
        ordering = ('title',)

    def __str__(self):
        return self.title
Example #4
0
def thumbnail(file, size='104x104'):
    try:
        # defining the size
        x, y = [int(x) for x in size.split('x')]
        # defining the filename and the miniature filename
        filehead, filetail = os.path.split(file.path)
        basename, format = os.path.splitext(filetail)
        miniature = basename + '_' + size + '.png'
        filename = file.path
        miniature_filename = os.path.join(filehead, miniature)
        filehead, filetail = os.path.split(file.url)
        miniature_url = filehead + '/' + miniature
        if os.path.exists(miniature_filename) and os.path.getmtime(
                filename) > os.path.getmtime(miniature_filename):
            os.unlink(miniature_filename)
        # if the image wasn't already resized, resize it
        if not os.path.exists(miniature_filename):
            image = Image.open(filename)
            processor = SmartResize(width=x, height=y)
            image = processor.process(image)
            try:
                image.save(miniature_filename, 'png', quality=90, optimize=1)
            except Exception as e:
                print 'Error: %s' % e
                image.save(miniature_filename, 'png', quality=90)

        return miniature_url
    except Exception as e:
        print 'Error: %s' % e
        return ""
Example #5
0
class IndexConfiguration(SingletonModel):
    def header_imagen_upload_to(instance, filename):
        new_filename = get_image_name(clase='Header', filename=filename)
        return "web/img/index/%s" % new_filename

    def overlay_publicidad_imagen_upload_to(instance, filename):
        new_filename = get_image_name(clase='Overlay', filename=filename)
        return "web/img/index/%s" % new_filename

    header_titulo = models.CharField(max_length=150, default='Aqui el titulo')
    header_text = models.TextField(max_length=150,
                                   default='Aqui la descripción',
                                   null=True,
                                   blank=True)
    header_text_en = models.TextField(max_length=150,
                                      default='Aqui la descripción Ingles',
                                      null=True,
                                      blank=True)
    header_imagen = ProcessedImageField(
        processors=[SmartResize(width=2560, height=1500, upscale=False)],
        format='JPEG',
        options={'quality': 50},
        upload_to=header_imagen_upload_to,
        verbose_name='Imagen Cabezote (2560 x 1500)',
        null=True,
        blank=True)
    header_imagen_normal = ImageSpecField(
        processors=[SmartResize(width=1280, height=750, upscale=False)],
        options={'quality': 50},
        source='header_imagen',
        format='JPEG')
    header_imagen_webp = ImageSpecField(
        processors=[SmartResize(width=1280, height=750, upscale=False)],
        options={'quality': 50},
        source='header_imagen',
        format='WEBP')
    header_imagen_cell = ImageSpecField(
        source='header_imagen',
        processors=[SmartResize(width=412, height=660, upscale=False)],
        format='JPEG')
    header_imagen_cell_webp = ImageSpecField(
        source='header_imagen',
        processors=[SmartResize(width=412, height=660, upscale=False)],
        format='WEBP')
    overlay_publicidad = ProcessedImageField(
        processors=[ResizeToFit(width=1024, height=768, upscale=False)],
        format='JPEG',
        options={'quality': 70},
        upload_to=overlay_publicidad_imagen_upload_to,
        verbose_name='Imagen Overlay Publicidad (1024 x 768)',
        null=True,
        blank=True)
    overlay_url = models.URLField(blank=True, null=True)

    def __unicode__(self):
        return "Index"

    class Meta:
        verbose_name = "Index"
Example #6
0
def resize(uploaded_file: 'SimpleUploadedFile', **options):
    buffer = BytesIO()
    img = Image.open(uploaded_file)
    processor = SmartResize(**options)
    new_img = processor.process(img)
    new_img.save(buffer, format='png')
    return SimpleUploadedFile(name=utils.replace_extension(
        uploaded_file.name, 'png'),
                              content=buffer.getvalue(),
                              content_type=uploaded_file.content_type)
Example #7
0
class Place(CachedEntity):
    """
    A generic geographical place
    TODO: Change to include building
    """
    #: Name of the place
    name = djm.CharField(max_length=128)
    #: Building it is located at
    building = djm.ForeignKey(Building, null=True, blank=True, on_delete=djm.PROTECT, related_name='places')
    #: Building floor where it is located
    floor = djm.IntegerField(default=0)
    #: Whether it is unlocked to unidentified personnel.
    unlocked = djm.BooleanField(null=True, default=None)
    #: Geographic location of the place
    location = gis.PointField(geography=True, null=True, blank=True)
    #: List of features associated with this place (risk of explosion, special clothing, ...)
    features = djm.ManyToManyField('PlaceFeature', blank=True)
    #: Picture illustrating this place
    picture = djm.ImageField(upload_to=place_pic_path, null=True, blank=True)
    picture_cover = ImageSpecField(
        source='picture',
        processors=[SmartResize(*settings.COVER_SIZE)],
        format='JPEG',
        options={'quality': settings.MEDIUM_QUALITY})

    def __str__(self):
        return f'{self.name} ({self.building})'

    def short_str(self):
        return f"{self.name} ({self.building.abbreviation})"
Example #8
0
class CasosExitoConfiguration(SingletonModel):
    def header_imagen_upload_to(instance, filename):
        new_filename = get_image_name(clase='Header', filename=filename)
        return "web/img/casexi/%s" % new_filename

    header_text = models.TextField(max_length=150,
                                   verbose_name='Titulo',
                                   default='Aqui la descripción',
                                   null=True,
                                   blank=True)
    header_text_en = models.TextField(max_length=150,
                                      verbose_name='Titulo Ingles',
                                      null=True,
                                      blank=True)
    header_imagen = ProcessedImageField(
        processors=[SmartResize(width=2560, height=1500, upscale=False)],
        format='JPEG',
        options={'quality': 50},
        upload_to=header_imagen_upload_to,
        verbose_name='Imagen Cabezote (2560 x 1500)',
        null=True,
        blank=True)
    descripcion = HTMLField('Texto Casos Éxito',
                            default='Descripción casos Éxito',
                            null=True,
                            blank=True)
    descripcion_en = HTMLField('Texto Casos Éxito Ingles',
                               null=True,
                               blank=True)

    def __unicode__(self):
        return "Casos Exito"

    class Meta:
        verbose_name = "Casos Exito"
Example #9
0
class CityHouse(SortableModel):
    city = models.ForeignKey(to=City, verbose_name=u'Город')
    address = models.CharField(verbose_name=u'Адрес', max_length=256)
    coord_x = models.DecimalField(max_digits=9, decimal_places=6, blank=True, null=True, verbose_name=u'Широта')
    coord_y = models.DecimalField(max_digits=9, decimal_places=6, blank=True, null=True, verbose_name=u'Долгота')
    image = models.ImageField(verbose_name=u'Обложка', upload_to='cityhouse/')
    image_resize = ImageSpecField(
        [SmartResize(*settings.HOUSE_SIZE)], source='image', format='JPEG', options={'quality': 94}
    )

    class Meta:
        verbose_name = u'Адрес'
        verbose_name_plural = u'Адреса'
        app_label = 'landing'
        ordering = ('order', )

    def __unicode__(self):
        return self.address

    def pic(self):
        return '<img src="%s" width="120"/>' % self.image_resize.url

    pic.short_description = u"Миниатюра"
    pic.allow_tags = True

    def save(self, *args, **kwargs):
        address = u'город %s %s' % (self.city.name, self.address)
        api_key = settings.YANDEX_MAPS_API_KEY
        pos = geocode(api_key, address)
        self.coord_x = float(pos[0])
        self.coord_y = float(pos[1])
        super(CityHouse, self).save()
Example #10
0
class InstagramLink(models.Model):
    image = models.ImageField(verbose_name='Обложка паблика',
                              upload_to='images',
                              blank=True,
                              null=True)
    thumb = ImageSpecField(source='image',
                           options={'quality': 80},
                           processors=[SmartResize(225, 225)])
    link = models.CharField(
        max_length=250,
        verbose_name='Ссылка на паблик',
        default='https://www.instagram.com/praktikabeauty/')

    def __str__(self):
        return self.thumbnail()

    def thumbnail(self):
        if self.image:
            return mark_safe(
                '<img style="height:180px;width:180px;" src="{0}"/>'.format(
                    self.thumb.url))
        return mark_safe('<p>=(</p>')

    thumbnail.short_description = 'Миниатюра'

    class Meta:
        verbose_name = 'Ссылка'
        verbose_name_plural = 'Ссылки'
Example #11
0
class Travel(CommonPage):
    class Meta:
        verbose_name = u'Статья'
        verbose_name_plural = u'Статьи'
        app_label = 'travel'

    def __unicode__(self):
        return self.title

    #
    # def save(self):
    #     if not self.slug:
    #         self.slug = slugify(self.title)
    #     super(Travel, self).save()

    def get_absolute_url(self):
        return reverse('travels:detail', kwargs={'slug': self.slug})

    def pic(self):
        return '<img src="%s" width="170"/>' % self.cover_resize.url

    pic.short_description = u"Обложка"
    pic.allow_tags = True

    user = models.ForeignKey(to=User, verbose_name=u'Пользователь')
    # title = models.CharField(verbose_name=u'Заголовок', max_length=255)
    text = RichTextField(verbose_name=u'Текст')
    cover = models.ImageField(verbose_name=u'Обложка',
                              upload_to=get_image_path)
    cover_resize = ImageSpecField([SmartResize(*settings.TRAVEL_COVER_SIZE)],
                                  source='cover',
                                  format='JPEG',
                                  options={'quality': 94})
    slug = models.SlugField(max_length=100, verbose_name=u'url')
Example #12
0
class LaEmpresaConfiguration(SingletonModel):
    def imagen_principal_upload_to(instance, filename):
        new_filename = get_image_name(clase='La Empresa Principal',
                                      filename=filename)
        return "web/img/empr/%s" % new_filename

    def imagen_info_upload_to(instance, filename):
        new_filename = get_image_name(clase='Info', filename=filename)
        return "web/img/empr/%s" % new_filename

    titulo = models.CharField(max_length=150, default='Aqui el titulo')
    texto = HTMLField('Descripcion Empresa', default='Aqui la descripción')
    texto_en = HTMLField('Descripcion Empresa Ingles',
                         default='Aqui la descripción en ingles')
    imagen_principal = ProcessedImageField(
        processors=[SmartResize(width=570, height=362, upscale=False)],
        format='JPEG',
        options={'quality': 70},
        upload_to=imagen_principal_upload_to,
        verbose_name='Imagen Principal (570x362)',
        null=True,
        blank=True)
    imagen_info_empresa = ProcessedImageField(
        processors=[SmartResize(width=570, height=362, upscale=False)],
        format='JPEG',
        options={'quality': 70},
        upload_to=imagen_info_upload_to,
        verbose_name='Imagen Informacion Empresa (570x362)',
        null=True,
        blank=True)
    imagen_info_empresa_en = ProcessedImageField(
        processors=[SmartResize(width=570, height=362, upscale=False)],
        format='JPEG',
        options={'quality': 70},
        upload_to=imagen_info_upload_to,
        verbose_name='Imagen Informacion Empresa Ingles (570x362)',
        null=True,
        blank=True)
    video = models.CharField(max_length=500, null=True, blank=True)
    video_en = models.CharField(max_length=500, null=True, blank=True)

    def __unicode__(self):
        return "La Empresa"

    class Meta:
        verbose_name = "La Empresa"
Example #13
0
class Award(djm.Model):
    name = djm.CharField(max_length=32, unique=True)
    style = djm.CharField(max_length=15, null=True, default=None)
    points = djm.IntegerField(default=0)
    users = djm.ManyToManyField(User,
                                through='UserAward',
                                related_name='awards')
    picture = djm.ImageField(upload_to=award_pic_path, null=True)
    picture_icon = ImageSpecField(
        source='picture',
        processors=[SmartResize(*settings.MEDIUM_ICON_SIZE)],
        format='PNG')
Example #14
0
class NestPicture(models.Model):
    def get_file_path(instance, filename):
        return os.path.join('pictures/nests/', make_unique_filename(filename))

    observation = models.ForeignKey(Nest,
                                    on_delete=models.CASCADE,
                                    related_name='pictures')
    image = models.ImageField(upload_to=get_file_path)
    thumbnail = ImageSpecField(source='image',
                               processors=[SmartResize(600, 300)],
                               format='JPEG',
                               options={'quality': 90})
Example #15
0
def thumbnail(file, size='104x104'):
    try:

        # We will place the thumbnails in a directory alongside the image,
        # which will be named the same as the image except with "-thumbnail"
        # appended to it. Within that directory, there will be other images
        # named according to the requested size, for example "30x30.png" and
        # so forth. This way, the profile image names are entirely predictable
        # from the image names alone.
        thumb_dir = file.path + '-thumbnail'

        # Make sure that the thumbnail directory exists.
        if not os.path.isdir(thumb_dir):
            os.mkdir(thumb_dir)

        # Figure out the stand-alone filename ("30x30.png", for example) and
        # subsequently define the full local path name to the thumbnail and
        # its corresponding URL.
        thumb_filename = size + '.png'
        thumb_fullpath = os.path.join(thumb_dir, thumb_filename)
        thumb_url = file.url + '-thumbnail/' + thumb_filename

        # Check if the image is newer than the requested thumbnail, and if so,
        # remove the thumbnail so that it will be regenerated.
        if os.path.exists(thumb_fullpath) and os.path.getmtime(
                file.path) > os.path.getmtime(thumb_fullpath):
            os.unlink(thumb_fullpath)

        # Create the thumbnail if it does not already exist.
        if not os.path.exists(thumb_fullpath):
            width, height = [int(dimension) for dimension in size.split('x')]
            processor = SmartResize(width=width, height=height)
            image = processor.process(Image.open(file.path))
            image.save(thumb_fullpath, 'png', quality=90, optimize=True)

        return thumb_url

    except Exception as e:
        print 'Error: %s' % e
        return ""
def add_artwork(image_uri, file_path, processor='SmartResize'):
    size = (300, 300)
    try:
        if 'http' in image_uri:
            # Remote image file
            h = requests.head(image_uri)
            content_type = h.headers.get('content-type')
            r = requests.get(image_uri)
            image_data = r.content
            print(content_type)
        else:
            # Local image file
            mime = MimeTypes()
            content_type, a = mime.guess_type(filename)
            with open(image_uri, 'rb') as file:
                image_data = file.read()
    except Exception as e:
        print("Coult not open {0}".format(image_uri))
        return False

    # Try to embed picture
    try:
        fd = mutagen.File(file_path)
        image = Image.open(BytesIO(image_data))
        if 'resizetofit' in processor.lower():
            color_thief = ColorThief(BytesIO(image_data))
            # get the dominant color
            # dominant_color = color_thief.get_color(quality=10)
            dominant_color = color_thief.get_palette()[0]
            processor = ResizeToFit(size[0], size[1])
        else:
            processor = SmartResize(size[0], size[1])
            dominant_color = (255, 255, 255)
        print(dominant_color)
        new_img = processor.process(image)
        background = Image.new("RGB", size, dominant_color)
        background.paste(new_img,
                         mask=new_img.split()[3])  # 3 is the alpha channel
        temp = BytesIO()
        background.save(temp, format="JPEG")
        fd.tags.add(
            APIC(encoding=3,
                 mime=content_type,
                 type=3,
                 desc=u'Album',
                 data=temp.getvalue()))
        fd.save()
        return True
    except Exception as e:
        print(e)
        print('Could not set album art')
        return False
Example #17
0
class Solucion(TimeStampedModel):
    def header_imagen_upload_to(instance, filename):
        new_filename = get_image_name(filename=filename)
        return "web/img/solu/%s" % new_filename

    def imagen_boton_upload_to(instance, filename):
        new_filename = get_image_name(filename=filename)
        return "web/img/solu/%s" % new_filename

    nombre = models.CharField(max_length=120, verbose_name=_('Nombre'))
    nombre_en = models.CharField(max_length=120, verbose_name='Nombre en ingles', default='Nombre en Ingles')
    icono_class = models.CharField(default='', max_length=100)
    texto = HTMLField('Texto Soluciones', default='Descripción de esta solución', null=True, blank=True)
    texto_en = HTMLField('Texto Soluciones Ingles', default='Descripción de esta solución en Ingles', null=True,
                         blank=True)
    orden = models.PositiveIntegerField(default=0)
    slug = models.SlugField(null=True, blank=True)

    header_imagen = ProcessedImageField(
        processors=[SmartResize(width=2560, height=588, upscale=False)],
        format='JPEG',
        options={'quality': 70},
        upload_to=header_imagen_upload_to,
        verbose_name='Imagen Cabezote',
        null=True,
        blank=True
    )

    def save(self, force_insert=False, force_update=False, using=None, update_fields=None):
        super().save(force_insert, force_update, using, update_fields)
        cache = CacheConfiguration.objects.get()
        cache.soluciones_update = timezone.now()
        cache.save()

    def delete(self, using=None, keep_parents=False):
        cache = CacheConfiguration.objects.get()
        cache.soluciones_update = timezone.now()
        cache.save()
        return super().delete(using, keep_parents)

    def get_absolute_url(self):
        if self.slug:
            return reverse('web_soluciones:solucion_detail_slug', kwargs={"slug": self.slug})
        return reverse('web_soluciones:solucion_detail', kwargs={"pk": self.pk})

    def __str__(self):
        return self.nombre

    class Meta:
        verbose_name = 'Solución'
        verbose_name_plural = 'Soluciones'
Example #18
0
class Slider(models.Model):
    class Meta:
        verbose_name = u'Слайд'
        verbose_name_plural = u'Слайды'

    def __unicode__(self):
        return u'%s г.%s' % (self.name, self.city.name)

    city = models.ForeignKey(to=City, verbose_name=u'Город')
    name = models.CharField(verbose_name=u'Здание', max_length=255)
    image = models.ImageField(verbose_name=u'Изображение', upload_to=get_slider_path)
    image_resize = ImageSpecField(
        [SmartResize(*settings.CITY_SLIDER_SIZE)], source='image', format='JPEG', options={'quality': 94}
    )
Example #19
0
class Excurse(CommonPage):
    class Meta:
        verbose_name = u'Экскурсия'
        verbose_name_plural = u'Экскурсии'
        app_label = 'excurse'
        ordering = [
            '-created',
        ]

    def __unicode__(self):
        return self.title

    # def save(self):
    #     self.slug = slugify(self.title)
    #     super(Excurse, self).save()

    def pic(self):
        return '<img src="%s" width="170"/>' % self.cover_resize.url

    def get_absolute_url(self):
        return reverse('excurse:detail', kwargs={'slug': self.slug})

    pic.short_description = u"Обложка"
    pic.allow_tags = True

    section = models.ForeignKey(to=ExcurseSection, verbose_name=u'Направление')
    # name = models.CharField(verbose_name=u'Название', max_length=250)
    cover = models.ImageField(upload_to=get_image_path,
                              verbose_name=u'Обложка')
    cover_resize = ImageSpecField([SmartResize(*settings.EXCURSE_COVER_SIZE)],
                                  source='cover',
                                  format='JPEG',
                                  options={'quality': 94})
    price = models.PositiveIntegerField(verbose_name=u'Стоимость',
                                        blank=True,
                                        null=True)
    price_desc = models.TextField(verbose_name=u'Описание стоимости',
                                  blank=True,
                                  null=True)
    time = models.CharField(verbose_name=u'Длительность',
                            max_length=250,
                            blank=True,
                            null=True)
    start = models.CharField(verbose_name=u'Отправка',
                             max_length=250,
                             blank=True,
                             null=True)
    text = RichTextField(verbose_name=u'Текст')
    slug = models.SlugField(max_length=100, verbose_name=u'url')
Example #20
0
class BlockExample(models.Model):
    class Meta:
        verbose_name = u'Прмеры размещений'
        verbose_name_plural = u'Прмеры размещений'
        app_label = 'landing'
        ordering = ('city', )

    def __unicode__(self):
        return self.name

    city = models.ForeignKey(to=City, verbose_name=u'Город', null=True, blank=True)
    name = models.CharField(verbose_name=u'Название фотографии(адрес)', max_length=256)
    image = models.ImageField(verbose_name=u'Фотография', upload_to=upload_to)
    image_resize = ImageSpecField(
        [SmartResize(*settings.EXAMPLE_THUMB_SIZE)], source='image', format='JPEG', options={'quality': 94}
    )
Example #21
0
class NestPicture(models.Model):
    def get_file_path(instance, filename):
        return os.path.join('pictures/nests/', make_unique_filename(filename))

    observation = models.ForeignKey(Nest,
                                    on_delete=models.CASCADE,
                                    related_name='pictures',
                                    blank=True,
                                    null=True)
    datetime = models.DateTimeField(auto_now_add=True)
    image = models.ImageField(verbose_name=_("Photo"), upload_to=get_file_path)
    thumbnail = ImageSpecField(source='image',
                               processors=[SmartResize(600, 300)],
                               format='JPEG',
                               options={'quality': 90})

    def to_dict(self):
        return {'url': self.image.url, 'name': self.image.name}
Example #22
0
class BlockReview(models.Model):
    class Meta:
        verbose_name = u'Отзыв'
        verbose_name_plural = u'Отзывы'
        app_label = 'landing'
        ordering = ('city', )

    def __unicode__(self):
        return self.name

    city = models.ForeignKey(to=City, verbose_name=u'Город', null=True, blank=True)
    name = models.CharField(verbose_name=u'ФИО', max_length=256)
    image = models.ImageField(verbose_name=u'Фотография', upload_to=upload_to)
    image_resize = ImageSpecField(
        [SmartResize(*settings.REVIEW_THUMB_SIZE)], source='image', format='JPEG', options={'quality': 94}
    )
    link = models.CharField(verbose_name=u'ссылка', max_length=256, blank=True, null=True)
    description = models.TextField(verbose_name=u'Описание(компания, должность)')
    text = models.TextField(verbose_name=u'Текст комментария')
Example #23
0
class Gallery(SortableModel):
    image = models.ImageField(verbose_name=u'Изображение', upload_to='gallery/')
    image_resize = ImageSpecField(
        [SmartResize(*settings.GALLERY_SIZE)], source='image', format='JPEG', options={'quality': 94}
    )

    class Meta:
        verbose_name = u'Галерея'
        verbose_name_plural = u'Галерея'
        app_label = 'landing'
        ordering = ('order', )

    def __unicode__(self):
        return u'Изображение #%s' % self.id

    def pic(self):
        return '<img src="%s" width="120"/>' % self.image_resize.url
    pic.short_description = u"Миниатюра"
    pic.allow_tags = True
Example #24
0
class Thanks(SortableModel):
    name = models.CharField(verbose_name=u'Название или ФИО', max_length=256)
    desc = models.CharField(verbose_name=u'Подпись', max_length=256, blank=True, null=True)
    image = models.ImageField(verbose_name=u'Благодарственно письмо', upload_to='thanks/')
    image_resize = ImageSpecField(
        [SmartResize(*settings.THANKS_SIZE)], source='image', format='JPEG', options={'quality': 94}
    )

    class Meta:
        verbose_name = u'Благодарственное письмо'
        verbose_name_plural = u'Благодарственные письма'
        app_label = 'landing'
        ordering = ('order', )

    def __unicode__(self):
        return self.name

    def pic(self):
        return '<img src="%s" width="120"/>' % self.image_resize.url
    pic.short_description = u"Миниатюра"
    pic.allow_tags = True
Example #25
0
class Certificate(models.Model):
    class Meta:
        verbose_name = u"Сертификат"
        verbose_name_plural = u"Сертификаты"
        app_label = 'certificate'

    def __unicode__(self):
        if self.alt:
            return self.alt
        else:
            return self.image.url

    image = models.ImageField(verbose_name=u'Изображения',
                              upload_to='certificate/')
    image_resize = ImageSpecField([SmartResize(*settings.CERTIFICATE_SIZE)],
                                  source='image',
                                  format='JPEG',
                                  options={'quality': 94})
    alt = models.CharField(verbose_name=u'Описание',
                           max_length=500,
                           null=True,
                           blank=True)
Example #26
0
class Why(models.Model):
    class Meta:
        verbose_name = u'Почему именно мы'
        verbose_name_plural = u'Почему именно мы'
        app_label = 'landing'

    def __unicode__(self):
        return self.name

    def pic(self):
        return '<img src="%s" width="170"/>' % self.icon_resize.url

    pic.short_description = u"Иконка"
    pic.allow_tags = True

    name = models.CharField(verbose_name=u'Заголовок', max_length=256)
    text = models.TextField(verbose_name=u'Текст')
    icon = models.ImageField(upload_to=get_image_path, verbose_name=u'Иконка')
    icon_resize = ImageSpecField([SmartResize(*settings.WHY_ICON_SIZE)],
                                 source='icon',
                                 format='PNG',
                                 options={'quality': 94})
Example #27
0
class Photo(models.Model):
    class Meta:
        verbose_name = u'Фотография'
        verbose_name_plural = u'Фотографии'
        app_label = 'landing'

    def __unicode__(self):
        return self.name

    def pic(self):
        return '<img src="%s" width="170"/>' % self.image_resize.url

    pic.short_description = u"Изображение"
    pic.allow_tags = True

    name = models.CharField(verbose_name=u'Название', max_length=256)
    image = models.ImageField(upload_to=get_photo_path,
                              verbose_name=u'Изображение')
    image_resize = ImageSpecField([SmartResize(*settings.PHOTO_IMAGE_SIZE)],
                                  source='image',
                                  format='JPEG',
                                  options={'quality': 94})
Example #28
0
class Department(Importable, CachedEntity):
    """An (official) department"""
    #: Full name of the department
    name = djm.CharField(max_length=128)
    #: Verbose description of the department role and activities.
    description = MarkdownxField(null=True, blank=True)
    #: Headquarters building
    building = djm.ForeignKey(Building, on_delete=djm.PROTECT, null=True, blank=True, related_name='departments')
    #: Flag telling whether the department still exists
    extinguished = djm.BooleanField(default=True)
    #: Picture illustrating this department
    picture = djm.ImageField(upload_to=department_pic_path, null=True, blank=True)
    picture_thumbnail = ImageSpecField(
        source='picture',
        processors=[SmartResize(*settings.THUMBNAIL_SIZE)],
        format='JPEG',
        options={'quality': settings.MEDIUM_QUALITY})
    #: URL to this departments's official page
    url = djm.URLField(max_length=256, null=True, blank=True)
    #: Phone number in the format +country number,extension
    phone = djm.CharField(max_length=20, null=True, blank=True)
    #: This department's general email address
    email = djm.EmailField(null=True, blank=True)
    #: This department's president
    president = djm.ForeignKey(
        'Teacher',
        null=True,
        blank=True,
        on_delete=djm.PROTECT,
        related_name='presided_departments')

    class Meta:
        ordering = ['name']

    def __str__(self):
        return self.name

    def get_absolute_url(self):
        return reverse('college:department', args=[self.id])
Example #29
0
class StaffProfile(models.Model):
    user = models.OneToOneField(settings.AUTH_USER_MODEL,
                                on_delete=models.CASCADE,
                                related_name="staff_profile")
    position = models.CharField(verbose_name="position title",
                                max_length=250,
                                default="Author")
    photo = models.ImageField(verbose_name="photo",
                              upload_to=staff_photo_upload_to,
                              blank=True,
                              null=True)
    bio = models.TextField(
        verbose_name="biography",
        blank=True,
        null=True,
        help_text=
        "Optional author biography or other short personal information",
    )
    created_at = models.DateTimeField(verbose_name="created at",
                                      auto_now_add=True)
    updated_at = models.DateTimeField(verbose_name="updated at", auto_now=True)

    photo_400x400 = ImageSpecField(
        source="photo",
        processors=[SmartResize(400, 400)],
        format="PNG",
    )

    class Meta:
        verbose_name = "staff profile"
        verbose_name_plural = "staff profiles"

    def __str__(self):
        return self.position

    def __repr__(self):
        return "<StaffProfile id={} user_id={} position={}>".format(
            self.pk, self.user_id, self.position)
Example #30
0
class CostImage(SortableModel):
    cost = models.ForeignKey(to=Cost, verbose_name=u'Стоимость')
    image = models.ImageField(verbose_name=u'Изображение', upload_to='cost/')
    image_resize = ImageSpecField(
        [SmartResize(*settings.COST_IMAGE_SIZE)], source='image', format='JPEG', options={'quality': 94}
    )

    class Meta:
        verbose_name = u'Изображение'
        verbose_name_plural = u'Изображения'
        app_label = 'landing'
        ordering = ('order', )

    def __unicode__(self):
        return u'Изображение #%s' % self.id

    def pic(self):
        if self.image:
            return '<img src="%s" width="120"/>' % self.image_resize.url
        else:
            return '----'
    pic.short_description = u"Миниатюра"
    pic.allow_tags = True