added a blackboard

This commit is contained in:
2020-10-02 22:27:12 +00:00
parent 5a9daeafaf
commit 768b35d5ec
12 changed files with 181 additions and 0 deletions

View File

View File

@@ -0,0 +1,21 @@
from django.contrib import admin
from .models import JobPosting
# Register your models here.
class JobPostingAdmin(admin.ModelAdmin):
model = JobPosting
fieldsets = (
(None, {
'fields': (
'companyName',
'jobName',
'salary',
'pdfLocation',
'publishDate',
)
}),
)
admin.site.register(JobPosting, JobPostingAdmin)

View File

@@ -0,0 +1,5 @@
from django.apps import AppConfig
class BlackboardConfig(AppConfig):
name = 'blackboard'

View File

@@ -0,0 +1,89 @@
from django.db import models
from easy_thumbnails.fields import ThumbnailerImageField
from django.core.validators import ValidationError
from django.utils import timezone
import ghostscript
import locale
from django.utils.translation import gettext_lazy as _
from django.conf import settings
from os.path import splitext, basename
import os
import logging
logger = logging.getLogger('posts')
request_logger = logging.getLogger('django.request')
# Create your models here
## Datenbank:
#Firmenname ÖBB
#Job name Junior Chef
#pdf location ./blackboard/pdf/20201002_oebb_jun.pdf
#pdf thumbnail location ./blackboard/thumb/20201002_oebb_jun_thumb.jpg
#publish date 20201002
class JobPosting(models.Model):
companyName = models.CharField(max_length=128)
jobName = models.CharField(max_length=128)
salary = models.PositiveSmallIntegerField()
pdfLocation = models.FileField(upload_to='uploads/blackboard/pdf/')
pdf_thumb_location = models.CharField(max_length=128)
publishDate = models.DateField('date published', 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",
#"-r144",
"-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)
request_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.')
)

View File

@@ -0,0 +1,3 @@
from django.test import TestCase
# Create your tests here.

View File

@@ -0,0 +1,12 @@
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='blackboard'),
#path('<str:filter>', views.members_view),
#path('jobs/<str:slug>', views.jobs_view),
#path('member/<str:member_name>', views.profile_view, name="member"),
]

View File

@@ -0,0 +1,14 @@
from django.shortcuts import render
from .models import JobPosting
from django.utils import timezone
import datetime
# Create your views here.
def index(request):
jobPost_cutoff = datetime.date.today() - datetime.timedelta(30)#30days from now
context = {
"jobPostings": JobPosting.all_jobPosting.filter(publishDate__gt=jobPost_cutoff),
}
return render(request, 'blackboard/index.html', context)