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)

View File

@@ -81,6 +81,7 @@ INSTALLED_APPS = [
'posts.apps.PostsConfig', 'posts.apps.PostsConfig',
'members.apps.MembersConfig', 'members.apps.MembersConfig',
'documents.apps.DocumentsConfig', 'documents.apps.DocumentsConfig',
'blackboard.apps.BlackboardConfig',
] ]
MIDDLEWARE = [ MIDDLEWARE = [

View File

@@ -38,4 +38,5 @@ urlpatterns = [
path('ckeditor/', include('ckeditor_uploader.urls')), path('ckeditor/', include('ckeditor_uploader.urls')),
path('api/', include(router.urls)), path('api/', include(router.urls)),
path('members/', include('members.urls'), name='members'), path('members/', include('members.urls'), name='members'),
path('blackboard/', include('blackboard.urls'), name='blackboard'),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

View File

@@ -0,0 +1,16 @@
{% extends 'layout.html' %}
{% block content %}
<div class="grid-container">
<h1>Blackboard</h1>
<!-- Tab panes -->
<div class="tabs-content">
{% for job in jobPostings %}
{% include 'blackboard/partials/_jobPosting.html' %}
{% endfor %}
</div>
</div>
{% endblock %}

View File

@@ -0,0 +1,18 @@
<div class="grid-x">
<div class="medium-3 large-2 small-6 cell">
<h2>{{job.companyName}}</h2>
<p>{{job.jobName}}<br>
Mindestgehalt: {{job.salary}}€</p>
{# only thumb and name of member #}
<a class="thumbnail member-thumb" href="{{job.pdfLocation.url}}" style="width:200px;height:300px">
<img src="{{job.pdf_thumb_location}}" alt="" />
<div class="thumb-layer">
<div>
<h1>{{job.companyName}}</h1>
<p>{{job.jobName}} <br>
Mindestgehalt: {{job.salary}}€</p>
</div>
</div>
</a>
</div>
</div>

View File

@@ -29,6 +29,7 @@
{% endif %} {% endif %}
<li class=""><a href="{%url 'home'%}">Aktuelles</a> </li> <li class=""><a href="{%url 'home'%}">Aktuelles</a> </li>
<li class=""><a href="/fotos">Fotos</a> </li> <li class=""><a href="/fotos">Fotos</a> </li>
<li class=""><a href="/blackboard">Blackboard</a> </li>
<li class=""><a href="{%url 'members'%}">Mitarbeiter</a> </li> <li class=""><a href="{%url 'members'%}">Mitarbeiter</a> </li>
</ul> </ul>
</div> </div>