added a blackboard
This commit is contained in:
0
fet2020/blackboard/__init__.py
Normal file
0
fet2020/blackboard/__init__.py
Normal file
21
fet2020/blackboard/admin.py
Normal file
21
fet2020/blackboard/admin.py
Normal 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)
|
||||
5
fet2020/blackboard/apps.py
Normal file
5
fet2020/blackboard/apps.py
Normal file
@@ -0,0 +1,5 @@
|
||||
from django.apps import AppConfig
|
||||
|
||||
|
||||
class BlackboardConfig(AppConfig):
|
||||
name = 'blackboard'
|
||||
89
fet2020/blackboard/models.py
Normal file
89
fet2020/blackboard/models.py
Normal 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.')
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
||||
3
fet2020/blackboard/tests.py
Normal file
3
fet2020/blackboard/tests.py
Normal file
@@ -0,0 +1,3 @@
|
||||
from django.test import TestCase
|
||||
|
||||
# Create your tests here.
|
||||
12
fet2020/blackboard/urls.py
Normal file
12
fet2020/blackboard/urls.py
Normal 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"),
|
||||
]
|
||||
14
fet2020/blackboard/views.py
Normal file
14
fet2020/blackboard/views.py
Normal 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)
|
||||
Reference in New Issue
Block a user