Exemple #1
0
class Item(models.Model):
    item_name = models.CharField(max_length=50, unique=True)
    category = TreeForeignKey(Category, on_delete=models.CASCADE, blank=True, null=True,
                              related_name='product_category')
    description = models.TextField()
    # image = models.ImageField(upload_to=upload_image_path, blank=True)
    # OptimizedImageField use for image optimization
    image = OptimizedImageField(upload_to=upload_image_path,
                                optimized_image_output_size=(400, 300),
                                optimized_image_resize_method='cover', blank=True) # 'thumbnail', 'cover' or None

    image_thumbnail = OptimizedImageField(upload_to=upload_image_path,
                                optimized_image_output_size=(860, 440),
                                optimized_image_resize_method='thumbnail', blank=True)

    brand = models.CharField(max_length=50)
    creator = models.ForeignKey(Vendor, related_name='product_creator', on_delete=models.CASCADE)
    is_active = models.BooleanField(default=True)
    timestamp = models.DateTimeField(auto_now_add=True)
    last_update = models.DateTimeField(auto_now=True)
    slug = models.SlugField(blank=True, null=True, unique=True, allow_unicode=True)
    objects = ItemManager()

    def __str__(self):
        return self.item_name

    @property
    def title(self):
        return self.item_name

    def get_absolute_product_attribute_create_url(self):
        return reverse("product-create", kwargs={"slug": self.slug})

    def get_absolute_product_update_url(self):
        return reverse("item-update-url", kwargs={"slug": self.slug})
Exemple #2
0
class Game(models.Model):
    id = models.AutoField(primary_key=True)

    name = models.CharField('Game name',
                            max_length=512,
                            default='',
                            blank=True)
    description = models.TextField('Game description', default='', blank=True)

    release_date = models.DateField('Release date', null=True, blank=True)

    logo = OptimizedImageField('Game logo',
                               upload_to=RandomFileName('uploads', 'logos'),
                               null=True,
                               blank=True)
    wallpaper = OptimizedImageField('Game wallpaper',
                                    upload_to=RandomFileName(
                                        'uploads', 'wallpapers'),
                                    null=True,
                                    blank=True)

    score_list = models.ManyToManyField(Score, blank=True)
    platforms = models.ManyToManyField(Platform, blank=True)
    genres = models.ManyToManyField(Genre, blank=True)
    screenshots = models.ManyToManyField(Image, blank=True)

    average_score = models.FloatField('Average score', default=0, blank=True)
    count_score = models.IntegerField('Count score', default=0, blank=True)

    def calc_average_score(self):
        average = self.score_list.values('value').annotate(
            sum=Sum('value')).aggregate(average=Avg('sum'))['average']
        return average if average is not None else 0

    def save(self, *args, **kwargs):
        if self.id is not None:
            self.average_score = self.calc_average_score()
            self.count_score = self.score_list.count()

            if self.logo:
                self.logo = compress_image(self.logo)

            if self.wallpaper:
                self.wallpaper = compress_image(self.wallpaper)

        super(Game, self).save(*args, **kwargs)

    def __str__(self):
        return "%s" % self.name

    class Meta:
        verbose_name = 'game'
        verbose_name_plural = 'games'
        ordering = ['name']
Exemple #3
0
class Post(models.Model):
    """
    Post model.

    This model represents a Blog Post with a few fields including a `photo`
    field which is an OptimizedImageField instance without any optional
    argument. This means that out Post photo would keep source image original
    size.
    """

    title = models.CharField(
        max_length=100
    )
    photo = OptimizedImageField(
        upload_to='uploads/posts/%Y/%m/%d'
    )
    created = models.DateTimeField(
        auto_now_add=True
    )

    def __str__(self):
        return self.title

    class Meta:
        ordering = ['-created']
Exemple #4
0
class Post(models.Model):
    content = models.TextField()
    image = OptimizedImageField(
        upload_to='posts',
        optimized_image_resize_method='cover',
        optimized_image_output_size=(1080, 920),
        validators=[FileExtensionValidator(['png', 'jpg', 'jpeg'])],
        blank=True)
    liked = models.ManyToManyField(Profile, blank=True, related_name='likes')
    updated = models.DateTimeField(auto_now=True)
    created = models.DateTimeField(auto_now_add=True)
    author = models.ForeignKey(Profile,
                               on_delete=models.CASCADE,
                               related_name='posts')

    def __str__(self):
        return str(self.content[:20])

    def num_likes(self):
        return self.liked.all().count()

    def num_comments(self):
        return self.comment_set.all().count()

    class Meta:
        ordering = ('-created', )
Exemple #5
0
class Articles(TimeLog):
    title = models.CharField(max_length=255, unique=True)
    subtitle = models.CharField(max_length=255, default=' ', blank=True)
    cover = OptimizedImageField(
        upload_to="Articles",
        optimized_image_output_size=(400, 320),
        optimized_image_resize_method="cover",
        blank=True  # 'thumbnail', 'cover' or None
    )
    category = models.ForeignKey(Category,
                                 verbose_name=_("category_id"),
                                 on_delete=models.CASCADE)
    tags = ArrayField(models.CharField(max_length=250, blank=True), blank=True)
    content = models.TextField()
    author_name = models.CharField(max_length=240)
    user = models.CharField(max_length=250)
    realease = models.DateTimeField(auto_now_add=True)
    is_active = models.BooleanField(default=True)
    slug = models.SlugField(unique=True, default=" ", max_length=255)

    def save(self, *args, **kwargs):
        self.slug = slugify(self.title)
        super().save(*args, **kwargs)

    # @staticmethod
    @cached_property
    def get_total_articles(self):
        return Articles.objects.filter(is_active=True).count()

    class Meta:
        db_table = "articles"
        verbose_name = "Article"
        verbose_name_plural = "Articles"
        ordering = ('-updated_at', )
Exemple #6
0
class pushNotifications(models.Model):
    title = models.CharField(max_length=25)
    body = models.CharField(max_length=50)
    Image = OptimizedImageField(default='avatar.jpg',
                                optimized_image_output_size=(250, 250),
                                optimized_image_resize_method='thumbnail',
                                upload_to="images/")
Exemple #7
0
class Student(models.Model):
    """Model That Represents The Student"""
    user = models.OneToOneField(User, on_delete=models.CASCADE, blank=True)
    date_of_birth = models.DateField()
    gender = models.CharField(max_length=6, choices=GENDER_CHOICES)
    department = models.CharField(max_length=200, choices=DEPARTMENT_CHOICES)
    phone_number = models.CharField(max_length=20)
    matric_number = models.CharField(max_length=20, unique=True)
    level = models.IntegerField(choices=LEVEL_CHOICES)
    year_enrolled = models.IntegerField(choices=YEAR_CHOICES)
    profile_pic = OptimizedImageField(
        upload_to='student_profile_pic',
        optimized_image_output_size=(400, 300),
        optimized_image_resize_method='cover'  # 'thumbnail', 'cover' or None
    )
    age = models.IntegerField(blank=True)
    address = models.CharField(max_length=5, choices=ADDRESS_CHOICES)
    reason = models.CharField(max_length=18, choices=REASON_CHOICES)
    mother_job = models.CharField(max_length=20, choices=JOB_CHOICES)
    father_job = models.CharField(max_length=20, choices=JOB_CHOICES)
    guardian = models.CharField(max_length=6, choices=GUARDIAN_CHOICES)
    student_access = models.BooleanField(default=True)

    def __str__(self):
        """Returns The Student's Matric Number When The Object Is Called"""
        return f'{self.matric_number}'

    def save(self, *args, **kwargs):
        """ Saves the Age of the Student """
        days_in_year = 365.2425
        age = int((date.today() - self.date_of_birth).days / days_in_year)
        self.age = age
        self.matric_number = self.matric_number.upper()
        super(Student, self).save(*args, **kwargs)
Exemple #8
0
class Collaborator(models.Model):
    """
    Collaborator model.

    This model represents a Blog Collaborator(a.k.a. Writter) with a few
    fields including a `profile_image` field which is an OptimizedImageField
    instance with `optimized_image_output_size` and
    `optimized_image_resize_method` arguments set.

    This means that our Collaborator profile_image would be a resized
    version of the source image, meant to keep a given screen resolution,
    in this case (400, 300) pixels.
    """

    name = models.CharField(
        max_length=100
    )
    profile_image = OptimizedImageField(
        upload_to='uploads/collaborators/%Y/%m/%d',
        optimized_image_output_size=(400, 300),
        optimized_image_resize_method='cover'  # 'thumbnail' or 'cover'
    )
    created = models.DateTimeField(
        auto_now_add=True
    )

    def __str__(self):
        return self.name

    class Meta:
        ordering = ['-created']
Exemple #9
0
class userModel(models.Model):
    User = models.OneToOneField(User, on_delete=models.CASCADE, null=True)
    Icon = OptimizedImageField(default='images/avatar.jpg',
                               optimized_image_output_size=(250, 250),
                               optimized_image_resize_method='thumbnail',
                               upload_to="images/")
    username = models.CharField(max_length=25)
    email = models.EmailField(max_length=50)
class RAGP_Carousel (models.Model):
    image=OptimizedImageField(optimized_image_output_size=(584,396),optimized_image_resize_method='cover')
    text=models.TextField()
    Button_text=models.CharField(max_length=20)
    link=models.URLField()

    def __str__(self):
        return self.text[:50]
Exemple #11
0
class Certificates (models.Model):
    image= OptimizedImageField(optimized_image_output_size=(584,396),optimized_image_resize_method='cover', upload_to="image/",blank=True)
    organization=models.CharField(max_length=300)
    name=models.CharField(max_length=500)
    description=models.TextField()
    link=models.URLField()
    date_received=models.DateField()
        
    def __str__ (self):
        return f"{self.organization},{self.name}"
Exemple #12
0
class Project(models.Model):
    image= OptimizedImageField(optimized_image_output_size=(584,396),optimized_image_resize_method='cover', upload_to="image/",blank=True)
    title=models.CharField (max_length=300)
    technologies=models.CharField (max_length=300)
    description=models.TextField ()
    link=models.URLField()
    date=models.DateField()
    
    def __str__ (self):
        return self.title
class RAGP_Stories (models.Model):
    passport=OptimizedImageField(optimized_image_output_size=(584,396),optimized_image_resize_method='cover')
    name=models.CharField(max_length=50)
    story=models.TextField()

    def __str__(self):
        return self.name

    def summary (self):
        return self.story[:200]+" ..."
Exemple #14
0
class Post(models.Model):
    title = models.CharField(max_length=100)
    photo = OptimizedImageField(upload_to='uploads/%Y/%m/%d')
    created = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.title

    class Meta:
        ordering = ['-created']
Exemple #15
0
class Volunteer (models.Model):
    image= OptimizedImageField(optimized_image_output_size=(584,396),optimized_image_resize_method='cover', upload_to="image/",blank=True)
    organization=models.CharField(max_length=300)
    position= models.CharField(max_length=300)
    achievement1=models.TextField(blank=True)
    achievement2=models.TextField(blank=True)
    start_date=models.DateField()
    end_date=models.DateField(null=True)

    def __str__ (self):
        return f"{self.position} at {self.organization}"
Exemple #16
0
class Blog(models.Model):
    id = models.AutoField(primary_key=True)
    image = OptimizedImageField(
        upload_to='uploads/collaborators/%Y/%m/%d',
        null=True, blank=True
    )
    time = models.DateTimeField(auto_now_add=True)
    tittle = models.CharField(max_length=100, null=True)
    content = models.CharField(max_length=999, null=True)

    def __str__(self):
        return self.tittle
Exemple #17
0
class Banner(models.Model):
    img = OptimizedImageField(
        upload_to='uploads/collaborators/%Y/%m/%d',
        optimized_image_output_size=(1140, 475),
        optimized_image_resize_method='thumbnail',
        null=True, blank=True
    )
    text = models.CharField(max_length=400, null=True)
    product = models.ForeignKey(Product, on_delete=models.SET_NULL, blank=True, null=True)

    def __str__(self):
        return self.product.name
Exemple #18
0
class Job(models.Model):
    image= OptimizedImageField(optimized_image_output_size=(584,396),optimized_image_resize_method='cover', upload_to="image/",blank=True)
    job_title=models.CharField (max_length=300)
    company=models.CharField(max_length=300)
    start_date=models.DateField()
    end_date= models.DateField(null=True)
    achievement1=models.TextField()
    achievement2=models.TextField(blank=True)
    achievement3=models.TextField(blank=True)

    def __str__ (self):
        return f"{self.job_title} at {self.company}"
Exemple #19
0
class Brand(models.Model):
    name = models.CharField(max_length=200, null=True)
    image = OptimizedImageField(
        upload_to='uploads/collaborators/%Y/%m/%d',
        optimized_image_output_size=(100, 100),
        optimized_image_resize_method='thumbnail',  # 'thumbnail', 'cover' or None
        null = True, blank = True
    )

    user = models.OneToOneField(User, on_delete=models.SET_NULL, null=True, blank=True)

    def __str__(self):
        return self.name
Exemple #20
0
class ArticleImages(models.Model):
    image = image = OptimizedImageField(
        upload_to="Articles/images/",
        optimized_image_output_size=(400, 320),
        optimized_image_resize_method="cover",
        # 'thumbnail', 'cover' or None
    )
    created_on = models.DateTimeField(auto_now=True)
    added_by = models.CharField(max_length=100)

    class Meta:
        db_table = "articleimage"
        verbose_name = "ArticleImage"
        verbose_name_plural = "ArticleImages"
Exemple #21
0
class SchoolAdmin(models.Model):
    """Model That Represents The School Admin"""
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    date_of_birth = models.DateField()
    gender = models.CharField(max_length=6, choices=GENDER_CHOICES)
    phone_number = models.CharField(max_length=20)
    schooladmin_access = models.BooleanField(default=True)
    profile_pic = OptimizedImageField(
        upload_to='admin_profile_pic',
        optimized_image_output_size=(400, 300),
        optimized_image_resize_method='cover'  # 'thumbnail', 'cover' or None
    )

    def __str__(self):
        """Returns The School Admin's First And Last Name When The Object Is Called"""
        return f'{self.user.first_name} {self.user.last_name}'
class Blog (models.Model):
    image=OptimizedImageField(optimized_image_output_size=(584,396),optimized_image_resize_method='cover')
    title=models.TextField()
    story=models.TextField()
    date=models.DateTimeField(auto_now=True)
    publisher= models.CharField(max_length=200)


    def summary (self):
        return self.story[:200]+"..."

    def pretty_date (self):
        return self.date.strftime('%b %e %Y')

    def __str__(self):
        return self.title
Exemple #23
0
class Lecturer(models.Model):
    """Model That Represents The Lecturer"""
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    date_of_birth = models.DateField()
    gender = models.CharField(max_length=6, choices=GENDER_CHOICES)
    department = models.CharField(max_length=200, choices=DEPARTMENT_CHOICES)
    position = models.CharField(max_length=200)
    phone_number = models.CharField(max_length=20)
    lecturer_access = models.BooleanField(default=True, blank=True, null=True)
    profile_pic = OptimizedImageField(upload_to='lecturer_profile_pic',
                                      optimized_image_output_size=(400, 300),
                                      optimized_image_resize_method='cover'
                                      # 'thumbnail', 'cover' or None
                                      )

    def __str__(self):
        """Returns The Lecturer's First And Last Name When The Object Is Called"""
        return f'{self.user.first_name} {self.user.last_name}'
Exemple #24
0
class Image(models.Model):
    src = OptimizedImageField('Image',
                              upload_to=RandomFileName('uploads', 'images'),
                              null=True,
                              blank=True)

    def __str__(self):
        return self.src.name

    def save(self, *args, **kwargs):
        if not self.id:
            if self.src:
                self.src = compress_image(self.src)

        super(Image, self).save(*args, **kwargs)

    class Meta:
        verbose_name = 'изображение'
        verbose_name_plural = 'изображения'
Exemple #25
0
class Category(TimeLog):
    name = models.CharField(max_length=50, unique=True)
    image = OptimizedImageField(
        upload_to="category",
        optimized_image_output_size=(240, 320),
        optimized_image_resize_method="thumbnail",
        default="def.png"  # 'thumbnail', 'cover' or None
    )
    slug = models.SlugField(unique=True, default=" ")

    description = models.TextField(default=" ", blank=True)

    def save(self, *args, **kwargs):
        self.slug = slugify(self.name)
        super().save(*args, **kwargs)

    class Meta:
        db_table = "category"
        verbose_name = "Category"
        verbose_name_plural = "Categories"
        ordering = ('-updated_at', )
Exemple #26
0
class Product(models.Model):
    id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=200, null=True)
    price = models.FloatField()
    sales = models.FloatField(null=True, blank=True)
    year = models.CharField(max_length=200, null=True, blank=True)
    alcoholPercent = models.CharField(max_length=200, null=True, blank=True)
    color = models.CharField(max_length=200, null=True, blank=True)
    region = models.CharField(max_length=200, null=True, blank=True)
    variety = models.CharField(max_length=200, null=True, blank=True)
    brand = models.ForeignKey(Brand, on_delete=models.SET_NULL, blank=True, null=True)
    type = models.CharField(max_length=200, null=True, blank=True)
    description = models.CharField(max_length=200, null=True, blank=True)
    image = OptimizedImageField(
        upload_to='uploads/collaborators/%Y/%m/%d',
        optimized_image_output_size=(200, 620),
        optimized_image_resize_method='thumbnail',
        null=True, blank=True
    )
    quantity = models.IntegerField(default=1)
    production_technology = models.CharField(max_length=200, null=True, blank=True)

    def __str__(self):
        return self.name

    @property
    def imageURL(self):
        try:
            url = self.image.url
        except:
            url = ''
        return url

    def image_tag(self):
        from django.utils.safestring import mark_safe
        return mark_safe('<image src="%s" width="60" height="200" />' % self.imageURL)

    image_tag.short_description = 'Image'
    image_tag.allow_tags = True
Exemple #27
0
class PostInfo(models.Model):
    title = models.CharField(max_length=255, unique=True, default=None)
    postId = models.UUIDField(
        primary_key=True, default=uuid.uuid1, editable=False)
    authorId = models.CharField(max_length=255, default=None, editable=False)
    category = models.ForeignKey(
        Categorie, on_delete=models.CASCADE, default=None)
    tags = models.CharField(max_length=255, default=None)
    body = HTMLField()
    featured_image = OptimizedImageField(
        upload_to="featured_image",
        optimized_image_output_size=(772, 440),
        optimized_image_resize_method='cover',
        blank=True,
        null=True
    )
    meta_title = models.CharField(max_length=60, null=True, blank=True)
    slug = models.SlugField(max_length=75, unique=True, null=True, blank=True)
    meta_description = models.CharField(max_length=160, null=True, blank=True)

    class Meta:
        abstract = True
Exemple #28
0
class Update(models.Model):
    id = models.AutoField(primary_key=True)

    name = models.CharField('Название обновления',
                            max_length=512,
                            default='Обновление',
                            blank=True)
    description = models.TextField('Описание обновления',
                                   default='Описание',
                                   blank=True)

    release_date = models.DateField('Дата обновления', null=True, blank=True)

    logo = OptimizedImageField('Логотип обновления',
                               upload_to=RandomFileName('uploads', 'logos'),
                               null=True,
                               blank=True)
    wallpaper = OptimizedImageField('Изображение для фона',
                                    upload_to=RandomFileName(
                                        'uploads', 'wallpapers'),
                                    null=True,
                                    blank=True)

    score_list = models.ManyToManyField(Score, blank=True)
    screenshots = models.ManyToManyField(Image, blank=True)

    youtube = models.CharField('Ссылка на youtube видео (Video ID)',
                               max_length=256,
                               default='',
                               blank=True)

    average_score = models.FloatField('Среднее значение оценок',
                                      default=0,
                                      blank=True)
    count_score = models.IntegerField('Количество оценок',
                                      default=0,
                                      blank=True)

    def calc_average_score(self):
        average = self.score_list.values('value').annotate(
            sum=Sum('value')).aggregate(average=Avg('sum'))['average']
        return average if average is not None else 0

    def save(self, *args, **kwargs):
        if self.id is not None:
            self.average_score = self.calc_average_score()
            self.count_score = self.score_list.count()

            if self.logo:
                self.logo = compress_image(self.logo)

            if self.wallpaper:
                self.wallpaper = compress_image(self.wallpaper)

            if self.description:
                self.description = self.description.replace('\r', '').replace(
                    '\n', '<br/>')

        super(Update, self).save(*args, **kwargs)

    def __str__(self):
        return self.name

    class Meta:
        verbose_name = 'обновление'
        verbose_name_plural = 'обновления'
        ordering = ['name']
Exemple #29
0
class SelfSportReport(models.Model):
    student = models.ForeignKey(
        'Student',
        on_delete=models.CASCADE,
        null=False,
        blank=False,
    )
    semester = models.ForeignKey(
        'Semester',
        on_delete=models.CASCADE,
        null=False,
        blank=False,
    )
    image = OptimizedImageField(
        upload_to=get_report_path,
        optimized_image_resize_method='thumbnail',
        null=True,
        blank=True,
    )
    link = models.URLField(
        max_length=100,
        null=True,
        blank=True,
        validators=[URLValidator(schemes=['http', 'https'])])
    # start = models.DateTimeField(
    #     null=True,
    #     blank=False,
    # )
    # end = models.DateTimeField(
    #     null=True,
    #     blank=False,
    # )
    training_type = models.ForeignKey(
        'sport.SelfSportType',
        on_delete=models.SET_NULL,
        null=True,
    )
    hours = models.DecimalField(
        max_digits=5,
        decimal_places=2,
        default=0,
    )
    uploaded = models.DateTimeField(auto_now_add=True, null=False)
    approval = models.BooleanField(null=True)

    comment = models.TextField(max_length=1024, null=True, blank=True)

    class Meta:
        db_table = "self_sport_report"
        constraints = [
            # empty image for some reason
            # is saved as empty string instead of null
            models.CheckConstraint(name="link_xor_image",
                                   check=(models.Q(link__isnull=True, )
                                          & ~models.Q(image__exact=''))
                                   | models.Q(
                                       image__exact='',
                                       link__isnull=False,
                                   ))
        ]

    def get_submission_url(self) -> Tuple[SubmissionType, str]:
        if self.link is not None:
            submission_type = SubmissionType.LINK
            submission = self.link
        elif self.image is not None:
            submission_type = SubmissionType.IMAGE
            submission = self.image.url
        else:
            raise ValueError("Invalid object was provided")
        return submission_type, submission

    def save(self, *args, **kwargs):
        # update flag and approval only when object is created via API
        if not kwargs.get('force_insert', False):
            self.hours = max(self.hours, 0)
            self.approval = self.hours > 0
        return super().save(*args, **kwargs)

    def __str__(self):
        return f"{self.student} {self.uploaded.strftime('%Y-%m-%d %H:%M:%S')} for {self.semester}"
class CorporateProfile(models.Model):
    id = models.CharField(
        primary_key=True,
        editable=False,
        max_length=10,
        help_text=_('The ID must match the ID of its associated user'))
    company_name = models.ForeignKey(verbose_name=_('Company Name'),
                                     to=CompanyName,
                                     on_delete=models.CASCADE)
    operator_type = models.CharField(
        verbose_name=_('Are you a travel agent or direct provider?'),
        blank=False,
        null=True,
        choices=OPERATOR_TYPE,
        max_length=8,
        default='AGENT')
    admin = models.ForeignKey(verbose_name=_('Company Administrator'),
                              to=User,
                              on_delete=models.SET_NULL,
                              null=True)
    # Address Information
    address = models.CharField(verbose_name=_('Address'),
                               max_length=100,
                               blank=False)
    zip_code = models.CharField(verbose_name=_('ZIP Code'),
                                max_length=7,
                                blank=False)
    city = models.CharField(verbose_name=_('City'), max_length=75, blank=False)
    country = CountryField(
        verbose_name=_('Country'),
        default="DE",
        help_text=_(
            "This is the country where your firm's headquarter is in."))
    main_lang_of_conversation = LanguageField(
        verbose_name=_("Your primary language for conversations"),
        default="de",
        blank=False,
        null=True)
    # Contact Information
    phone = models.CharField(
        verbose_name=_('Phone'),
        max_length=50,
        blank=False,
        help_text=
        _('Please provide your public phone number. Please DO NOT use country codes, '
          'instead provide the local format: 01234 000000000. Characters "+" and "/" '
          'are NOT allowed.'))
    contact_email = models.EmailField(verbose_name=_('Contact E-Mail'),
                                      blank=False)
    business_hours_days = ListField(
        verbose_name=_('Days the business is open'), blank=False)
    business_hours_start = models.TimeField(
        verbose_name=_('Business Hours Start'), blank=True, null=True)
    business_hours_end = models.TimeField(verbose_name=_('Business Hours End'),
                                          blank=True,
                                          null=True)
    business_hours_break_start = models.TimeField(
        verbose_name=_('Lunch Break Start'), blank=True, null=True)
    business_hours_break_end = models.TimeField(
        verbose_name=_('Lunch Break End'), blank=True, null=True)

    # Profile Information
    description = models.TextField(verbose_name=_('Description'),
                                   max_length=3000,
                                   blank=True,
                                   null=True)
    homepage = models.CharField(verbose_name=_('Homepage'),
                                blank=True,
                                null=True,
                                max_length=75)

    title_pic = OptimizedImageField(verbose_name=_('Title Image'),
                                    upload_to="title_images/",
                                    blank=True,
                                    null=True)
    headline_image_position = models.IntegerField(
        verbose_name=_('Title Picture Position'), null=True, default=0)

    # Admin Data
    date_joined = models.DateTimeField(verbose_name=_('Date Joined'),
                                       auto_now_add=True)
    last_modified = models.DateTimeField(verbose_name=_('Last modified'),
                                         auto_now_add=True,
                                         null=True,
                                         blank=True)
    has_lead_contract = models.BooleanField(
        verbose_name=_('Contracted for leads'), default=False, choices=YNList)

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

        self.pk = self.admin.pk
        self.last_modified = timezone.now()

        return super(CorporateProfile, self).save(force_insert, force_update,
                                                  using, update_fields)

    def __str__(self):
        return self.company_name.name