add 'number of hours' (Stundenanzahl)
This commit is contained in:
@@ -8,7 +8,7 @@ class JobPostingAdmin(admin.ModelAdmin):
|
|||||||
form = JobPostingForm
|
form = JobPostingForm
|
||||||
model = JobPosting
|
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)
|
admin.site.register(JobPosting, JobPostingAdmin)
|
||||||
|
|||||||
@@ -7,17 +7,17 @@ from .models import JobPosting
|
|||||||
class JobPostingForm(forms.ModelForm):
|
class JobPostingForm(forms.ModelForm):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = JobPosting
|
model = JobPosting
|
||||||
fields = ["companyName", "jobName", "salary", "pdfLocation", "publishDate"]
|
fields = ["company_name", "job_name", "salary", "number_of_hours", "pdf_location", "publish_date"]
|
||||||
|
|
||||||
labels = {
|
labels = {
|
||||||
"companyName": _("Firmenname"),
|
"company_name": _("Firmenname"),
|
||||||
"jobName": _("Berufsbezeichnung"),
|
"job_name": _("Berufsbezeichnung"),
|
||||||
"salary": _("Gehalt"),
|
"salary": _("monatliches Gehalt (brutto)/Stundenlohn"),
|
||||||
"pdfLocation": _("Stellenausschreibung"),
|
"pdf_location": _("Stellenausschreibung"),
|
||||||
"publishDate": _("Veröffentlichung"),
|
"publish_date": _("Veröffentlichung"),
|
||||||
}
|
}
|
||||||
|
|
||||||
help_texts = {
|
help_texts = {
|
||||||
"pdfLocation": _("Verwendbare Formate: PDF"),
|
"pdf_location": _("Verwendbare Formate: PDF"),
|
||||||
"salary": _("in Euro angeben"),
|
"salary": _("in Euro angeben; monatliches Gehalt bei >1h, sonst Stundenlohn."),
|
||||||
}
|
}
|
||||||
|
|||||||
45
fet2020/blackboard/migrations/0002_auto_20210515_1916.py
Normal file
45
fet2020/blackboard/migrations/0002_auto_20210515_1916.py
Normal 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'),
|
||||||
|
),
|
||||||
|
]
|
||||||
@@ -1,3 +1,8 @@
|
|||||||
|
import ghostscript
|
||||||
|
import locale
|
||||||
|
import logging
|
||||||
|
import os
|
||||||
|
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.core.validators import ValidationError
|
from django.core.validators import ValidationError
|
||||||
from django.db import models
|
from django.db import models
|
||||||
@@ -5,40 +10,43 @@ from django.urls import reverse
|
|||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
import locale
|
|
||||||
import os
|
|
||||||
from os.path import splitext, basename
|
from os.path import splitext, basename
|
||||||
|
|
||||||
import ghostscript
|
|
||||||
|
|
||||||
import logging
|
|
||||||
|
|
||||||
logger = logging.getLogger("blackboard")
|
logger = logging.getLogger("blackboard")
|
||||||
|
|
||||||
|
|
||||||
class JobPosting(models.Model):
|
class JobPosting(models.Model):
|
||||||
companyName = models.CharField(verbose_name="Firmenname", max_length=128)
|
company_name = models.CharField(verbose_name="Firmenname", max_length=128)
|
||||||
jobName = models.CharField(verbose_name="Berufsbezeichnung", max_length=128)
|
job_name = models.CharField(verbose_name="Berufsbezeichnung", max_length=128)
|
||||||
|
|
||||||
salary = models.PositiveSmallIntegerField(
|
salary = models.PositiveSmallIntegerField(
|
||||||
verbose_name="Gehalt",
|
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/"
|
verbose_name="Stellenausschreibung", upload_to="uploads/blackboard/pdf/"
|
||||||
)
|
)
|
||||||
pdf_thumb_location = models.CharField(max_length=128)
|
pdf_thumb_location = models.CharField(max_length=128)
|
||||||
publishDate = models.DateField(
|
|
||||||
|
publish_date = models.DateField(
|
||||||
verbose_name="Veröffentlichung", default=timezone.now
|
verbose_name="Veröffentlichung", default=timezone.now
|
||||||
)
|
)
|
||||||
|
|
||||||
# Managers
|
# Managers
|
||||||
all_jobPosting = models.Manager()
|
all_job_postings = models.Manager()
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = "Stellenausschreibung"
|
verbose_name = "Stellenausschreibung"
|
||||||
verbose_name_plural = "Stellenausschreibungen"
|
verbose_name_plural = "Stellenausschreibungen"
|
||||||
|
|
||||||
def __str__(self):
|
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):
|
def get_absolute_url(self):
|
||||||
return reverse("blackboard")
|
return reverse("blackboard")
|
||||||
@@ -61,6 +69,14 @@ class JobPosting(models.Model):
|
|||||||
with ghostscript.Ghostscript(*args) as g:
|
with ghostscript.Ghostscript(*args) as g:
|
||||||
ghostscript.cleanup()
|
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):
|
def save(self, *args, **kwargs):
|
||||||
super().save(*args, **kwargs)
|
super().save(*args, **kwargs)
|
||||||
|
|
||||||
@@ -70,24 +86,16 @@ class JobPosting(models.Model):
|
|||||||
pdf_thumb_location_full = (
|
pdf_thumb_location_full = (
|
||||||
settings.MEDIA_ROOT
|
settings.MEDIA_ROOT
|
||||||
+ "uploads/blackboard/thumb/"
|
+ "uploads/blackboard/thumb/"
|
||||||
+ splitext(basename(self.pdfLocation.name))[0]
|
+ splitext(basename(self.pdf_location.name))[0]
|
||||||
+ ".jpg"
|
+ ".jpg"
|
||||||
)
|
)
|
||||||
|
|
||||||
self.pdf_thumb_location = (
|
self.pdf_thumb_location = (
|
||||||
"/files/uploads/blackboard/thumb/"
|
"/files/uploads/blackboard/thumb/"
|
||||||
+ splitext(basename(self.pdfLocation.name))[0]
|
+ splitext(basename(self.pdf_location.name))[0]
|
||||||
+ ".jpg"
|
+ ".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)
|
logger.info("SavenThumbAs: " + self.pdf_thumb_location)
|
||||||
super().save(*args, **kwargs)
|
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."))
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ from .models import JobPosting
|
|||||||
|
|
||||||
def index(request):
|
def index(request):
|
||||||
job_postings_cutoff = timezone.now().date() - timedelta(30) # 30days from now
|
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_info = CustomFlatPage.objects.filter(title__iexact="blackboard").first()
|
||||||
bb_empty = CustomFlatPage.objects.filter(title__iexact="blackboard empty").first()
|
bb_empty = CustomFlatPage.objects.filter(title__iexact="blackboard empty").first()
|
||||||
|
|
||||||
|
|||||||
@@ -1,15 +1,19 @@
|
|||||||
<div class="cell medium-4 large-3 small-12">
|
<div class="cell medium-4 large-3 small-12">
|
||||||
<h2>{{job.companyName}}</h2>
|
<h2>{{job.company_name}}</h2>
|
||||||
<p>{{job.jobName}}<br>
|
<p>{{job.job_name}}<br>
|
||||||
Mindestgehalt: {{job.salary}}€</p>
|
{% 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 #}
|
{# 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="" />
|
<img style="width:200px;height:280px" src="{{job.pdf_thumb_location}}" alt="" />
|
||||||
<div class="thumb-layer">
|
<div class="thumb-layer">
|
||||||
<div>
|
<div>
|
||||||
<h1>{{job.companyName}}</h1>
|
<h1>{{job.company_name}}</h1>
|
||||||
<p>{{job.jobName}} <br>
|
<p>{{job.job_name}}</p>
|
||||||
Mindestgehalt: {{job.salary}}€</p>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</a>
|
</a>
|
||||||
|
|||||||
Reference in New Issue
Block a user