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
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
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)
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]
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
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