Exemple #1
0
class Image(models.Model):
    image_field = ImageCropField(upload_to="image/")
    cropping = ImageRatioField("image_field", "120x100", allow_fullsize=True)
    cropping_free = ImageRatioField("image_field",
                                    "300x230",
                                    free_crop=True,
                                    size_warning=True)

    class Meta:
        app_label = "example"

    def get_cropping_as_list(self):
        if self.cropping:
            return list(map(int, self.cropping.split(",")))
class Image(models.Model):
    image_field = ImageCropField(upload_to='image/')
    cropping = ImageRatioField('image_field', '120x100', allow_fullsize=True)
    cropping_free = ImageRatioField('image_field',
                                    '300x230',
                                    free_crop=True,
                                    size_warning=True)

    class Meta:
        app_label = 'example'

    def get_cropping_as_list(self):
        if self.cropping:
            return list(map(int, self.cropping.split(',')))
Exemple #3
0
class UserProfile(User):
    publicname = models.CharField(default='', max_length=250)
    phone = models.CharField(default='', max_length=250)
    photo_user = models.ImageField(upload_to='photo_user',
                                   null=True,
                                   blank=True)
    photo_car = models.ImageField(upload_to='photo_car', null=True, blank=True)
    cropping_user = ImageRatioField('photo_user', '150x150')
    cropping_car = ImageRatioField('photo_car', '150x150')

    @property
    def image_user_tag(self):
        return mark_safe('<img src="%s" />' % self.photo_user.url)

    @property
    def get_small_image_user(self):
        return mark_safe('<img src="%s" />' % self.get_small_image_user_url)

    @property
    def get_small_image_user_url(self):
        try:
            return BACKEND_URL + get_thumbnailer(
                self.photo_user).get_thumbnail({
                    'size': (100, 100),
                    'box': self.cropping_user,
                    'crop': 'smart',
                }).url
        except:
            return BACKEND_URL + 'noimage.png'

    @property
    def image_car_tag(self):
        return mark_safe('<img src="%s" />' % self.photo_car.url)

    @property
    def get_small_image_car(self):
        return mark_safe('<img src="%s" />' % self.get_small_image_car_url)

    @property
    def get_small_image_car_url(self):
        try:
            return BACKEND_URL + get_thumbnailer(self.photo_car).get_thumbnail(
                {
                    'size': (100, 100),
                    'box': self.cropping_car,
                    'crop': 'smart',
                }).url
        except:
            return BACKEND_URL + 'noimage.png'
Exemple #4
0
class Product(models.Model):
    name = models.CharField(max_length=250, default='')
    image = ImageCropField(upload_to='product', null=True, blank=True)
    category = models.ForeignKey(Category, on_delete=models.SET_NULL, null=True, blank=True)
    subcategory = models.ForeignKey(SubCategory, on_delete=models.SET_NULL, null=True, blank=True)
    cropping = ImageRatioField('image', '100x100')

    @property
    def image_tag(self):
        try:
            return mark_safe('<img src="%s" />' % self.image.url)
        except:
            return 'None'

    @property
    def get_small_image(self):
        return mark_safe('<img src="%s" />' % self.get_small_image_url)

    @property
    def get_small_image_url(self):
        return BASE_URL + get_thumbnailer(self.image).get_thumbnail({
            'size': (100, 100),
            'box': self.cropping,
            'crop': 'smart',
        }).url

    def __str__(self):
        return '%s (%s)' % (self.name, self.category)

    class Meta:
        verbose_name = 'Product'
        verbose_name_plural = 'Products'
Exemple #5
0
class WithPicture(models.Model):
    """
    Abstract model to be mixed in to models requiring a single image.
    """

    picture = models.ImageField(
        upload_to="uploads/news_pictures",
        null=True,
        blank=True,
        verbose_name="Bilde",
        help_text=("Bilder som er større enn 770x300 px ser best ut. "
                   "Du kan beskjære bildet etter opplasting."),
    )

    cropping = ImageRatioField("picture",
                               "770x300",
                               allow_fullsize=False,
                               verbose_name="Beskjæring")

    class Meta:
        abstract = True

    def get_picture_url(self):
        """Return the absolute url of the main picture"""
        domain = Site.objects.get_current().domain
        media_url = settings.MEDIA_URL
        filename = self.picture.name
        return f"http://{domain}{media_url}{filename}"
Exemple #6
0
class Quiz(models.Model):
    """
     Master Model which holds all the components. Quiz classes store
     publishing information, basic details and relationships with
     question objects.
    """
    headline = models.CharField('Headline', max_length=255)
    blurb = models.TextField('Quiz Description', null=True, blank=True)
    published = models.BooleanField('Published')
    pub_date = models.DateTimeField('Publish Date/Time')
    questions = models.ManyToManyField('Question', null=True, blank=True)
    quiz_photo = ImageCropField('Art', upload_to=uploadQuizzoPhoto, null=True, blank=True)
    cropping = ImageRatioField('quiz_photo', '300x400')
    slug = models.SlugField('Slug')

    class Meta:
        ordering = ['-pub_date']
        verbose_name_plural = 'Quizzes'
        get_latest_by = 'pub_date'

    def is_published(self):
        return self.published

    def __unicode__(self):
        return self.headline

    def get_absolute_url(self):
        if self.published == True:
            return "/webapps/quiz/%s/%s" % (str(self.id), self.slug)
Exemple #7
0
class UserProfile(User):
    name = models.CharField(max_length=250, default='')
    phone = models.CharField(max_length=250, default='')
    rating = models.IntegerField(default=0)
    image = ImageCropField(blank=True, upload_to='user_photo')
    cropping = ImageRatioField('image', '60x60')

    @property
    def get_small_image(self):
        return mark_safe('<img src="%s" />' % self.get_small_image_url)

    @property
    def get_small_image_url(self):
        try:
            return BACKEND_URL + get_thumbnailer(self.image).get_thumbnail(
                {
                    'size': (60, 60),
                    'box': self.cropping,
                    'crop': 'smart',
                }).url
        except:
            return BACKEND_URL + 'noimage.png'

    def __str__(self):
        return self.name

    class Meta:
        verbose_name = 'UserProfile'
        verbose_name_plural = 'UserProfile'
Exemple #8
0
class Gallery(models.Model):
    title = models.CharField(max_length=250, null=True, blank=True)
    image = ImageCropField(blank=True, null=True, upload_to='uploaded_images')
    cropping = ImageRatioField('image', '150x150')

    @property
    def get_small_img(self):
        url = get_thumbnailer(self.image).get_thumbnail({
            'size': (231, 231),
            'box': self.cropping,
            'crop': True,
            'detail': True,
        }).url
        return url

    def __str__(self):
        thumbnail_url = get_thumbnailer(self.image).get_thumbnail({
            'size': (150, 150),
            'box':
            self.cropping,
            'crop':
            True,
            'detail':
            True,
        }).url
        return mark_safe('<img width="100" src="%s" />' % thumbnail_url)
Exemple #9
0
class Product(models.Model):
    title = models.CharField(max_length=120)
    slug = models.SlugField(blank=True, unique=True)
    description = models.TextField()
    category = models.ForeignKey(Category,
                                 on_delete=models.SET_NULL,
                                 null=True,
                                 blank=True)
    subcategory = ChainedForeignKey(Subcategory,
                                    chained_field="category",
                                    chained_model_field="category",
                                    show_all=False,
                                    auto_choose=True,
                                    sort=True,
                                    null=True,
                                    blank=True,
                                    on_delete=models.SET_NULL)
    price = models.PositiveIntegerField(validators=[MinValueValidator(0)])
    image = models.ImageField(upload_to=upload_image_path,
                              null=True,
                              blank=True)
    cropping = ImageRatioField('image', '640x640')
    active = models.BooleanField(default=True)
    inventory = models.PositiveIntegerField(validators=[MinValueValidator(0)])
    size = models.CharField(max_length=30)
    weight = models.CharField(max_length=30)
    color = models.CharField(max_length=30)
    odor = models.CharField(max_length=50)

    def clean_inventory(self):
        if self.inventory < 0:
            raise ValidationError(
                'Draft entries may not have a publication date.')
        return

    objects = ProductManager()  # Product.objects.(something)

    def get_absolute_url(self):
        #return "/products/{slug}/".format(slug=self.slug)
        return reverse("products:detail",
                       kwargs={"slug": self.slug})  # app_name:name on urls.py

    def add_to_cart(self):
        return "{0}?item={1}&qty=1".format(reverse("carts:cart"),
                                           self.id)  # string manipulation

    def remove_from_cart(self, instance):
        instance.cart.update_subtotal()
        return "{0}?item={1}&qty=1&delete=True".format(
            reverse("carts:cart"), self.id)  # string manipulation

    def __str__(self):
        return self.title

    def __unicode__(self):
        return self.title
Exemple #10
0
class Post(models.Model):
    title = models.CharField(_('Title'), max_length=30, blank=True)
    slug = AutoSlugField(populate_from=['title'],
                         unique=True,
                         allow_unicode=True,
                         slugify_function=slugify_function)
    image = models.ImageField(_('Image'), upload_to='uploaded_images')
    # size is "width x height"
    cropping = ImageRatioField('image', '900 x 750', size_warning=True)
    caption = models.TextField(_('Caption'), max_length=1024, blank=True)
    location = models.CharField(_('Location'), blank=True, max_length=250)
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)
    STATUS_CHOICES = (
        ('a', _('Archive')),  # Archive
        ('p', _('Publish')),  # Publish
    )
    status = models.CharField(_('Publish status'),
                              max_length=2,
                              choices=STATUS_CHOICES,
                              blank=True,
                              default='p')
    author = models.ForeignKey(settings.AUTH_USER_MODEL,
                               on_delete=models.CASCADE,
                               related_name='posts',
                               null=True)
    category = models.ManyToManyField(Category,
                                      verbose_name=_('Category'),
                                      related_name='posts',
                                      blank=True,
                                      null=True)
    hits = models.ManyToManyField(IPAddress,
                                  through='PostHit',
                                  blank=True,
                                  related_name='hits',
                                  verbose_name='views')

    def img_tag(self):
        return format_html(
            "<img width=100 height=75 style='border-radius : 5px;' src ='{}'> "
            .format(self.image.url))

    img_tag.short_description = 'Image'

    def thumbnail_url(self):
        thumbnail_url = get_backend().get_thumbnail_url(
            self.image, {
                'size': (900, 750),
                'box': self.cropping,
                'crop': True,
                'detail': True,
            })
        return thumbnail_url

    def __str__(self):
        return self.title
Exemple #11
0
class ImageBlock(Block):
	image = ImageCropField(upload_to='uploads/images/%Y/%m')
	caption = models.CharField(max_length=255, blank=True)

	use_thumbnail = models.BooleanField(help_text='Crop using the thumbnail dimensions specified below, or simply crop the uploaded image.')
	thumbnail_dimensions = models.CharField(max_length=255, default=settings.IMAGE_CROPPING_SIZE, help_text='Maximum dimensions for cropped image.', blank=True)
	thumbnail = ImageRatioField('image', '0x0') # 0x0 allows users to freely transform thumbnail.

	def __unicode__(self):
		return self.image.name
Exemple #12
0
class User(AbstractBaseUser):
    id = models.AutoField(primary_key=True, unique=True)
    username = models.CharField(max_length=50, unique=True, db_index=True)
    email = models.EmailField(max_length=254, unique=True)
    name = models.CharField(max_length=50, db_index=True, unique=True)
    image = ImageCropField(upload_to='photos/',
                           default=os.path.join('photos',
                                                '001.jpg').replace('\\', '/'))
    cropping = ImageRatioField('image', '200x200', allow_fullsize=True)
    describe = models.CharField(max_length=254, db_index=True)
    money = models.IntegerField(default=100)
    is_active = models.BooleanField(default=True)
    is_admin = models.BooleanField(default=False)
    # Permissions
    can_comment = models.BooleanField(default=True)
    can_upload = models.BooleanField(default=True)
    can_bullet = models.BooleanField(default=True)

    follow_users = models.ManyToManyField("User",
                                          related_name="following_users")
    like_videos = models.ManyToManyField("Video", related_name="like_videos")
    collection_videos = models.ManyToManyField(
        "Video", related_name="collection_videos")

    objects = UserManager()

    USERNAME_FIELD = 'username'
    REQUIRED_FIELDS = ['email']

    def get_full_name(self):
        return self.name

    def get_short_name(self):
        return self.name

    @property
    def is_staff(self):
        return self.is_admin

    def __str__(self):
        return self.username

    def has_perm(self, perm, obj=None):
        "Does the user have a specific permission?"
        # Simplest possible answer: Yes, always
        return True

    def has_module_perms(self, app_label):
        "Does the user have permissions to view the app `app_label`?"
        # Simplest possible answer: Yes, always
        return True

    def get_absolute_url(self):
        return '/personal/%u' % self.pk
Exemple #13
0
class QSICPic(models.Model):
    caption = models.CharField(max_length=128, blank=True)
    photo = models.ImageField(upload_to='qsicpics/', null=True, blank=True)
    banner_crop = ImageRatioField('photo', '960x300', size_warning=True)
    event = models.ForeignKey('events.Event', null=True, blank=True)
    performance = models.ForeignKey('events.Performance',
                                    null=True,
                                    blank=True)
    group = models.ForeignKey('groups.Group', null=True, blank=True)
    performer = models.ForeignKey('performers.Performer',
                                  null=True,
                                  blank=True)
Exemple #14
0
class Entry(ModelWithSlug):
    STATUS_OPTIONS = (
        (0, 'Draft'),
        (1, 'Published'),
    )
    VISIBILITY_OPTIONS = (
        (0, 'Public'),
        (1, 'Private'),
    )

    title = models.CharField(max_length=100)
    slug = models.SlugField(max_length=255)
    publish_date = models.DateTimeField(auto_now_add=True)
    status = models.IntegerField(max_length=1,
                                 choices=STATUS_OPTIONS,
                                 default=0)
    visibility = models.IntegerField(max_length=1,
                                     choices=VISIBILITY_OPTIONS,
                                     default=0)

    body = models.TextField()
    excerpt = models.TextField(
        blank=True,
        help_text='A short introduction for the entry. If not supplied, \
													the first paragraph of the body will be used.')

    category = models.ForeignKey('Category')
    tags = models.ManyToManyField('Tag', blank=True)

    user = models.ForeignKey(User)

    image = ImageCropField(upload_to='i/uploads/%Y/%m')
    cropping = ImageRatioField('image', settings.IMAGE_CROPPING_SIZE)
    caption = models.CharField(max_length=255, blank=True)

    objects = models.Manager()
    published_objects = PublishedManager()

    class Meta:
        verbose_name_plural = "Entries"
        ordering = ['-publish_date']

    def __unicode__(self):
        return self.title

    @models.permalink
    def get_absolute_url(self):
        return ('blog.views.entry', (), {'slug': self.slug})

    def save(self, **kwargs):
        unique_slugify(self, self.title)
        super(Entry, self).save()
Exemple #15
0
class UserMedia(models.Model):
    TYPE_MEDIA = (('photo', _('Photo')), ('video', _('Video')))

    ORIENTATION = (('land', _('Landscape')), ('port', _('Portrait')))

    ROLE_MEDIA = (('public', _('Public')), ('private', _('Private')))

    type_media = models.CharField(verbose_name=_('Type of media'),
                                  choices=TYPE_MEDIA,
                                  default='photo',
                                  max_length=5)

    role_media = models.CharField(verbose_name=_('Role of media'),
                                  choices=ROLE_MEDIA,
                                  default='public',
                                  max_length=10)

    orient = models.CharField(verbose_name=_('Orientation'),
                              choices=ORIENTATION,
                              default='port',
                              max_length=5)

    user = models.ForeignKey(UserProfile, on_delete=models.CASCADE)
    is_main = models.BooleanField(default=False)
    is_approved = models.BooleanField(default=False)
    is_deleted = models.BooleanField(default=False)
    is_published = models.BooleanField(default=False)
    title = models.CharField(max_length=250)
    video = models.FileField(blank=True, upload_to='user_video')
    image = ImageCropField(blank=True, upload_to='user_photo')
    cropping = ImageRatioField('image', '80x80')

    @property
    def image_tag(self):
        return mark_safe('<img width="150" src="%s" />' % self.image.url)

    @property
    def get_small_image_tag(self):
        return mark_safe('<img src="%s" />' % self.get_small_image_url)

    @property
    def get_small_image_url(self):
        try:
            return BACKEND_URL + get_thumbnailer(self.image).get_thumbnail(
                {
                    'size': (80, 80),
                    'box': self.cropping,
                    'crop': 'smart',
                }).url
        except:
            return BACKEND_URL + 'noimage.png'
Exemple #16
0
class HomeImage(models.Model):
    image = models.ForeignKey(Image)
    image_field = ImageCropField(blank=True, null=True, upload_to='home_slide/')
    active		= 	models.BooleanField(default=0)
    cropping = ImageRatioField('image_field', '625x350', size_warning=True)
    croppedImage = ImageField(blank=True, null=True, upload_to='home_slide/')

    def __unicode__(self):
        return self.image.collection.artist.__unicode__()
    
    def save(self, *args, **kwargs):
        # Get file name from image
        strImagePath = self.image.photo.name
        strImageName = strImagePath.split('/')[3]
        strUploadTo = 'home_slide/'
        strExtention = '.300x300_q85_detail.jpg'
        
        # Set image field path
        strDesImage = strUploadTo + strImageName
        self.image_field = strDesImage
    
        if(self.id is not None):
            homeImage = HomeImage.objects.get(pk=self.id)
        else:
            homeImage = None
        
        if(homeImage is None or homeImage.image != self.image):
            # Copy file into image field path
            im = PImage.open(settings.MEDIA_ROOT + strImagePath)
            im.save(settings.MEDIA_ROOT + strDesImage)
            
            # Copy image into image field path with extension for Cropping field
            exIm = PImage.open(settings.MEDIA_ROOT + strImagePath)
            exIm.save(settings.MEDIA_ROOT + strDesImage + strExtention)
            
        if(self.cropping != ''):
            # Crop image
            cropImage = PImage.open(settings.MEDIA_ROOT + strImagePath)
            cropP = self.cropping.split(',')
            box = (int(cropP[0]), int(cropP[1]), int(cropP[2]), int(cropP[3]))
            croppedImageName = strUploadTo + 'slide_' + str(self.image.id) + '.jpg'
            self.croppedImage = croppedImageName
            cropImage.crop(box).save(settings.MEDIA_ROOT + croppedImageName)
            
            # Resize cropped image
            size = 625,350
            im = PImage.open(settings.MEDIA_ROOT + croppedImageName)
            im = im.resize(size, PImage.ANTIALIAS)
            im.save(settings.MEDIA_ROOT + croppedImageName)
        
        super(HomeImage, self).save(*args, **kwargs)
Exemple #17
0
class Maket(models.Model):
    title = models.CharField(verbose_name='Заголовок', max_length=250)
    image = ImageCropField(upload_to='files')
    cropping = ImageRatioField('image', '150x150')

    @property
    def small_image_url(self):
        try:
            return get_thumbnailer(self.image).get_thumbnail({
                'size': (150, 150),
                'box': self.cropping,
                'crop': 'smart',
            }).url
        except Exception as e:
            print(e)
            return SERVER_NAME + 'static/noimage.png'
Exemple #18
0
class Maket(models.Model):
    title = models.CharField(verbose_name=_('Title'), max_length=250)
    image = ImageCropField(upload_to='files')
    cropping = ImageRatioField('image', '150x150')
    project = models.ForeignKey('project.Project', on_delete=models.CASCADE, default=1)

    @property
    def small_image_url(self):
        try:
            return get_thumbnailer(self.image).get_thumbnail({
                'size': (150, 150),
                'box': self.cropping,
                'crop': 'smart',
            }).url
        except Exception as e:
            print(e)
            return SERVER_NAME + 'static/noimage.png'
Exemple #19
0
class File(models.Model):
    title = models.CharField(verbose_name=_('Title'), max_length=250, blank=True, null=True)
    image = ImageCropField(upload_to='files')
    task = models.ForeignKey(
        Task, verbose_name=_("Task"), on_delete=models.CASCADE)
    cropping = ImageRatioField('image', '80x80')

    @property
    def small_image_url(self):
        try:
            return get_thumbnailer(self.image).get_thumbnail({
                'size': (80, 80),
                'box': self.cropping,
                'crop': 'smart',
            }).url
        except Exception as e:
            return SERVER_NAME + 'static/noimage.png'
Exemple #20
0
class Project(models.Model):
    title = models.CharField(verbose_name='Название',
                             max_length=160,
                             unique=True)
    name = models.CharField(verbose_name='Название (лат)',
                            max_length=160,
                            unique=True)
    desc = models.TextField(verbose_name='Описание')
    image = ImageCropField(upload_to='files')
    cropping = ImageRatioField('image', '150x150')
    git = models.CharField(verbose_name='git репозиторий',
                           max_length=250,
                           unique=True)
    git_url = models.CharField(verbose_name='url git репозитория',
                               max_length=250,
                               default='')
    release_url = models.CharField(verbose_name='url релизной версии',
                                   max_length=250,
                                   default='')
    media_path = models.CharField(verbose_name='Путь к медиа',
                                  max_length=250,
                                  default='')
    venv_path = models.CharField(verbose_name='Путь к ВО',
                                 max_length=250,
                                 default='',
                                 null=True,
                                 blank=True)

    def __str__(self):
        return self.title

    @property
    def small_image_url(self):
        try:
            return get_thumbnailer(self.image).get_thumbnail({
                'size': (80, 80),
                'box': self.cropping,
                'crop': 'smart',
            }).url
        except Exception as e:
            return '/static/noimage.png'

    @property
    def small_image_tag(self):
        return mark_safe(f'<img src="{self.small_image_url}">')
Exemple #21
0
class Product(models.Model):
    name = models.CharField(max_length=250, default='')
    image = ImageCropField(upload_to='product', null=True, blank=True)
    cropping = ImageRatioField(
        'image', '100x100')  # поле для хранения размера обрезки изображения
    category = models.ForeignKey(Category,
                                 on_delete=models.SET_NULL,
                                 null=True,
                                 blank=True)
    subcategory = models.ForeignKey(SubCategory,
                                    on_delete=models.SET_NULL,
                                    null=True,
                                    blank=True)

    @property
    def get_small_image(self):
        return mark_safe('<img src="%s" />' % self.get_small_image_url)

    @property
    def get_small_image_url(self):
        try:
            return BACKEND_URL + get_thumbnailer(self.image).get_thumbnail(
                {
                    'size': (100, 100),
                    'box': self.cropping,
                    'crop': 'smart',
                }).url
        except:
            return BAKEND_URL + "Noimage.png"

    def __str__(self):
        return '%s (%s)' % (self.name, self.category)

    @property
    def image_tag(self):
        try:
            return mark_safe('<img src="%s" />' % self.image.url)
        except:
            return 'None'

    class Meta:
        ordering = ['category']
Exemple #22
0
class Profile(models.Model):
    user = models.OneToOneField(BaseUser)

    full_name = models.CharField(blank=True, max_length=255)
    description = models.TextField(blank=True, null=True)

    social_accounts = JSONField(default=json_field_default,
                                blank=True,
                                null=True)

    works_at = models.CharField(blank=True, null=True, max_length=255)
    studies_at = models.CharField(blank=True, null=True, max_length=255)

    avatar = ImageCropField(blank=True, null=True)
    full_image = ImageCropField(upload_to='avatars/', blank=True, null=True)
    cropping = ImageRatioField('full_image', '300x300')
    skype = models.CharField(blank=True, null=True, max_length=255)

    def get_gh_profile_url(self):
        return self.social_accounts.get('GitHub')
Exemple #23
0
class User(AbstractBaseUser):
    id = models.AutoField(primary_key=True, unique=True)
    username = models.CharField(max_length=50, unique=True, db_index=True)
    email = models.EmailField(max_length=254, unique=True)
    name = models.CharField(max_length=50, db_index=True, unique=True)
    image = ImageCropField(
        upload_to='avatar/',
        default=os.path.join('', 'default.jpg').replace('\\', '/')
    )
    cropping = ImageRatioField('image', '200x200', allow_fullsize=True)
    is_active = models.BooleanField(default=False)
    is_admin = models.BooleanField(default=False)

    objects = UserManager()

    USERNAME_FIELD = 'username'
    REQUIRED_FIELDS = ['email']

    def get_full_name(self):
        return self.name

    def get_short_name(self):
        return self.name

    @property
    def is_staff(self):
        return self.is_admin

    def __str__(self):
        return self.username

    def has_perm(self, perm, obj=None):
        "Does the user have a specific permission?"
        # Simplest possible answer: Yes, always
        return True

    def has_module_perms(self, app_label):
        "Does the user have permissions to view the app `app_label`?"
        # Simplest possible answer: Yes, always
        return True
Exemple #24
0
class Image(Orderable):
    gallery = models.ForeignKey(Gallery, related_name="images")
    title = models.CharField(_('title'), max_length=100, blank=True)
    caption = models.TextField(_('caption'), blank=True)
    image = ImageCropField(blank=True,
                           null=True,
                           upload_to='uploads/galleries/images/')
    cropping = ImageRatioField(
        'image', IMAGE_CROPPING_RATIO)  # size is "width x height"

    class Meta(Orderable.Meta):
        verbose_name = _('image')
        verbose_name_plural = _('images')

    def __unicode__(self):
        return '%s' % (self.title or self.id)

    @property
    def thumbnail(self):
        return thumbnail(self.image, self.cropping)

    @property
    def croppable(self):
        return croppable(self.image)

    def serialize(self):
        context = {
            'id': self.id,
            'gallery': self.gallery.id,
            'title': self.title,
            'caption': self.caption,
            'image': self.image,
            'cropping': self.cropping,
            'thumbnail': self.thumbnail,
            'croppable': self.croppable,
            'org_width': self.image.width,
            'org_height': self.image.height,
            'order': self.sort_order
        }
        return context
Exemple #25
0
class Professor(EscolaMixin):

    bibliografia = models.TextField(blank=True,
                                    default='',
                                    verbose_name=_('Bibliografia'))

    avatar = ImageCropField(upload_to="avatars/",
                            verbose_name=_('Avatar'),
                            validators=[avatar_validation],
                            null=True,
                            blank=True)

    cropping = ImageRatioField(
        'avatar',
        '128x128',
        verbose_name=_('Seleção (Enquadramento)'),
        help_text=_('A configuração do Avatar '
                    'é possível após a atualização da fotografia.'))

    class Meta:
        verbose_name = _('Professor')
        verbose_name_plural = _('Professores')
Exemple #26
0
class Category(models.Model):
    image = models.ImageField(_('Image'), upload_to='category_images')
    # size is "width x height"
    cropping = ImageRatioField('image', '900 x 874', size_warning=True)
    title = models.CharField(_('Title'), max_length=30)
    slug = AutoSlugField(populate_from=['title'],
                         unique=True,
                         allow_unicode=True,
                         slugify_function=slugify_function)

    def thumbnail_url(self):
        thumbnail_url = get_backend().get_thumbnail_url(
            self.image, {
                'size': (900, 874),
                'box': self.cropping,
                'crop': True,
                'detail': True,
            })
        return thumbnail_url

    def __str__(self):
        return self.title
Exemple #27
0
class ProfilePhoto(models.Model):
    def get_upload_path(self, filename):
        try:
            ext = filename.rsplit('.', -1)[-1]
        except:
            ext = 'jpg'
        filename = "%s.%s" % (uuid.uuid4(), ext)
        profile_photo_url = os.path.join("profile_photo", "amityadav",
                                         filename)
        return profile_photo_url

    user = models.ForeignKey(User, null=True)
    profile_photo = models.ImageField(max_length=2000,
                                      upload_to=get_upload_path)
    cropping = ImageRatioField('profile_photo', '220x196')
    uploaded_on = models.DateTimeField(null=True)
    is_set = models.BooleanField(default=False)
    key = models.CharField(max_length=90)

    profile_photo_100x50 = ImageSpecField(source='profile_photo',
                                          processors=[ResizeToFill(100, 50)],
                                          format='JPEG',
                                          options={'quality': 90})

    @property
    def key_generate(self):
        """returns a string based unique key with length 80 chars"""
        while 1:
            key = str(random.getrandbits(256))
            try:
                ProfilePhoto.objects.get(key=key)
            except:
                return key

    class Meta:
        app_label = 'users'
Exemple #28
0
class FrontPageNews(models.Model):
    """
    Things that turn up on the frontpage

    Each frontpage entity links to different types of content using a generic relation.

    It is assumed that the related object implements the fields:
    headline, lead_paragraph, picture and cropping, just as NewsArticle.
    This is not ideal, and it might change in the future, or it might not.
    """

    # Fields for referencing objects of different contenttype
    # See https://docs.djangoproject.com/en/1.11/ref/contrib/contenttypes/#generic-relations
    object_id = models.PositiveIntegerField(blank=True, null=True)
    content_type = models.ForeignKey(ContentType, null=True, on_delete=models.CASCADE)
    content_object = GenericForeignKey("content_type", "object_id")

    # Fields for sorting and prioritizing on the frontpage
    created_date = models.DateTimeField(
        auto_now_add=True,
        null=True,
        verbose_name="Dato laget",
        help_text="Dette feltet gjør egentlig ingenting. Brukes kun for å se når nyheten ble laget.",
    )
    bump_time = models.DateTimeField(
        default=timezone.now,
        blank=False,
        verbose_name="Sorteringstid",
        help_text=(
            "Tiden nyheten ble bumpet opp til toppen av forsiden. "
            "Brukes som felt for å sortere nyhetene."
        ),
    )
    visible = models.BooleanField(
        default=True,
        verbose_name="Er synlig",
        help_text="Sett dette feltet til usann for å skjule nyheten fra forsiden",
    )
    sticky = models.BooleanField(
        default=False,
        verbose_name="Klebrig",
        help_text="Blir værende på toppen. Dvs. sorters foran alle andre nyheter.",
    )

    # Fields to override the content from the content_object
    title_override = models.CharField(verbose_name="tittel", max_length=100, blank=True)
    text_override = models.TextField(verbose_name="tekst", blank=True)
    picture_override = models.ImageField(
        upload_to="uploads/frontpageoverride",
        null=True,
        blank=True,
        verbose_name="Bilde",
        help_text="Bilder som er større enn 770x300 px ser best ut. "
        "Du kan beskjære bildet etter opplasting.",
    )
    cropping_override = ImageRatioField(
        "picture_override", "770x300", allow_fullsize=False, verbose_name="Beskjæring"
    )

    class Meta:
        verbose_name = "Forsidenyhet"
        verbose_name_plural = "Forsidenyheter"
        ordering = (
            "-sticky",
            "-bump_time",
        )

    def __str__(self):
        return self.headline

    @property
    def obj(self):
        """
        In case the content_object does not exist, return a dummy object to not crash the site.
        """
        return self.content_object or DummyContentObject()

    def get_absolute_url(self):
        """Get the url of the related object"""
        return self.obj.get_absolute_url()

    @property
    def headline(self):
        """Get overridden headline or the object's headline"""
        return self.title_override or self.obj.headline

    @property
    def lead_paragraph(self):
        """Get overridden lead paragraph or the object's lead paragraph"""
        return self.text_override or self.obj.lead_paragraph

    @property
    def picture(self):
        """Get overridden picture or the objcet's picture"""
        return self.picture_override or self.obj.picture

    @property
    def cropping(self):
        """Get cropping corresponding to the picture"""
        return self.cropping_override or self.obj.cropping

    def bump(self):
        """Make the news item climb to the top of list"""
        self.bump_time = timezone.now()
        self.save(update_fields=["bump_time"])
Exemple #29
0
class Parlamentar(models.Model):
    FEMININO = 'F'
    MASCULINO = 'M'
    SEXO_CHOICE = ((FEMININO, _('Feminino')), (MASCULINO, _('Masculino')))

    nivel_instrucao = models.ForeignKey(NivelInstrucao,
                                        blank=True,
                                        null=True,
                                        on_delete=models.PROTECT,
                                        verbose_name=_('Nível Instrução'))
    situacao_militar = models.ForeignKey(SituacaoMilitar,
                                         blank=True,
                                         null=True,
                                         on_delete=models.PROTECT,
                                         verbose_name=_('Situação Militar'))
    nome_completo = models.CharField(max_length=50,
                                     verbose_name=_('Nome Completo'))
    nome_parlamentar = models.CharField(max_length=50,
                                        verbose_name=_('Nome Parlamentar'))
    sexo = models.CharField(max_length=1,
                            verbose_name=_('Sexo'),
                            choices=SEXO_CHOICE)
    data_nascimento = models.DateField(blank=True,
                                       null=True,
                                       verbose_name=_('Data Nascimento'))
    cpf = models.CharField(max_length=14, blank=True, verbose_name=_('C.P.F'))
    rg = models.CharField(max_length=15, blank=True, verbose_name=_('R.G.'))
    titulo_eleitor = models.CharField(max_length=15,
                                      blank=True,
                                      verbose_name=_('Título de Eleitor'))
    numero_gab_parlamentar = models.CharField(max_length=10,
                                              blank=True,
                                              verbose_name=_('Nº Gabinete'))
    telefone = models.CharField(max_length=50,
                                blank=True,
                                verbose_name=_('Telefone'))
    fax = models.CharField(max_length=50, blank=True, verbose_name=_('Fax'))
    endereco_residencia = models.CharField(
        max_length=100, blank=True, verbose_name=_('Endereço Residencial'))
    municipio_residencia = models.CharField(max_length=50,
                                            blank=True,
                                            verbose_name=_('Município'))
    uf_residencia = models.CharField(max_length=2,
                                     blank=True,
                                     choices=LISTA_DE_UFS,
                                     verbose_name=_('UF'))
    cep_residencia = models.CharField(max_length=9,
                                      blank=True,
                                      verbose_name=_('CEP'))
    telefone_residencia = models.CharField(
        max_length=50, blank=True, verbose_name=_('Telefone Residencial'))
    fax_residencia = models.CharField(max_length=50,
                                      blank=True,
                                      verbose_name=_('Fax Residencial'))
    endereco_web = models.URLField(max_length=100,
                                   blank=True,
                                   verbose_name=_('HomePage'))
    profissao = models.CharField(max_length=50,
                                 blank=True,
                                 verbose_name=_('Profissão'))
    email = models.EmailField(max_length=100,
                              blank=True,
                              verbose_name=_('E-mail'))
    locais_atuacao = models.CharField(max_length=100,
                                      blank=True,
                                      verbose_name=_('Locais de Atuação'))
    ativo = models.BooleanField(db_index=True,
                                default=False,
                                choices=YES_NO_CHOICES,
                                verbose_name=_('Ativo na Casa?'))
    biografia = models.TextField(blank=True, verbose_name=_('Biografia'))
    # XXX Esse atribuito foi colocado aqui para não atrapalhar a migração

    fotografia = ImageCropField(verbose_name=_('Fotografia'),
                                upload_to=foto_upload_path,
                                validators=[restringe_tipos_de_arquivo_img],
                                null=True,
                                blank=True)

    cropping = ImageRatioField(
        'fotografia',
        '128x128',
        verbose_name=_('Avatar'),
        size_warning=True,
        help_text=_('A configuração do Avatar '
                    'é possível após a atualização da fotografia.'))

    # campo conceitual de reversão genérica para o model Autor que dá a
    # o meio possível de localização de tipos de autores.
    autor = SaplGenericRelation(
        Autor,
        related_query_name='parlamentar_set',
        fields_search=(
            # na primeira posição dever ser campo simples sem __
            ('nome_completo', '__icontains'),
            ('nome_parlamentar', '__icontains'),
            ('filiacao__partido__sigla', '__icontains'),
        ))

    class Meta:
        verbose_name = _('Parlamentar')
        verbose_name_plural = _('Parlamentares')
        ordering = ['nome_parlamentar']

    def __str__(self):
        return self.nome_parlamentar

    @property
    def filiacao_atual(self):
        ultima_filiacao = self.filiacao_set.order_by('-data').first()
        if ultima_filiacao and not ultima_filiacao.data_desfiliacao:
            return ultima_filiacao.partido.sigla
        else:
            return _('Sem Partido')

    @property
    def avatar_html(self):
        return '<img class="avatar-parlamentar" src='\
            + self.fotografia.url + '>'if self.fotografia else ''

    def delete(self, using=None, keep_parents=False):
        if self.fotografia:
            self.fotografia.delete()

        return models.Model.delete(self,
                                   using=using,
                                   keep_parents=keep_parents)

    def save(self,
             force_insert=False,
             force_update=False,
             using=None,
             update_fields=None):

        if not self.pk and self.fotografia:
            fotografia = self.fotografia
            self.fotografia = None
            models.Model.save(self,
                              force_insert=force_insert,
                              force_update=force_update,
                              using=using,
                              update_fields=update_fields)
            self.fotografia = fotografia

        return models.Model.save(self,
                                 force_insert=force_insert,
                                 force_update=force_update,
                                 using=using,
                                 update_fields=update_fields)
Exemple #30
0
class BaseUser(AbstractBaseUser, PermissionsMixin):
    first_name = models.CharField(max_length=20)
    last_name = models.CharField(max_length=20)
    email = models.EmailField(unique=True)
    english_names = models.CharField(max_length=50, null=True, blank=True)
    is_active = models.BooleanField(default=False)
    is_staff = models.BooleanField(default=False)

    birth_place = models.ForeignKey(City, null=True, blank=True)

    github_account = models.URLField(null=True, blank=True)
    linkedin_account = models.URLField(null=True, blank=True)
    description = models.TextField(null=True, blank=True)
    twitter_account = models.URLField(null=True, blank=True)

    works_at = models.CharField(null=True, blank=True, max_length=110)
    studies_at = models.CharField(blank=True, null=True, max_length=110)

    avatar = ImageCropField(blank=True, null=True)
    full_image = ImageCropField(upload_to='avatars/', blank=True, null=True)
    cropping = ImageRatioField('full_image', '300x300')

    created_at = models.DateTimeField(auto_now_add=True, null=True)

    education_info = models.ManyToManyField(EducationPlace, through='EducationInfo', related_name='info')

    USERNAME_FIELD = 'email'

    objects = UserManager()

    def get_full_name(self):
        return self.email

    def get_short_name(self):
        return self.email

    def __str__(self):
        return self.email

    @property
    def full_name(self):
        return "{} {}".format(self.first_name, self.last_name)

    def get_competitor(self):
        try:
            return self.competitor
        except:
            return False

    def get_student(self):
        try:
            return self.student
        except:
            return False

    def get_teacher(self):
        try:
            return self.teacher
        except:
            return False

    def get_interviewer(self):
        try:
            return self.interviewer
        except:
            return False

    def get_english_names(self):
        return self.english_names