Files
fet2020/fet2020/blackboard/models.py
2020-10-24 16:24:40 +00:00

77 lines
2.6 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.'))