Files
fet2020/fet2020/blackboard/models.py
2021-01-15 15:42:30 +00:00

88 lines
2.7 KiB
Python

from django.conf import settings
from django.core.validators import ValidationError
from django.db import models
from django.utils import timezone
from django.utils.translation import gettext_lazy as _
import locale
import os
from os.path import splitext, basename
import ghostscript
import logging
logger = logging.getLogger("blackboard")
class JobPosting(models.Model):
companyName = models.CharField(verbose_name="Firmenname", max_length=128)
jobName = models.CharField(verbose_name="Berufsbezeichnung", max_length=128)
salary = models.PositiveSmallIntegerField(
verbose_name="Gehalt",
)
pdfLocation = models.FileField(
verbose_name="Stellenausschreibung", upload_to="uploads/blackboard/pdf/"
)
pdf_thumb_location = models.CharField(max_length=128)
publishDate = models.DateField(
verbose_name="Veröffentlichung", default=timezone.now
)
# Managers
all_jobPosting = models.Manager()
class Meta:
verbose_name = "Stellenausschreibung"
verbose_name_plural = "Stellenausschreibungen"
def __str__(self):
return str(self.publishDate) + "_" + self.companyName + "_" + self.jobName
def pdf2jpeg(self, pdf_input_path, jpeg_output_path):
args = [
"pef2jpeg", # actual value doesn't matter
"-dNOPAUSE",
"-sDEVICE=jpeg",
"-dDEVICEWIDTHPOINTS=600",
"-dDEVICEHEIGHTPOINTS=800",
"-sOutputFile=" + jpeg_output_path,
pdf_input_path,
]
encoding = locale.getpreferredencoding()
args = [a.encode(encoding) for a in args]
ghostscript.Ghostscript(*args)
def save(self, *args, **kwargs):
super().save(*args, **kwargs)
if not os.path.exists(settings.MEDIA_ROOT + "uploads/blackboard/thumb/"):
os.makedirs(settings.MEDIA_ROOT + "uploads/blackboard/thumb/")
pdf_thumb_location_full = (
settings.MEDIA_ROOT
+ "uploads/blackboard/thumb/"
+ splitext(basename(self.pdfLocation.name))[0]
+ ".jpg"
)
self.pdf_thumb_location = (
"/files/uploads/blackboard/thumb/"
+ splitext(basename(self.pdfLocation.name))[0]
+ ".jpg"
)
self.pdf2jpeg(self.pdfLocation.path, pdf_thumb_location_full)
logger.info("SavenThumbAs: " + self.pdf_thumb_location)
super().save(*args, **kwargs)
def clean(self):
count = 0
for i in self.pdfLocation.name:
if i == ".":
count = count + 1
if count > 1: # if more than one dot in filename
raise ValidationError(_("Keine Dateien mit >1 Punkten im Namen erlaubt."))