class Cathedra(Model): name = CharField(max_length=200, verbose_name='Название') slug = CharField(max_length=200, verbose_name='Техническое имя') html = TextField(verbose_name='HTML') icon = ImageField(upload_to='main/images/cathedras/icons', null=True, blank=True, verbose_name='Иконка') image = ImageField(upload_to='main/images/cathedras/images', null=True, blank=True, verbose_name='Картинка') def __str__(self): return self.name @staticmethod def get_menu(menu): inner_links = Cathedra.objects.filter(menu=menu) return {inner_link.slug: inner_link.name for inner_link in inner_links} class Meta: verbose_name = 'Кафедра' verbose_name_plural = 'Кафедры'
class User(AbstractUser): avatar = ImageField(blank=True, default='default/default-user.jpg', upload_to=user_directory_path) birth_date = DateField(null=True, blank=True, default=None) email = EmailField('email', unique=True, blank=True, null=False) phone = CharField(max_length=20, blank=True, default=None, null=True) thumbnail = ImageField(blank=True, default='default/default-user.jpg') is_verified = BooleanField('verified', default=False) verification_uuid = UUIDField('Unique Verification UUID', default=uuid.uuid4) @classmethod def create(cls, **kwargs): new_user = cls() new_user.birth_date = kwargs.get('birth_date') if kwargs.get( 'birth_date') else None new_user.email = kwargs.get('email') if kwargs.get('email') else None new_user.first_name = kwargs.get('first_name') if kwargs.get( 'first_name') else None new_user.last_name = kwargs.get('last_name') if kwargs.get( 'last_name') else None new_user.password = make_password(kwargs.get('password')) new_user.phone = kwargs.get('phone') if kwargs.get('phone') else None new_user.username = kwargs.get('username') return new_user def __str__(self): return self.username if self.username else '%s %s' % (self.first_name, self.last_name)
class Boat(TimeStampedModel, TitleSlugDescriptionModel): class Meta: verbose_name = _("boat model") verbose_name_plural = _("boat models") ordering = ['title'] base = BoatImageField(verbose_name=_("base")) hull = BoatImageField(verbose_name=_("hull")) boot_stripe = BoatImageField(verbose_name=_("boot stripe")) boot_stripe_accent = BoatImageField(verbose_name=_("boot stripe accent")) sheer_stripe = ImageField( verbose_name=_("sheer stripe"), upload_to=settings.BOAT_CONFIG['BOAT_IMAGES'], blank=True, null=True, ) sheer_stripe_accent = ImageField( verbose_name=_("sheer stripe accent"), upload_to=settings.BOAT_CONFIG['BOAT_IMAGES'], blank=True, null=True, ) model_group = models.ForeignKey("BoatModelGroup", null=True, blank=True, related_name="boats", verbose_name=_("model group")) length_group = models.ForeignKey("BoatLengthGroup", null=True, blank=True, related_name="boats", verbose_name=_("length group")) logo = BoatImageField(verbose_name=_("logo")) thumbnail = ImageField(verbose_name=_("thumbnail"), upload_to="boats_thumbnails/") # Comparable attributes standard_fuel = models.CharField(max_length=255, verbose_name=_("standard fuel")) beam = models.CharField(max_length=255, verbose_name=_("beam")) length = models.CharField(max_length=255, verbose_name=_("length")) water = models.CharField(max_length=255, verbose_name=_("water")) def __str__(self): return self.title def get_available_features(self): return self.features.filter(available=True).all() def has_all_images(self): image_fields = [ 'base', 'hull', 'boot_stripe', 'boot_stripe_accent', 'logo', 'thumbnail' ] return all([getattr(self, attr) for attr in image_fields])
class Blog(models.Model): title = CharField(max_length=250) date = DateField() banner = ImageField(upload_to='static/images/article', default='static/images/article/default.jpg') thumbnail = ImageField(upload_to='static/images/article', default='static/images/article/default.jpg') short_content = TextField(default='such empty...') content = TextField() def __str__(self): return self.title[:100]
def image( *args, **kwargs ): meta = _kwargs_( kwargs ) meta['type'] = 'image' field = ImageField( *args, **kwargs ) field.meta = meta return field
class Course(Model): name = CharField(max_length=64) description = TextField() cover_image = ImageField(upload_to=get_course_upload_directory) small_cover_image = ImageField(null=True, blank=True, upload_to=get_course_upload_directory) created = DateTimeField(auto_now_add=True) updated = DateTimeField(auto_now=True) objects = CourseQuerySet.as_manager() def __str__(self): return f"{self.name} ({self.id})"
class ImageThumbModel(Model): image = ImageField(blank=True) thumb = ImageField(null=True, blank=True) class Meta: abstract = True def save(self, *args, **kwargs): create_thumb(self) super(ImageThumbModel, self).save(*args, **kwargs) def __init__(self, *args, **kwargs): super(ImageThumbModel, self).__init__(*args, **kwargs)
class Artist(ImageThumbModel): name = CharField(max_length=50, blank=True) description = CharField(max_length=1024, blank=True) image = ImageField(upload_to=path_and_rename('artists'), blank=True) thumb = ImageField(upload_to=path_and_rename('artists/thumbs'), null=True, blank=True) def __str__(self): return self.name class Meta: ordering = ('name', )
class House(models.Model): name = CharField(max_length=20, default="Untitled") motto = CharField(max_length=256) image = ImageField(upload_to="houses", blank=True, null=True) banner = ImageField(upload_to="banners", blank=True, null=True) title_color = CharField(max_length=8, default="", blank=True) back_color = CharField(max_length=8, default="", blank=True) nav_color = CharField(max_length=8, default="", blank=True) headers_color = CharField(max_length=8, default="", blank=True) text_color = CharField(max_length=8, default="", blank=True) footer_color = CharField(max_length=8, default="", blank=True) def __str__(self): return f"{self.name}"
def fetch_image_to_image_field(image_url: str, target_field: ImageField) -> None: """Fetches image from url and assigns it to image file field""" response = requests.get(image_url) response.raise_for_status() content = response.content content_file = ContentFile(content) content_type = response.headers.get('content-type') extension = guess_extension(content_type) target_file_name = '{0}{1}'.format(uuid4(), extension) target_field.save( default_storage.get_available_name(target_file_name), content_file )
class AppUser(Model): user_Id = CharField(max_length=50, unique=True, blank=False, primary_key=True) password = CharField(max_length=50, blank=False) firstname = CharField(max_length=25) lastname = CharField(max_length=25) age = IntegerField(blank=True, default=20) sex = CharField(max_length=6, default="Male") height = FloatField(blank=True, default=5.0) body_type = CharField(max_length=10, default="Average") from_age = IntegerField(blank=True, default=20) to_age = IntegerField(blank=True, default=40) partner = CharField(max_length=6, default="Female") partner_height = FloatField(blank=True, default=5.0) partner_body_type = CharField(max_length=10, default="Average") photo = ImageField(blank=True, default='default_profile.png') def upload_photo(self, photo): self.photo = photo self.save() return self def update(self, age, sex, height, body_type, from_age, to_age, partner, partner_height, partner_body_type): self.age = age self.sex = sex self.height = height self.body_type = body_type self.from_age = from_age self.to_age = to_age self.partner = partner self.partner_height = partner_height self.partner_body_type = partner_body_type self.save() return self
class Slide(Orderable): title = CharField(max_length=50, verbose_name='Título', null=True, blank=True) description = CharField(max_length=256, verbose_name='Descrição', null=True, blank=True) image = ImageField(upload_to='slides', verbose_name='Imagem') time = PositiveIntegerField(default=5, verbose_name='Tempo visível', help_text='Em segundos') slider = ForeignKey(Slider, related_name='slides') url = CharField(verbose_name='Link', max_length=255, null=True, blank=True)
class OfficerImg(Model): """Officer headshots""" officer = OneToOneField(User, on_delete=CASCADE, related_name="img") img = ImageField(upload_to=path_and_rename, storage=OverwriteStorage(), verbose_name="Image") def __str__(self): return self.officer.name
class User(AbstractUser): """Default user for Pinterest Clone.""" #: First and last name do not cover name patterns around the globe name = CharField(_("Name of User"), blank=True, max_length=255) avatar = ImageField(upload_to='avatars', blank=True) followers = ManyToManyField("User", related_name="following") @property def total_followers(self): return self.followers.all().count() @property def total_following(self): return self.following.all().count() @property def display_name(self): if self.name: return self.name return self.username def get_absolute_url(self): """Get url for user's detail view. Returns: str: URL for user detail. """ return reverse("users:detail", kwargs={"username": self.username})
class GameRank(models.Model): name = CharField(max_length=64) badge = ImageField(upload_to="game_badges", blank=True, null=True) min_place = IntegerField(default=1) def __str__(self): return f"{self.name}"
class NewsAnswer(Model): text = TextField() news = FK(to=News, related_name='news_answers', on_delete=CASCADE) author = FK(to=Profile, related_name='news_answers', on_delete=CASCADE) image = ImageField(blank=True, null=True, upload_to='news_pics') seen_by = M2M(to=Profile, related_name='news_answers_seen', blank=True) created_at = DateTimeField( # auto_now_add=True ) survey_options = M2M(to=SurveyOption, related_name='threads', blank=True) class Meta: ordering = ['created_at'] def __str__(self): return self.text[:100] + '...' if len(str(self.text)) > 100 else self.text def save(self, *args, **kwargs): first_save = True if not self.pk else False super().save(*args, **kwargs) if first_save and self.image: img = Image.open(self.image.path) if img.height > 700 or img.width > 700: output_size = (700, 700) img.thumbnail(output_size) img.save(self.image.path)
class Statement(Model): text = TextField() thread = FK(to=Thread, related_name='statements', on_delete=CASCADE) author = FK(to=Profile, related_name='statements', on_delete=PROTECT) image = ImageField(upload_to='post_pics', blank=True, null=True) seen_by = M2M(to=Profile, related_name='statements_seen', blank=True) created_at = DateTimeField(auto_now_add=True) # Announcement options = M2M(to=Option, related_name='threads', blank=True) class Meta: ordering = ['created_at'] def __str__(self): text = self.text return f'{text[:100]}...' if len(str(text)) > 100 else text def save(self, *args, **kwargs): first_save = True if not self.pk else False super().save(*args, **kwargs) if first_save and self.image: img = Image.open(self.image.path) if img.height > 700 or img.width > 700: output_size = (700, 700) img.thumbnail(output_size) img.save(self.image.path)
class Anime(models.Model): anime_id = models.AutoField(primary_key=True, editable =False) name = CharField(max_length = 100) genre = CharField(max_length = 200) MOVIE = "Movie" TV = "TV" OVA = "OVA" ONA = "ONA" SPECIAL = "Special" GENRE_CHOICE = ( (MOVIE, "Movie"), (TV, "TV"), (OVA, "OVA"), (ONA, "ONA"), (SPECIAL, "Special") ) anime_type = CharField( max_length = 7, choices = GENRE_CHOICE, default = TV, ) episodes = IntegerField() rating = FloatField(validators=[MinValueValidator(0.0), MaxValueValidator(10)], default = 0) members = BigIntegerField() anime_photo = ImageField(null = True, upload_to = 'img/profiles', verbose_name = "Anime Photo", default = "{% static 'img/placeholder.jpg' %}") class Meta: ordering = ('-rating',)
class Game(Model): """docstring for Request""" name = CharField(max_length=255, ) description = TextField(blank=True, null=True) created_date = DateTimeField(default=timezone.now()) image = ImageField(upload_to="pic_folder/imgs/", blank=True, null=True) min_players = IntegerField(default=1) max_players = IntegerField(default=100) manual = FileField(upload_to="file_folder/manual", blank=True, null=True) min_best_for = IntegerField(default=0) max_best_for = IntegerField(default=100) difficulty_level = CharField(max_length=25, choices=( ('very_easy', 'muito fácil'), ('easy', 'facil'), ('normal', 'normal'), ('hard', 'difícil'), ('very_hard', 'muito difícil'), )) time = IntegerField(default=0) def __str__(self): return self.name def no_space_name(self): return self.name.replace(' ', '-') def mechanisms(self): return GameXGameMechanism.objects.filter(game=self)
class Product(UUIDModel, TimeStampedModel): created_by = ForeignKey(settings.AUTH_USER_MODEL, on_delete=PROTECT) name = CharField(max_length=250) category = CharField(max_length=500, blank=True, null=True) landing_price = DecimalField(max_digits=9, decimal_places=2) price = DecimalField(max_digits=9, decimal_places=2, verbose_name='MRP') distributor_margin = DecimalField(max_digits=5, decimal_places=2, verbose_name='Shell Margin') retailer_margin = DecimalField(max_digits=5, decimal_places=2) stock = PositiveIntegerField() barcode_entry = CharField(max_length=200, unique=True) image = ImageField(upload_to=get_product_upload_path, blank=True, null=True) is_active = BooleanField(default=True) class Meta: verbose_name = 'Product' verbose_name_plural = 'Products' def __str__(self): return self.name
class Article(Model): author = ForeignKey('Writer', on_delete=CASCADE) name = CharField(max_length=70) text = CharField(max_length=100000) image = ImageField(max_length=1000, upload_to=r'articles/images', null=True) tag = ForeignKey('Tag', on_delete=CASCADE, null=True) pub_date = DateTimeField() last_edit = DateTimeField() def __str__(self): return self.name def upload_image(self, file): os.chdir(settings.MEDIA_ROOT) self.delete_image() filename = self.author.name + '_' + self.name + '_image' + os.path.splitext(os.path.basename(file.name))[1] filename = os.path.join('articles/images/', filename) model_logic.upload_to_storage(file, filename) model_logic.resize_image(filename, square=True) self.image = filename self.save() def delete_image(self): model_logic.delete(self)
class User(Model): nama = CharField(max_length=50, null=True) email = EmailField(max_length=50, null=True) gender = CharField(max_length=20, null=True) alamat = CharField(max_length=100, null=True) negara = CharField(max_length=20, null=True) kota = CharField(max_length=30, null=True) no_hp = CharField(max_length=12, null=True) univ = CharField(max_length=50, null=True) jurusan = CharField(max_length=50, null=True) ang_kuliah = CharField(max_length=5, null=True) ang_LMD = CharField(max_length=5, null=True) pekerjaan = CharField(max_length=50, null=True) instansi = CharField(max_length=30, null=True) aktifitas = TextField(null=True) tahun_aktif = TextField(null=True) verified = BooleanField(default=False) password = CharField(max_length=50, null=True) # edited 15 april latitude = DecimalField(max_digits=20, decimal_places=15, null=True) longitude = DecimalField(max_digits=20, decimal_places=15, null=True) pertanyaan1 = TextField(null=True) pertanyaan2 = TextField(null=True) jawaban1 = TextField(null=True) jawaban2 = TextField(null=True) profile_image = ImageField(upload_to=get_image_path, blank=True, null=True)
class Issue(Model): title = CharField(max_length=255) file = FileField(upload_to='issues/%Y/%m') img = ImageField(upload_to='images/%Y/%m') volume = PositiveIntegerField(null=True) issue = PositiveIntegerField(null=True) date = DateTimeField()
class UserInformation(Model): user = OneToOneField(settings.AUTH_USER_MODEL, on_delete=CASCADE, related_name='info', verbose_name=_('User')) event_editor = BooleanField(default=False, verbose_name=_('Event Editor')) watchlist_viewer = BooleanField(default=False, verbose_name=_('Watchlist Viewer')) menu_viewer = BooleanField(default=False, verbose_name=_('Menu Item Viewer')) reporter = BooleanField(default=False, verbose_name=_('Reporter')) alert_viewer = BooleanField(default=True, verbose_name=_('Alert Viewer')) monitor_info_viewer = BooleanField(default=True, verbose_name=_('Monitor Info Viewer')) amislist_viewer = BooleanField(default=False, verbose_name=_('Amis List Viewer')) festivalreport_viewer = BooleanField(default=False, verbose_name=_('Festival Report Viewer')) festivalreport_refresh = BooleanField(default=False, verbose_name=_('Festival Report Refresh')) profile = ImageField(upload_to=upload_location, null=True, blank=True, verbose_name=_('Profile')) class Meta: verbose_name = _('User Information') verbose_name_plural = _('User Informations') def __str__(self): return str(self.full_name) def __unicode__(self): return str(self.full_name) @property def full_name(self): name = str(self.user.last_name) + str(self.user.first_name) if name == '': name = self.user.username return name
class TopPost(models.Model): title = models.CharField(max_length=100) target = models.CharField(max_length=100) imgUrl = ImageField(upload_to='TopPostImg') def __str__(self): return self.title
class Category(Model): class Meta: verbose_name = 'Category' verbose_name_plural = 'Categories' name = CharField(max_length=30) image = ImageField(null=True, blank=True) slug = SlugField(null=False, unique=True) def __str__(self): return self.name @property def imageURL(self): if self.image: url = self.image.url else: url = '' return url def get_absolute_url(self): return reverse('store:category', kwargs={'slug': self.slug}) def save(self, *args, **kwargs): if not self.slug: self.slug = slugify(self.name) return super().save(*args, **kwargs)
class User(AbstractUser): """Default user for Art For Introvert backend. """ #: First and last name do not cover name patterns around the globe name = CharField(_("Name of User"), blank=True, max_length=255) email = EmailField(_('email address'), unique=True) userpic = ImageField(_('userpic'), upload_to='user_userpics/', null=True, blank=True) birthdate = DateField(_("Birth Date"), blank=True, null=True) USERNAME_FIELD = 'email' REQUIRED_FIELDS = ['username'] def __str__(self): return f"User #{self.id}: {self.email}" def get_absolute_url(self): """Get url for user's detail view. Returns: str: URL for user detail. """ return reverse("users:detail", kwargs={"username": self.username})
class MetaProduct(Model): class Meta: verbose_name = 'Meta Product' verbose_name_plural = 'Meta Products' name = CharField(max_length=70, unique=True) category = ForeignKey(Category, on_delete=SET_NULL, null=True, blank=True) description = TextField(max_length=700, null=False, blank=False) availability = IntegerField(null=False, blank=False) digital = BooleanField(default=False, null=True, blank=True) image = ImageField(null=True, blank=True) slug = SlugField(null=False, unique=True) def __str__(self): return self.name @property def imageURL(self): if self.image: url = self.image.url else: url = '' return url def get_absolute_url(self): return reverse('store:meta_product', kwargs={'slug': self.slug}) def save(self, *args, **kwargs): if not self.slug: self.slug = slugify(self.name) return super().save(*args, **kwargs)
class Direction(Model): class Degree(TextChoices): MAGISTRACY = 'magistracy', 'Магистратура' BACCALAUREATE = 'baccalaureate', 'Бакалавриат' POSTGRADUATE = 'postgraduate', 'Аспирантура' @staticmethod def get_list(): return [degree.label for degree in Direction.Degree] @staticmethod def get_choice_list(): return [[degree.value, degree.label] for degree in Direction.Degree] name = CharField(max_length=200, verbose_name='Название') slug = CharField(max_length=200, verbose_name='Техническое имя') degree = CharField(choices=Degree.choices, max_length=20, default=Degree.MAGISTRACY, verbose_name='Степень') image = ImageField(upload_to='main/images/directions/images', null=True, blank=True, verbose_name='Картинка') html = TextField(verbose_name='HTML') def __str__(self): return self.name @property def url(self): return '/direction/' + self.slug def get_breadcrumbs_dict(self, menu): breadcrumbs = menu.get_breadcrumbs_dict() return breadcrumbs class Meta: verbose_name = 'Направление' verbose_name_plural = 'Направления'
class StreamingChannel(BaseModel): class Meta: verbose_name = _('Streaming channel') verbose_name_plural = _('Streaming channels') permissions = () name = CharField(null=False, blank=False, max_length=25, verbose_name=_('Name')) description = CharField(null=True, blank=True, max_length=1024, verbose_name=_('Description')) icon = ImageField(null=True, blank=True, verbose_name=_('Channel icon'), upload_to='images/%Y/%m/%d/channel_icons') url = URLField(null=False, blank=False, verbose_name=_('URL streaming channel')) owner_user = ForeignKey( User, default=None, related_name='channels', verbose_name=_('Owner streaming channels'), ) def __str__(self): return '{} - {}'.format(self.name, self.url)