summaryrefslogtreecommitdiff
path: root/bak/unused_apps/resume/models.py
diff options
context:
space:
mode:
Diffstat (limited to 'bak/unused_apps/resume/models.py')
-rw-r--r--bak/unused_apps/resume/models.py98
1 files changed, 98 insertions, 0 deletions
diff --git a/bak/unused_apps/resume/models.py b/bak/unused_apps/resume/models.py
new file mode 100644
index 0000000..bac3115
--- /dev/null
+++ b/bak/unused_apps/resume/models.py
@@ -0,0 +1,98 @@
+from django.db import models
+from django.utils.encoding import force_str
+from django.urls import reverse
+from django.template.defaultfilters import slugify
+
+from utils.util import markdown_to_html
+
+
+class Publisher(models.Model):
+ name = models.CharField(max_length=200)
+ slug = models.SlugField(max_length=50)
+ body_markdown = models.TextField(null=True, blank=True)
+ body_html = models.TextField(null=True, blank=True)
+ url = models.CharField(max_length=200, blank=True, null=True)
+ payment_time = models.DecimalField(max_digits=2, decimal_places=0)
+ order = models.DecimalField(max_digits=1, decimal_places=0)
+
+ class Meta:
+ ordering = ('order',)
+
+ def __str__(self):
+ return self.name
+
+ def save(self, *args, **kwargs):
+ if self.body_markdown:
+ self.body_html = markdown_to_html(self.body_markdown)
+ super(Publisher, self).save()
+
+
+class PubItem(models.Model):
+ title = models.CharField(max_length=200)
+ slug = models.CharField(max_length=50)
+ body_markdown = models.TextField(null=True, blank=True)
+ body_html = models.TextField(null=True, blank=True)
+ url = models.CharField(max_length=200, blank=True, null=True)
+ pub_date = models.DateTimeField('Date published')
+ publisher = models.ForeignKey(Publisher, on_delete=models.CASCADE)
+
+ class Meta:
+ ordering = ('-pub_date',)
+
+ def __str__(self):
+ return self.title
+
+ def get_absolute_url(self):
+ return reverse("resume:detail", kwargs={"publisher": self.publisher.slug, "slug": self.slug})
+
+ def admin_link(self):
+ return force_str('<a href="%s">Visit Site</a>' % (self.url))
+ admin_link.allow_tags = True
+ admin_link.short_description = 'Live Article'
+
+ def save(self, *args, **kwargs):
+ if self.body_markdown:
+ self.body_html = markdown_to_html(self.body_markdown)
+ super(PubItem, self).save()
+
+
+class Job(models.Model):
+ title = models.CharField(max_length=200)
+ employer = models.CharField(max_length=200, blank=True)
+ date_start = models.DateField('Date Start')
+ date_end = models.DateField('Date End', null=True, blank=True)
+ body_markdown = models.TextField(blank=True)
+ body_html = models.TextField(blank=True)
+
+ class Meta:
+ ordering = ('-date_end',)
+
+ def __str__(self):
+ return '{} - {}'.format(self.title, self.employer) # py3.1+ only
+
+ def save(self, *args, **kwargs):
+ if self.body_markdown:
+ self.body_html = markdown_to_html(self.body_markdown)
+ super(Job, self).save()
+
+
+class Resume(models.Model):
+ title = models.CharField(max_length=200)
+ slug = models.CharField(max_length=50, blank=True)
+ profile = models.TextField()
+ profile_html = models.TextField(blank=True)
+ skills = models.TextField()
+ skills_html = models.TextField(blank=True)
+ jobs = models.ManyToManyField(Job)
+
+ def __str__(self):
+ return self.title
+
+ def save(self, *args, **kwargs):
+ if self._state.adding and not self.slug:
+ self.slug = slugify(self.title)
+ if self.skills:
+ self.skills_html = markdown_to_html(self.skills)
+ if self.profile:
+ self.profile_html = markdown_to_html(self.profile)
+ super(Resume, self).save()