Example #1
0
class Film(models.Model):
    actors = models.ManyToManyField(Actor, related_name='films')
    age_rate = models.IntegerField(blank=False)
    average_rate = models.IntegerField(default=0)
    company = models.CharField(max_length=50)
    description = models.TextField(blank=True, max_length=1000)
    duration = models.DurationField()
    film_file = models.FileField(upload_to=SetAddressFunctionsClass(
        file_type_name='flm', file_family_name='films',
        file_subfamily_name='').set_address_for_file_field,
                                 validators=[validate_film_file_type],
                                 null=True)
    genres = models.ManyToManyField(Genre, related_name='films')
    languages = models.ManyToManyField(Language, related_name='films')
    name = models.CharField(max_length=50)
    poster_file = models.ImageField(upload_to=SetAddressFunctionsClass(
        file_type_name='pst', file_family_name='films',
        file_subfamily_name='').set_address_for_file_field,
                                    null=True)
    premiere = models.DateField()
    producer = models.CharField(max_length=50)
    producing_country = models.CharField(max_length=50)
    views_count = models.IntegerField(default=0)
    visits_count = models.IntegerField(default=0)

    #   solve problem with linking many parts of film

    def __str__(self):
        return self.name
Example #2
0
class User(AbstractBaseUser, PermissionsMixin):
    username_validators = UsernameValidator()

    username = models.CharField(
        db_index=True,
        max_length=50,
        unique=True,
        validators=[username_validators],
        error_messages={'unique': 'This username is already taken.'})
    avatar = models.ImageField(upload_to=SetAddressFunctionsClass(
        file_type_name='avt', file_family_name='users',
        file_subfamily_name='').set_address_for_file_field,
                               null=True)
    email = models.EmailField(
        db_index=True,
        unique=True,
        error_messages={'unique': 'This email address is already used.'})
    full_name = models.CharField(max_length=255)
    first_name = models.CharField(max_length=50)
    last_name = models.CharField(max_length=50)
    birthday = models.DateField(validators=[validate_birthday])
    country = models.CharField(max_length=50)
    is_active = models.BooleanField(default=False)
    is_staff = models.BooleanField(default=False)
    is_subscribed = models.BooleanField(default=False)
    subscribe_start = models.DateField(null=True)
    subscribe_end = models.DateField(null=True)
    user_permission = models.ForeignKey(to=UserPermission,
                                        on_delete=models.DO_NOTHING,
                                        related_name='user_permission',
                                        null=True)
    reviews_number = models.IntegerField(default=0)
    objects = UserManager()

    USERNAME_FIELD = 'username'
    REQUIRED_FIELDS = ['email', 'full_name', 'birthday']

    def __str__(self):
        return self.username

    def get_short_name(self):
        return self.username

    def get_full_name(self):
        return self.full_name

    def email_user(self, subject, message, from_email=None, **kwargs):
        send_mail(subject, message, from_email, [self.email], **kwargs)

    def add_subscribe(self, duration):
        if not self.is_subscribed:
            self.is_subscribed = True
            self.subscribe_start = datetime.date.today()
        self.subscribe_end += datetime.date(days=30 * duration)

    def add_review(self):
        self.reviews_number += 1

    def del_review(self):
        self.reviews_number -= 1
Example #3
0
class Actor(models.Model):
    first_name = models.CharField(max_length=50)
    last_name = models.CharField(max_length=50)
    country = models.CharField(max_length=50)
    avatar = models.ImageField(
        upload_to=SetAddressFunctionsClass(
            file_type_name='avt',
            file_family_name='actors',
            file_subfamily_name='').set_address_for_file_field,
        null=True)  #Load image and change mull -> default
    descripption = models.TextField(blank=True, max_length=1000)
Example #4
0
class NewsMainImage(models.Model):
    image_file = models.ImageField(upload_to=SetAddressFunctionsClass(
        file_type_name='m_img',
        file_family_name='news',
        file_subfamily_name='').set_address_for_file_field,
                                   null=True)
    news = models.ForeignKey(to=News,
                             on_delete=models.CASCADE,
                             related_name='main_image')
    description = models.CharField(blank=True, max_length=200)

    def __str__(self):
        return self.description[:10]
Example #5
0
class FilmImage(models.Model):
    image_file = models.ImageField(upload_to=SetAddressFunctionsClass(
        file_type_name='image',
        file_family_name='films',
        file_subfamily_name='images').set_address_for_file_field,
                                   null=True)
    film = models.ForeignKey(to=Film,
                             on_delete=models.CASCADE,
                             related_name='images',
                             null=True)
    description = models.TextField(blank=True, max_length=200)

    def __str__(self):
        return self.image_file.name
Example #6
0
class Trailer(models.Model):
    name = models.CharField(max_length=50)
    film = models.ForeignKey(to=Film,
                             on_delete=models.CASCADE,
                             related_name='trailers',
                             null=True)
    trailer_file = models.FileField(upload_to=SetAddressFunctionsClass(
        file_type_name='trailer',
        file_family_name='films',
        file_subfamily_name='trailers').set_address_for_file_field,
                                    null=True)
    description = models.TextField(max_length=200, blank=True)

    def __str__(self):
        return self.name