From 768b35d5ecdb082fcea525a5b8cda236791ee952 Mon Sep 17 00:00:00 2001 From: peter Date: Fri, 2 Oct 2020 22:27:12 +0000 Subject: [PATCH] added a blackboard --- fet2020/blackboard/__init__.py | 0 fet2020/blackboard/admin.py | 21 +++++ fet2020/blackboard/apps.py | 5 ++ fet2020/blackboard/models.py | 89 +++++++++++++++++++ fet2020/blackboard/tests.py | 3 + fet2020/blackboard/urls.py | 12 +++ fet2020/blackboard/views.py | 14 +++ fet2020/fet2020/settings.py | 1 + fet2020/fet2020/urls.py | 1 + fet2020/templates/blackboard/index.html | 16 ++++ .../blackboard/partials/_jobPosting.html | 18 ++++ fet2020/templates/layout.html | 1 + 12 files changed, 181 insertions(+) create mode 100644 fet2020/blackboard/__init__.py create mode 100644 fet2020/blackboard/admin.py create mode 100644 fet2020/blackboard/apps.py create mode 100644 fet2020/blackboard/models.py create mode 100644 fet2020/blackboard/tests.py create mode 100644 fet2020/blackboard/urls.py create mode 100644 fet2020/blackboard/views.py create mode 100644 fet2020/templates/blackboard/index.html create mode 100644 fet2020/templates/blackboard/partials/_jobPosting.html diff --git a/fet2020/blackboard/__init__.py b/fet2020/blackboard/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/fet2020/blackboard/admin.py b/fet2020/blackboard/admin.py new file mode 100644 index 00000000..e4000b8b --- /dev/null +++ b/fet2020/blackboard/admin.py @@ -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) diff --git a/fet2020/blackboard/apps.py b/fet2020/blackboard/apps.py new file mode 100644 index 00000000..a1b4f21a --- /dev/null +++ b/fet2020/blackboard/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class BlackboardConfig(AppConfig): + name = 'blackboard' diff --git a/fet2020/blackboard/models.py b/fet2020/blackboard/models.py new file mode 100644 index 00000000..3d871f49 --- /dev/null +++ b/fet2020/blackboard/models.py @@ -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.') + ) + + + + diff --git a/fet2020/blackboard/tests.py b/fet2020/blackboard/tests.py new file mode 100644 index 00000000..7ce503c2 --- /dev/null +++ b/fet2020/blackboard/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/fet2020/blackboard/urls.py b/fet2020/blackboard/urls.py new file mode 100644 index 00000000..d873cf48 --- /dev/null +++ b/fet2020/blackboard/urls.py @@ -0,0 +1,12 @@ +from django.urls import path + +from . import views + + +urlpatterns = [ + path('', views.index, name='blackboard'), + + #path('', views.members_view), + #path('jobs/', views.jobs_view), + #path('member/', views.profile_view, name="member"), +] diff --git a/fet2020/blackboard/views.py b/fet2020/blackboard/views.py new file mode 100644 index 00000000..c13f90e8 --- /dev/null +++ b/fet2020/blackboard/views.py @@ -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) diff --git a/fet2020/fet2020/settings.py b/fet2020/fet2020/settings.py index fef192c5..194eb69f 100644 --- a/fet2020/fet2020/settings.py +++ b/fet2020/fet2020/settings.py @@ -81,6 +81,7 @@ INSTALLED_APPS = [ 'posts.apps.PostsConfig', 'members.apps.MembersConfig', 'documents.apps.DocumentsConfig', + 'blackboard.apps.BlackboardConfig', ] MIDDLEWARE = [ diff --git a/fet2020/fet2020/urls.py b/fet2020/fet2020/urls.py index bb0bac6d..89a69b65 100644 --- a/fet2020/fet2020/urls.py +++ b/fet2020/fet2020/urls.py @@ -38,4 +38,5 @@ urlpatterns = [ path('ckeditor/', include('ckeditor_uploader.urls')), path('api/', include(router.urls)), path('members/', include('members.urls'), name='members'), + path('blackboard/', include('blackboard.urls'), name='blackboard'), ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) diff --git a/fet2020/templates/blackboard/index.html b/fet2020/templates/blackboard/index.html new file mode 100644 index 00000000..b13fbc01 --- /dev/null +++ b/fet2020/templates/blackboard/index.html @@ -0,0 +1,16 @@ +{% extends 'layout.html' %} + +{% block content %} + +
+

Blackboard

+ + +
+ {% for job in jobPostings %} + {% include 'blackboard/partials/_jobPosting.html' %} + {% endfor %} +
+
+ +{% endblock %} diff --git a/fet2020/templates/blackboard/partials/_jobPosting.html b/fet2020/templates/blackboard/partials/_jobPosting.html new file mode 100644 index 00000000..6fefc75b --- /dev/null +++ b/fet2020/templates/blackboard/partials/_jobPosting.html @@ -0,0 +1,18 @@ +
+
+

{{job.companyName}}

+

{{job.jobName}}
+ Mindestgehalt: {{job.salary}}€

+ {# only thumb and name of member #} + + +
+
+

{{job.companyName}}

+

{{job.jobName}}
+ Mindestgehalt: {{job.salary}}€

+
+
+
+
+
diff --git a/fet2020/templates/layout.html b/fet2020/templates/layout.html index 8ffbc2e1..7d7df7f3 100644 --- a/fet2020/templates/layout.html +++ b/fet2020/templates/layout.html @@ -29,6 +29,7 @@ {% endif %}
  • Aktuelles
  • Fotos
  • +
  • Blackboard
  • Mitarbeiter