Exemplo n.º 1
0
class BookAuthor(models.Model):
    '''
    E-Management `BookAuthor` Model

    fields = ['id', 'first_name', 'middle_name', 'last_name', 'date_of_birth', 'died', 'aboutAuthor', 'genre']
    '''
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    first_name = models.CharField(verbose_name="First Name", max_length=100)
    middle_name = models.CharField(verbose_name="Middle Name", max_length=100)
    last_name = models.CharField(verbose_name="Last Name", max_length=100)
    date_of_birth = models.DateField(null=True)
    died = models.DateField(verbose_name='Died', null=True, blank=True)
    aboutAuthor = models.TextField(max_length=250)
    genre = models.ManyToManyField(
        Genre, verbose_name="Genre", help_text='Hold down “Control”, or “Command” on a Mac, to select more than one.')
    profile = models.FileField(
        upload_to=utils.pic_upload, verbose_name="Author Profile",
        default="user.jpg", blank=True,
        validators=[validators.FileExtensionValidator(
                allowed_extensions=validators.get_available_image_extensions(),
                message="Select valid Cover Image."), utils.profile_size
        ],
    )

    class Meta:
        ordering = ['date_of_birth']
        unique_together = ('first_name', 'last_name',)

    def __str__(self):
        return f"{self.first_name} {self.last_name}"
Exemplo n.º 2
0
def get_available_image_mimetypes():
    # Extensions from Pillow
    return list(
        set([
            mimetypes.types_map['.{0}'.format(ext)]
            for ext in get_available_image_extensions()
            if '.{0}'.format(ext) in mimetypes.types_map
        ]))
Exemplo n.º 3
0
    def parse(self, start_at=0, override=False, user=None):
        with zipfile.ZipFile(self.file) as zfh:
            total = len(zfh.infolist())
            for index, finfo in enumerate(zfh.infolist()):
                if index < start_at:
                    continue
                with zfh.open(finfo) as zipedfh:
                    try:
                        file_extension = os.path.splitext(zipedfh.name)[1][1:]
                        # image
                        if file_extension.lower(
                        ) in get_available_image_extensions():
                            # If quotas are enforced, assert that the user still has free disk storage
                            if not settings.DISABLE_QUOTAS and not user.has_free_disk_storage(
                            ):
                                raise DiskQuotaReachedError(
                                    _(f"You ran out of disk storage. {total - index} files were left to import (over {total - start_at})"
                                      ))
                            try:
                                part = DocumentPart.objects.filter(
                                    document=self.document,
                                    original_filename=zipedfh.name)[0]
                            except IndexError:
                                part = DocumentPart(
                                    document=self.document,
                                    original_filename=zipedfh.name)
                            part.image_file_size = 0
                            part.image.save(zipedfh.name,
                                            ContentFile(zipedfh.read()))
                            part.image_file_size = part.image.size
                            part.save()

                        # xml
                        elif file_extension in XML_EXTENSIONS:
                            parser = make_parser(self.document,
                                                 zipedfh,
                                                 name=self.name,
                                                 report=self.report)

                            for part in parser.parse(override=override,
                                                     user=user):
                                yield part
                    except IndexError:
                        # no file extension!?
                        pass
                    except ParseError as e:
                        # we let go to try other documents
                        msg = _(
                            "Parse error in {filename}: {error}, skipping it."
                        ).format(filename=self.file.name, error=e.args[0])
                        logger.warning(msg)
                        if self.report:
                            self.report.append(msg)
                        if user:
                            user.notify(msg,
                                        id="import:warning",
                                        level="warning")
Exemplo n.º 4
0
def with_svg_validator(value):
    """
    allows all PIL extensions and svg, if you want to add svgz here you will also need to configure
    THUMBNAIL_PRESERVE_EXTENSIONS setting
    Such a function is used as reference in fields ``validators=[with_svg_validator]
    :param value: value to validate
    :return: the validated value
    """
    return validators.FileExtensionValidator(allowed_extensions=validators.get_available_image_extensions() + ["svg"])(
        value
    )
Exemplo n.º 5
0
class AbstractUser(BaseAbstractUser):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    email = models.EmailField(_('email address'), unique=True)
    middle_name = models.CharField(
        verbose_name=_("Middle Name"),
        max_length=20,
        validators=[
            validators.RegexValidator(regex=r"^[A-Za-z ]+$", message=_("Enter Valid Middle Name."))],
        null=True,blank=True,
    )
    
    date_of_birth = models.DateField(
        verbose_name=_("Data of Birth"),
        null=True,blank=True,
        validators=[utils.age]
    )
    phone_number = models.CharField(verbose_name=_("Phone Number"),
                                    max_length=13,
                                    null=True,blank=True,
                                    validators=[validators.RegexValidator(
                                        regex=r"^[4-9]\d{9}$", message=_("Enter Valid Phone Number.")), ],
                                    help_text=_("Enter Your Number without <b>country code.</b>")
                                    )
    country = models.CharField(max_length=25, null=True, blank=True)
    state = models.CharField(max_length=50, null=True, blank=True)
    city = models.CharField(max_length=50, null=True, blank=True)
    pincode = models.CharField(verbose_name=_("Pincode"), max_length=6,
                               null=True,blank=True
                               )
    full_address = models.TextField(verbose_name=_("Full Address"),
                                    null=True,
                                    blank=True,
                                    max_length=50,
                                    )
    is_defaulter = models.BooleanField(default=False, help_text=_('User in defaulter list'))
    profile = models.FileField(upload_to=utils.pic_upload,
                               default='user.jpg', blank=True,null=True,
                               validators=[validators.FileExtensionValidator(
                                   allowed_extensions=validators.get_available_image_extensions(),
                                   message=_(
                                       "Select valid Cover Image.")
                               ), utils.profile_size
                               ],)

    def image_tag(self):
        return mark_safe('<img src="{}" width="200px" />'.format(escape(self.profile.url)))
    image_tag.short_description = 'USER IMAGE'
    image_tag.allow_tags = True
   
    class Meta(BaseAbstractUser.Meta):
        verbose_name = _('user')
        verbose_name_plural = _('users')
        abstract = True
Exemplo n.º 6
0
def validate_avatar_file_extension(value):

    validator = FileExtensionValidator(
        allowed_extensions=get_available_image_extensions())
    validation = None

    try:
        value.get('box', None)
        value = value['file']
        if value:
            validation = validator(value['file'])
    except:
        validation = validator(value)

    return validation
Exemplo n.º 7
0
class Book(models.Model):
    # ['id', 'name', 'genre', 'author', 'publish', 'publish_date', 'language', 'edition', 'cost', 'discription', ]
    id = models.UUIDField(verbose_name="Book ID",
                          primary_key=True, default=uuid.uuid4, editable=False)
    name = models.CharField(max_length=120, verbose_name="Name", unique=True)
    genre = models.ManyToManyField(
        Genre, verbose_name="Genre", help_text='Hold down “Control”, or “Command” on a Mac, to select more than one.')
    author = models.ForeignKey(
        BookAuthor, on_delete=models.CASCADE, verbose_name="Author Name")
    publish = models.ForeignKey('BookPublish', on_delete=models.CASCADE,
                                verbose_name="Publisher Name")
    publish_date = models.DateField(
        validators=[], verbose_name="Publish Date")
    date = models.DateTimeField(auto_now=True, verbose_name="Date")
    language = models.CharField(max_length=12, verbose_name="Language", choices=[
                                (None, "Select Language")] + global_settings.LANGUAGES)
    edition = models.IntegerField(verbose_name="Edition", choices=[
                                  (None, "Select Edition")] + data_list.BOOK_EDITION)
    cost = models.DecimalField(
        max_digits=8, decimal_places=2, verbose_name="Book Cost(per unit)")
    page = models.PositiveIntegerField(verbose_name="Total Page")
    description = models.TextField(verbose_name="Book Description")
    stock = models.PositiveIntegerField(verbose_name="Stock")
    today_stock = models.PositiveIntegerField(
        verbose_name="Current stock", null=True, blank=True)
    rating = models.DecimalField(
        max_digits=2, decimal_places=1, verbose_name="Rating")
    profile = models.FileField(
        upload_to=upload_to, verbose_name="Book cover",
        default="default.jpg", blank=True,
        validators=[validators.FileExtensionValidator(
                allowed_extensions=validators.get_available_image_extensions(),
                message="Select valid Cover Image.")
        ],
    )

    class Meta:
        ordering = ['name']
        permissions = [('is_defaulter', 'User in defaulter list')]

    def __str__(self):
        return self.name

    @property
    def get_update_url(self):
        return reverse_lazy('system:bookinventoryupdate', kwargs={
            'pk': self.pk
        })
Exemplo n.º 8
0
class UserPost(models.Model):
    title = models.CharField(
        _("Title"),
        max_length=250,
        help_text=_("the slug is auto genrated by the title."))
    body = RichTextField(config_name="my-custom-toolbar")
    user = models.ForeignKey(User, on_delete=models.SET_NULL, null=True)
    slug = models.SlugField(max_length=250,
                            unique=True,
                            null=True,
                            blank=True,
                            editable=False)
    vote = models.PositiveIntegerField(default=0, editable=False)
    updated_on = models.DateTimeField(auto_now=True)
    created_on = models.DateTimeField(auto_now_add=True, null=True)
    status = models.IntegerField(choices=STATUS, default=0)
    cover = models.FileField(
        upload_to=profile_name,
        verbose_name="Book cover",
        default="post/cover/image.png",
        blank=True,
        validators=[
            validators.FileExtensionValidator(
                allowed_extensions=validators.get_available_image_extensions(),
                message="Select valid Cover Image."), profile_size
        ],
    )

    def __str__(self):
        return self.title

    def save(self, *args, **kwargs):
        if not self.slug:
            self.slug = slugify(f"{self.title} by {self.user.get_full_name()}")
        return super().save(*args, **kwargs)

    def get_absolute_url(self):
        # Admin use only Lol :-)
        return reverse('userpost-detail', kwargs={'slug': self.slug})
Exemplo n.º 9
0
class AbstractUser(BaseAbstractUser):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    first_name = models.CharField(
        verbose_name=_("First Name"),
        max_length=50,
        validators=[
            validators.RegexValidator(regex=r"^[A-Za-z ]+$",
                                      message=_("Enter Valid Name."))
        ],
        null=True,
    )
    last_name = models.CharField(
        verbose_name=_("Last Name"),
        max_length=20,
        validators=[
            validators.RegexValidator(regex=r"^[A-Za-z]+$",
                                      message=_("Enter Valid Last Name."))
        ],
        null=True,
    )

    email = models.EmailField(
        verbose_name=_('email'),
        max_length=30,
        unique=True,
    )
    date_of_birth = models.DateField(verbose_name=_("Data of Birth"),
                                     null=True,
                                     validators=[age_18])
    phone_number = models.CharField(
        verbose_name=_("Phone Number"),
        max_length=13,
        null=True,
        validators=[
            validators.RegexValidator(regex=r"^[4-9]\d{9}$",
                                      message=_("Enter Valid Phone Number.")),
        ])
    state = models.CharField(
        verbose_name=_("State"),
        max_length=2,
        null=True,
        choices=[(None, _("Select State"))] + data_list.LIST_STATE,
    )
    city = models.CharField(verbose_name=_("City"),
                            max_length=20,
                            null=True,
                            validators=[
                                validators.RegexValidator(
                                    regex=r"^\w[A-Za-z ]+$",
                                    message=_("Enter Valid city."))
                            ])
    pincode = models.CharField(
        verbose_name=_("Pincode"),
        max_length=6,
        null=True,
    )
    full_address = models.TextField(
        verbose_name=_("Full Address"),
        null=True,
        max_length=50,
    )
    is_defaulter = models.BooleanField(
        _('defaulter'),
        default=False,
        help_text=_('User in defaulter list or not?'),
    )
    profile = models.FileField(
        upload_to=upload_to,
        default='default.jpg',
        blank=True,
        help_text=_('Only Image (png, jpe, jpg, jpeg) extensions'),
        validators=[
            validators.FileExtensionValidator(
                allowed_extensions=validators.get_available_image_extensions(),
                message=_("'%(extension)s' not valid Profile Image.")),
            profile_size
        ],
    )

    class Meta(BaseAbstractUser.Meta):
        verbose_name = _('user')
        verbose_name_plural = _('users')
        abstract = True

    @property
    def get_update_url(self):
        return reverse_lazy('account:update',
                            kwargs={'username': self.username})

    @property
    def prourl(self):
        if self.profile and hasattr(self.profile, 'url'):
            return self.profile.url
        else:
            return "https://picsum.photos/300"
Exemplo n.º 10
0
class Book(models.Model):
    bookid = models.CharField(max_length=20,
                              primary_key=True,
                              verbose_name="Book ID")
    name = models.CharField(max_length=120, verbose_name="Book Name")
    genre = models.ManyToManyField(Genre, verbose_name="Genre")
    author = models.ForeignKey(BookAuthor,
                               on_delete=models.CASCADE,
                               verbose_name="Author Name")
    publish = models.ForeignKey(BookPublish,
                                on_delete=models.CASCADE,
                                verbose_name="Publisher Name")
    publish_Date = models.DateField(auto_now=False,
                                    auto_now_add=True,
                                    verbose_name="Publish Date")
    language = models.CharField(max_length=12,
                                verbose_name="Language",
                                choices=[(None, "Select Language")] +
                                settings.LANGUAGES)
    edition = models.IntegerField(verbose_name="Edition",
                                  choices=[(None, "Select Edition")] +
                                  settings.BOOK_EDITION)
    cost = models.DecimalField(max_digits=8,
                               decimal_places=2,
                               verbose_name="Book Cost(per unit)")
    page = models.PositiveIntegerField(verbose_name="Total Page")
    description = models.TextField(verbose_name="Book Description")
    stock = models.PositiveIntegerField(verbose_name="Current Stock")
    today_stock = models.PositiveIntegerField(verbose_name="stock",
                                              editable=False)
    rating = models.DecimalField(max_digits=3,
                                 decimal_places=1,
                                 verbose_name="Rating")
    profile = models.FileField(
        upload_to=upload_to_book,
        verbose_name="Book cover",
        default="Book_cover/default.png",
        blank=True,
        validators=[
            validators.FileExtensionValidator(
                allowed_extensions=validators.get_available_image_extensions(),
                message="Select valid Cover.")
        ],
    )

    class Meta:
        ordering = ["name"]

    def save(self, *args, **kwargs):
        self.today_stock = self.stock - self.issue_set.all().count()
        super().save(self, *args, **kwargs)

    def delete(self, *args, **kwargs):
        self.profile.delete()
        super(Book, self).delete(*args, **kwargs)

    def __str__(self):
        return f"{self.bookid}, {self.name}"

    def display_genre(self):
        return ', '.join(genre.get_name_display()
                         for genre in self.genre.all())

    display_genre.short_description = 'Genre'

    def get_absolute_url(self):
        return f'/book/{str(self.bookid)}/{self.author.__str__()}/{self.publish.__str__()}/'

    @property
    def get_book_name(self):
        return f"{self.name.replace(' ','_')}"
Exemplo n.º 11
0
def validate_comprobante(value):
    ext = get_available_image_extensions()
    print(ext)
    ext.append("pdf")
    return FileExtensionValidator(allowed_extensions=ext)(value)
Exemplo n.º 12
0
class Book(models.Model):
    '''
    E-Management `BookAuthor` Model

    fields = [
        'id',
        'name',
        'genre',
        'author',
        'publish',
        'update_date',
        'date',
        'language',
        'edition',
        'cost',
        'page',
        'description',
        'stock',
        'in_stock',
        'today_stock',
        'rating',
        'profile',
        'slug',
    ]
    '''
    id = models.UUIDField(verbose_name="Book ID",
                          primary_key=True, default=uuid.uuid4, editable=False)
    name = models.CharField(max_length=120, verbose_name="Name", unique=True)
    genre = models.ManyToManyField(
        Genre, verbose_name="Genre", help_text='Hold down “Control”, or “Command” on a Mac, to select more than one.')
    author = models.ForeignKey(
        BookAuthor, on_delete=models.CASCADE, verbose_name="Author Name")
    publish = models.ForeignKey(BookPublish, on_delete=models.CASCADE,
                                verbose_name="Publisher Name")
    update_date = models.DateTimeField(auto_now=True, verbose_name="Last Update")
    date = models.DateTimeField(auto_now_add=True, verbose_name="Date")
    language = models.CharField(max_length=12, verbose_name="Language", choices=[
                                (None, "Select Language")] + global_settings.LANGUAGES)
    edition = models.IntegerField(verbose_name="Edition", choices=[
                                  (None, "Select Edition")] + data_list.BOOK_EDITION)
    cost = models.DecimalField(
        max_digits=8, decimal_places=2, verbose_name="Book Cost(per unit)")
    page = models.PositiveIntegerField(verbose_name="Total Page")
    description = models.TextField(verbose_name="Book Description")
    stock = models.PositiveIntegerField(verbose_name="Stock")
    in_stock = models.BooleanField(default=True, editable=False)
    today_stock = models.PositiveIntegerField(
        verbose_name="Current stock", editable=False)
    rating = models.DecimalField(
        max_digits=3, decimal_places=1, verbose_name="Rating", validators=[utils.validate_rating])
    profile = models.FileField(
        upload_to=utils.pic_upload, verbose_name="Book cover",
        default="elibrary.jpg", blank=True,
        validators=[validators.FileExtensionValidator(
                allowed_extensions=validators.get_available_image_extensions(),
                message="Select valid Cover Image."), utils.profile_size
        ],
    )
    slug = AutoSlugField(populate_from=['name', 'author'])

    class Meta:
        ordering = ['name']
        unique_together = ('name', 'author',)
        

    def __str__(self):
        return f"{self.name}"
    
    def image_tag(self):
        return mark_safe('<img src="{}" width="200px" />'.format(escape(self.profile.url)))
    image_tag.short_description = 'BOOK COVER'
    image_tag.allow_tags = True
Exemplo n.º 13
0
def validate_image_and_svg_file_extension(extension):
    allowed_extensions = get_available_image_extensions() + ['svg']
    return FileExtensionValidator(allowed_extensions=allowed_extensions)(extension)
Exemplo n.º 14
0
class User(AbstractBaseUser):
	full_name = models.CharField(
		verbose_name="Full Name",
		max_length=50,
		validators=[
				validators.RegexValidator(regex=r"[A-Za-z]*\s[A-Za-z]*\s[A-Za-z]*", message="Enter Valid Full Name Ex.shyam kumar yadav")],
		null=True,
	)
	email = models.EmailField(
		verbose_name='email ',
		max_length=255,
		unique=True,
	)
	date_of_birth = models.DateField(
		verbose_name="Data of Birth",
		null=True,
	)
	contactNo = models.CharField(verbose_name="Phone Number",
		max_length=13,
		null=True,
		validators=[validators.RegexValidator(regex=r"^[6-9]\d{9}$", message="Enter Valid Phone Number."),]
	)
	state = models.CharField(verbose_name="State", 
		max_length=2, 
		null=True,
		choices=settings.LIST_STATE,
	)
	city = models.CharField(verbose_name="City", max_length=20,
		null=True,
		validators=[validators.RegexValidator(regex=r"^\w[A-Za-z ]+$", message="Enter Valid city.")]
	)
	pincode = models.CharField(verbose_name="Pincode",max_length=6,
		null=True,
		validators=[
			validators.RegexValidator(regex=r"^\d{6}$", message="Enter Valid pincode.")]
	)
	full_address = models.TextField(verbose_name="Full Address",
		null=True,
		max_length=50,
	)
	profile = models.FileField(upload_to=upload_to_user,
		default='Member_Img/default_user.jpg',
		blank=True,
		validators=[validators.FileExtensionValidator(allowed_extensions=validators.get_available_image_extensions(), message="Select valid Image.")],
	)

	is_active = models.BooleanField(default=True)
	is_admin = models.BooleanField(default=False)

	objects = UserManager()

	USERNAME_FIELD = 'email'
	EMAIL_FIELD = 'email'
	REQUIRED_FIELDS = []
	REQUIRED_FIELDS+=['full_name', 'contactNo', 'date_of_birth', 'state', 'city', 'full_address', 'profile']

	def __str__(self):
		return f"id :{self.id}, {self.email}"

	def has_perm(self, perm, obj=None):
		return True

	def has_module_perms(self, app_label):
		return True
		
	def send_email(self, subject, message, from_email=None, **kwargs):
		send_mail(subject, message, from_email, [self.email], **kwargs)

	@property
	def get_full_name(self):
		return self.full_name

	@property
	def get_short_name(self):
		return "_".join(self.full_name.split(' ')[::2])

	@property
	def is_staff(self):
		return self.is_admin
Exemplo n.º 15
0
def validate_image_and_svg_file_extension(value):
    allowed_extensions = get_available_image_extensions() + ["svg"]
    return FileExtensionValidator(allowed_extensions=allowed_extensions)(value)
Exemplo n.º 16
0
class AbstractUser(BaseAbstractUser):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    first_name = models.CharField(
        verbose_name=_("First Name"),
        max_length=50,
        validators=[
            validators.RegexValidator(regex=r"^[A-Za-z ]+$",
                                      message=_("Enter Valid Name."))
        ],
        null=True,
    )
    last_name = models.CharField(
        verbose_name=_("Last Name"),
        max_length=20,
        validators=[
            validators.RegexValidator(regex=r"^[A-Za-z]+$",
                                      message=_("Enter Valid Last Name."))
        ],
        null=True,
    )
    # username = models.CharField(
    #     verbose_name='Username',
    #     max_length=16,
    #     unique=True,
    #     help_text=_('16 characters or fewer. Letters, digits and @ or _ only.'),
    #     validators=[UnicodeUsernameValidator()],
    #     error_messages={
    #         'unique': _("A user with that username already exists."),
    #     },
    # )
    email = models.EmailField(
        verbose_name=_('email'),
        max_length=30,
        unique=True,
    )
    date_of_birth = models.DateField(verbose_name=_("Data of Birth"),
                                     null=True,
                                     validators=[age_18])
    phone_number = models.CharField(
        verbose_name=_("Phone Number"),
        max_length=13,
        null=True,
        validators=[
            validators.RegexValidator(regex=r"^[4-9]\d{9}$",
                                      message=_("Enter Valid Phone Number.")),
        ])
    state = models.CharField(
        verbose_name=_("State"),
        max_length=2,
        null=True,
        choices=[(None, _("Select State"))] + data_list.LIST_STATE,
    )
    city = models.CharField(verbose_name=_("City"),
                            max_length=20,
                            null=True,
                            validators=[
                                validators.RegexValidator(
                                    regex=r"^\w[A-Za-z ]+$",
                                    message=_("Enter Valid city."))
                            ])
    pincode = models.CharField(
        verbose_name=_("Pincode"),
        max_length=6,
        null=True,
    )
    full_address = models.TextField(
        verbose_name=_("Full Address"),
        null=True,
        max_length=50,
    )
    profile = models.FileField(
        upload_to=upload_to,
        default='default.jpg',
        blank=True,
        help_text=_('Only Image (png, jpe, jpg, jpeg) extensions'),
        validators=[
            validators.FileExtensionValidator(
                allowed_extensions=validators.get_available_image_extensions(),
                message=_("'%(extension)s' not valid Profile Image."))
        ],
    )

    # is_staff = models.BooleanField(verbose_name=_('staff status'), default=False, help_text=_(
    #     'Designates whether the user can log into this admin site.'))
    # is_active = models.BooleanField(default=True,
    #                                 help_text=_('Designates whether this user should be treated as active. '
    #                                             'Unselect this instead of deleting accounts.'),
    #                                 )
    # is_defaulter = False

    # date_joined = models.DateTimeField(
    #     verbose_name=_('date joined'), default=timezone.now)

    # objects = UserManager()

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

    class Meta(BaseAbstractUser.Meta):
        verbose_name = _('user')
        verbose_name_plural = _('users')
        abstract = True

    # def clean(self):
    #     super().clean()
    #     self.email = self.__class__.objects.normalize_email(self.email)

    # def __str__(self):
    #     return self.username

    # def email_user(self, subject, message, from_email=None, **kwargs):
    #     """Send an email to this user."""
    #     send_mail(subject, message, from_email, [self.email], **kwargs)

    # def get_full_name(self):
    #     full_name = '%s %s' % (self.first_name, self.last_name)
    #     return full_name.strip()

    # def get_short_name(self):
    #     """Return the short name for the user."""
    #     return self.first_name

    @property
    def prourl(self):
        if self.profile and hasattr(self.profile, 'url'):
            return self.profile.url
        else:
            return "https://picsum.photos/300"
Exemplo n.º 17
0
 def check_remote_download(self, name):
     ext = extract_extension(name)[1:]
     return ext in get_available_image_extensions()
Exemplo n.º 18
0
from django.forms import ImageField
from django.core.exceptions import ValidationError
from django.core.validators import get_available_image_extensions, FileExtensionValidator

from localcosmos_server.validators import validate_svg

allowed_extensions = get_available_image_extensions() + ['svg']

validate_svg_and_image_file_extension = FileExtensionValidator(
    allowed_extensions=allowed_extensions, )


class SVGandImageField(ImageField):

    default_validators = [validate_svg_and_image_file_extension]

    def to_python(self, data):

        try:
            f = super().to_python(data)
        except ValidationError:
            root = validate_svg(data)

        return data