add 'number of hours' (Stundenanzahl)
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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."),
|
||||
}
|
||||
|
||||
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.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."))
|
||||
|
||||
@@ -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()
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user