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