mirror of
https://github.com/Superredstone/patrickcanal.it.git
synced 2026-09-20 17:51:12 +02:00
68 lines
2.0 KiB
Python
68 lines
2.0 KiB
Python
from django.db import models
|
|
from django.utils.translation import gettext as _
|
|
|
|
|
|
class Company(models.Model):
|
|
name = models.CharField(
|
|
verbose_name=_("Company"), max_length=255, blank=False, null=False
|
|
)
|
|
location = models.CharField(
|
|
verbose_name=_("Location"), max_length=255, blank=False, null=False
|
|
)
|
|
color = models.CharField(
|
|
verbose_name=_("Color (hex)"),
|
|
max_length=6,
|
|
null=False,
|
|
blank=False,
|
|
default="000000",
|
|
)
|
|
logo = models.FileField(upload_to="portfolio/companies_logo/")
|
|
|
|
def __str__(self):
|
|
return self.name
|
|
|
|
class Meta:
|
|
verbose_name = _("Company")
|
|
verbose_name_plural = _("Companies")
|
|
|
|
|
|
class JobExperience(models.Model):
|
|
position = models.CharField(verbose_name=_("Position"), null=False, blank=False)
|
|
start = models.DateField(verbose_name=_("Start date"), null=False, blank=False)
|
|
end = models.DateField(verbose_name=_("End date"), null=True, blank=True)
|
|
company = models.ForeignKey(
|
|
to=Company, null=False, blank=False, on_delete=models.PROTECT
|
|
)
|
|
|
|
@property
|
|
def currently_employed(self) -> bool:
|
|
return self.end is None
|
|
|
|
def __str__(self):
|
|
end = self.end if self.end else "today"
|
|
return f"{self.company} from {self.start} to {end}"
|
|
|
|
|
|
class JobTask(models.Model):
|
|
job = models.ForeignKey(
|
|
to=JobExperience,
|
|
null=False,
|
|
blank=False,
|
|
on_delete=models.CASCADE,
|
|
related_name="job_tasks",
|
|
)
|
|
description = models.TextField(verbose_name=_("Description"), max_length=4192)
|
|
|
|
def __str__(self):
|
|
return self.job.__str__()
|
|
|
|
|
|
class Project(models.Model):
|
|
name = models.CharField(
|
|
verbose_name=_("Name"), max_length=256, null=False, blank=False
|
|
)
|
|
short_description = models.CharField(
|
|
verbose_name=_("Short description"), max_length=512, blank=False, null=False
|
|
)
|
|
url = models.URLField(verbose_name=_("URL"), blank=True, null=False)
|