add 'number of hours' (Stundenanzahl)

This commit is contained in:
2021-05-15 17:25:23 +00:00
parent 1ae6ecddae
commit 5b86fe9a18
6 changed files with 97 additions and 40 deletions

View File

@@ -8,7 +8,7 @@ class JobPostingAdmin(admin.ModelAdmin):
form = JobPostingForm
model = JobPosting
list_display = ["companyName", "jobName", "salary", "publishDate"]
list_display = ["company_name", "job_name", "salary", "number_of_hours", "publish_date"]
admin.site.register(JobPosting, JobPostingAdmin)

View File

@@ -7,17 +7,17 @@ from .models import JobPosting
class JobPostingForm(forms.ModelForm):
class Meta:
model = JobPosting
fields = ["companyName", "jobName", "salary", "pdfLocation", "publishDate"]
fields = ["company_name", "job_name", "salary", "number_of_hours", "pdf_location", "publish_date"]
labels = {
"companyName": _("Firmenname"),
"jobName": _("Berufsbezeichnung"),
"salary": _("Gehalt"),
"pdfLocation": _("Stellenausschreibung"),
"publishDate": _("Veröffentlichung"),
"company_name": _("Firmenname"),
"job_name": _("Berufsbezeichnung"),
"salary": _("monatliches Gehalt (brutto)/Stundenlohn"),
"pdf_location": _("Stellenausschreibung"),
"publish_date": _("Veröffentlichung"),
}
help_texts = {
"pdfLocation": _("Verwendbare Formate: PDF"),
"salary": _("in Euro angeben"),
"pdf_location": _("Verwendbare Formate: PDF"),
"salary": _("in Euro angeben; monatliches Gehalt bei >1h, sonst Stundenlohn."),
}

View File

@@ -0,0 +1,45 @@
# Generated by Django 3.1.5 on 2021-05-15 17:16
from django.db import migrations, models
import django.db.models.manager
class Migration(migrations.Migration):
dependencies = [
('blackboard', '0001_initial'),
]
operations = [
migrations.AlterModelManagers(
name='jobposting',
managers=[
('all_job_postings', django.db.models.manager.Manager()),
],
),
migrations.RenameField(
model_name='jobposting',
old_name='companyName',
new_name='company_name',
),
migrations.RenameField(
model_name='jobposting',
old_name='jobName',
new_name='job_name',
),
migrations.RenameField(
model_name='jobposting',
old_name='pdfLocation',
new_name='pdf_location',
),
migrations.RenameField(
model_name='jobposting',
old_name='publishDate',
new_name='publish_date',
),
migrations.AddField(
model_name='jobposting',
name='number_of_hours',
field=models.DecimalField(decimal_places=1, default=40, max_digits=3, verbose_name='Stundenanzahl'),
),
]

View File

@@ -1,3 +1,8 @@
import ghostscript
import locale
import logging
import os
from django.conf import settings
from django.core.validators import ValidationError
from django.db import models
@@ -5,40 +10,43 @@ from django.urls import reverse
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)
company_name = models.CharField(verbose_name="Firmenname", max_length=128)
job_name = models.CharField(verbose_name="Berufsbezeichnung", max_length=128)
salary = models.PositiveSmallIntegerField(
verbose_name="Gehalt",
)
pdfLocation = models.FileField(
number_of_hours = models.DecimalField(
default=40,
verbose_name="Stundenanzahl",
max_digits=3,
decimal_places=1,
)
pdf_location = models.FileField(
verbose_name="Stellenausschreibung", upload_to="uploads/blackboard/pdf/"
)
pdf_thumb_location = models.CharField(max_length=128)
publishDate = models.DateField(
publish_date = models.DateField(
verbose_name="Veröffentlichung", default=timezone.now
)
# Managers
all_jobPosting = models.Manager()
all_job_postings = models.Manager()
class Meta:
verbose_name = "Stellenausschreibung"
verbose_name_plural = "Stellenausschreibungen"
def __str__(self):
return str(self.publishDate) + "_" + self.companyName + "_" + self.jobName
return str(self.publish_date) + "_" + self.company_name + "_" + self.job_name
def get_absolute_url(self):
return reverse("blackboard")
@@ -61,6 +69,14 @@ class JobPosting(models.Model):
with ghostscript.Ghostscript(*args) as g:
ghostscript.cleanup()
def clean(self):
count = 0
for i in self.pdf_location.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."))
def save(self, *args, **kwargs):
super().save(*args, **kwargs)
@@ -70,24 +86,16 @@ class JobPosting(models.Model):
pdf_thumb_location_full = (
settings.MEDIA_ROOT
+ "uploads/blackboard/thumb/"
+ splitext(basename(self.pdfLocation.name))[0]
+ splitext(basename(self.pdf_location.name))[0]
+ ".jpg"
)
self.pdf_thumb_location = (
"/files/uploads/blackboard/thumb/"
+ splitext(basename(self.pdfLocation.name))[0]
+ splitext(basename(self.pdf_location.name))[0]
+ ".jpg"
)
self.pdf2jpeg(self.pdfLocation.path, pdf_thumb_location_full)
self.pdf2jpeg(self.pdf_location.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."))

View File

@@ -8,7 +8,7 @@ from .models import JobPosting
def index(request):
job_postings_cutoff = timezone.now().date() - timedelta(30) # 30days from now
job_postings = JobPosting.all_jobPosting.filter(publishDate__gt=job_postings_cutoff)
job_postings = JobPosting.all_job_postings.filter(publish_date__gt=job_postings_cutoff)
bb_info = CustomFlatPage.objects.filter(title__iexact="blackboard").first()
bb_empty = CustomFlatPage.objects.filter(title__iexact="blackboard empty").first()

View File

@@ -1,15 +1,19 @@
<div class="cell medium-4 large-3 small-12">
<h2>{{job.companyName}}</h2>
<p>{{job.jobName}}<br>
Mindestgehalt: {{job.salary}}€</p>
<h2>{{job.company_name}}</h2>
<p>{{job.job_name}}<br>
{% if job.number_of_hours == 1 %}
Mindestgehalt: {{job.salary}}€ Stundenlohn<br></p>
{% else %}
monatliches Mindestgehalt:<br>
{{job.salary}}€ für {{job.number_of_hours}}h</p>
{% endif %}
{# only thumb and name of member #}
<a class="thumbnail member-thumb" href="{{job.pdfLocation.url}}" style="width:200px;height:280px" target="_blank">
<a class="thumbnail member-thumb" href="{{job.pdf_location.url}}" style="width:200px;height:280px" target="_blank">
<img style="width:200px;height:280px" src="{{job.pdf_thumb_location}}" alt="" />
<div class="thumb-layer">
<div>
<h1>{{job.companyName}}</h1>
<p>{{job.jobName}} <br>
Mindestgehalt: {{job.salary}}€</p>
<h1>{{job.company_name}}</h1>
<p>{{job.job_name}}</p>
</div>
</div>
</a>