From cb23846a091ac79f5365f4755c97123bc9fe13b0 Mon Sep 17 00:00:00 2001 From: "root (fetsite6)" Date: Fri, 23 Oct 2020 20:50:42 +0200 Subject: [PATCH 1/6] removed members hashtag list; changed upload folder path nginx --- deployment/nginx.conf | 7 +++- fet2020/posts/serializers.py | 3 +- fet2020/posts/views.py | 6 ++-- fet2020/templates/posts/show.html | 53 ++++++++++++++----------------- 4 files changed, 35 insertions(+), 34 deletions(-) diff --git a/deployment/nginx.conf b/deployment/nginx.conf index bd4bc238..11673ccb 100644 --- a/deployment/nginx.conf +++ b/deployment/nginx.conf @@ -3,7 +3,12 @@ server { location /assets { alias /app/assets; - try_files $uri $uri/ =404; + try_files $uri =404; + } + + location /files { + alias /app/files; + try_files $uri =404; } location /fotos { diff --git a/fet2020/posts/serializers.py b/fet2020/posts/serializers.py index c9714953..c5051e14 100644 --- a/fet2020/posts/serializers.py +++ b/fet2020/posts/serializers.py @@ -21,6 +21,7 @@ class PostSerializer(serializers.HyperlinkedModelSerializer): 'event_start', 'event_end', 'is_hidden', - 'agenda_html' + 'agenda_html', + 'has_agenda', # 'author', ] diff --git a/fet2020/posts/views.py b/fet2020/posts/views.py index 6349e7fb..b0c5c209 100644 --- a/fet2020/posts/views.py +++ b/fet2020/posts/views.py @@ -38,9 +38,9 @@ def tags(request, tag=""): featured_post = Post.objects.get_visible_articles().filter(slug=tag).first() members = [] - job_names, slug_list = JobMember.jobs.get_job_names(slug=tag) + #job_names, slug_list = JobMember.jobs.get_job_names(slug=tag) - if job_names: + if None: active_members = JobMember.active_member.get_members_of_job(job_names=job_names) for idx, item in enumerate(job_names): @@ -60,7 +60,7 @@ def tags(request, tag=""): "posts": posts, "author_image": author_image, "featured_post": featured_post, - "members": members, + "members": None, "tags_list": None, } diff --git a/fet2020/templates/posts/show.html b/fet2020/templates/posts/show.html index 450710f5..e65d57cc 100644 --- a/fet2020/templates/posts/show.html +++ b/fet2020/templates/posts/show.html @@ -34,35 +34,11 @@
-
+

{{ post.title|tags_to_url }}

+ {{ post.subtitle|default_if_none:" "|tags_to_url }} +
+
-

{{ post.title|tags_to_url }}

- {{ post.subtitle|default_if_none:" "|tags_to_url }} - -
- Nächster Artikel
- -
- {% include 'posts/partials/_date_box.html' %} -
- - Start: {{ post.event_start }}
- Ende: {{ post.event_end }}
- - {% if request.user.is_authenticated %} - - {% if post.has_agenda %} - Agenda
- {% endif %} - - {% if post.has_protocol %} - Protokoll - {% endif %} - -
------
- Bearbeiten - {% endif %} -
{% for tag in post.get_tagnames %} {{ tag|tags_to_url }} @@ -77,6 +53,25 @@ {{ post.body|safe|add_internal_links|tags_to_url }}
+
+ {% if request.user.is_authenticated %} + + {% if post.has_agenda %} + Agenda
+ {% endif %} + + {% if post.has_protocol %} + Protokoll + {% endif %} + + {% endif %} + + Start: {{ post.event_start }}
+ Ende: {{ post.event_end }}
+ Nächster Artikel
+ {% include 'posts/partials/_date_box.html' %} +
+
@@ -87,4 +82,4 @@ {% endfor %}
-{% endblock %} \ No newline at end of file +{% endblock %} From 20052ae137ee0bf9b3f790b40d016d1421e7b14b Mon Sep 17 00:00:00 2001 From: Patrick Date: Sat, 24 Oct 2020 16:24:40 +0000 Subject: [PATCH 2/6] update wordings in admin area --- fet2020/blackboard/admin.py | 15 ++----- fet2020/blackboard/models.py | 10 ++--- fet2020/fet2020/settings.py | 23 ++++------ fet2020/members/forms.py | 59 ++++++++++++++++---------- fet2020/members/models.py | 21 ++++++---- fet2020/posts/admin.py | 28 ++++++------- fet2020/posts/forms.py | 81 +++++++++++++++++++++++------------- fet2020/posts/models.py | 8 ++-- fet2020/tasks/admin.py | 16 +++---- fet2020/tasks/forms.py | 32 +++++++++++++- fet2020/tasks/models.py | 21 +++++++--- 11 files changed, 185 insertions(+), 129 deletions(-) diff --git a/fet2020/blackboard/admin.py b/fet2020/blackboard/admin.py index 3258c7a2..a16ed892 100644 --- a/fet2020/blackboard/admin.py +++ b/fet2020/blackboard/admin.py @@ -1,21 +1,14 @@ from django.contrib import admin +from .forms import JobPostingForm from .models import JobPosting class JobPostingAdmin(admin.ModelAdmin): + form = JobPostingForm model = JobPosting - fieldsets = ( - (None, { - 'fields': ( - 'companyName', - 'jobName', - 'salary', - 'pdfLocation', - 'publishDate', - ) - }), - ) + + list_display = ['companyName', 'jobName', 'salary', 'publishDate'] admin.site.register(JobPosting, JobPostingAdmin) diff --git a/fet2020/blackboard/models.py b/fet2020/blackboard/models.py index 7f72777b..d1b2a4f3 100644 --- a/fet2020/blackboard/models.py +++ b/fet2020/blackboard/models.py @@ -15,12 +15,12 @@ logger = logging.getLogger('blackboard') 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/') + companyName = models.CharField(verbose_name="Firmenname", max_length=128) + jobName = models.CharField(verbose_name="Berufsbezeichnung", max_length=128) + salary = models.PositiveSmallIntegerField(verbose_name="Gehalt", ) + pdfLocation = models.FileField(verbose_name="Stellenausschreibung", upload_to='uploads/blackboard/pdf/') pdf_thumb_location = models.CharField(max_length=128) - publishDate = models.DateField('date published', default=timezone.now) + publishDate = models.DateField(verbose_name="Veröffentlichung", default=timezone.now) # Managers all_jobPosting = models.Manager() diff --git a/fet2020/fet2020/settings.py b/fet2020/fet2020/settings.py index c74bf811..5105d37b 100644 --- a/fet2020/fet2020/settings.py +++ b/fet2020/fet2020/settings.py @@ -227,7 +227,7 @@ THUMBNAIL_ALIASES = { }, } - +# ETHERPAD CLIENT if DEBUG: ETHERPAD_CLIENT = { 'url': "http://etherpad:"+env('ETHERPAD_PORT'), @@ -241,20 +241,7 @@ else: 'apikey': "/app/etherpad/APIKEY.txt" } -REST_FRAMEWORK = { - 'DEFAULT_PERMISSION_CLASSES': [ - 'rest_framework.permissions.AllowAny', - ] -} - - - -# DJANGO MAIL -EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' -EMAIL_HOST = 'buran.htu.tuwien.ac.at' -EMAIL_PORT = 587 -EMAIL_USE_TLS = True - +# REST FRAMEWORK REST_FRAMEWORK={ 'DEFAULT_PERMISSION_CLASSES_CLASSES':[ 'rest_framework.permissions.AllowAny', @@ -262,6 +249,12 @@ REST_FRAMEWORK={ 'DEFAULT_AUTHENTICATION_CLASSES':() } +# DJANGO MAIL +EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' +EMAIL_HOST = 'buran.htu.tuwien.ac.at' +EMAIL_PORT = 587 +EMAIL_USE_TLS = True + # CRON JOBS CRONJOBS = [ ('0 16 * * *', 'posts.cronjobs.check_to_send_agenda_mail'), diff --git a/fet2020/members/forms.py b/fet2020/members/forms.py index d43edb8d..77dc240e 100644 --- a/fet2020/members/forms.py +++ b/fet2020/members/forms.py @@ -1,4 +1,6 @@ from django import forms +from django.utils.translation import gettext_lazy as _ + from ckeditor_uploader.widgets import CKEditorUploadingWidget from .models import Member, Job, JobGroup @@ -8,45 +10,56 @@ class MemberForm(forms.ModelForm): class Meta: model = Member fields = [ - 'firstname', - 'surname', - 'nickname', - 'mailaccount', - 'role', - 'description', - 'image', - 'birthday', - 'phone', - 'address' + 'firstname', 'surname', 'nickname', 'mailaccount', 'role', 'description', 'image', + 'birthday', 'phone', 'address', ] widgets = { 'description': CKEditorUploadingWidget(config_name='default') } + labels = { + 'description': _("Beschreibung zu der Person"), + 'image': _("Porträt ()"), + 'birthday': _("Geburtstag"), + 'phone': _("Telefonnummer"), + 'address': _("Wohnadresse"), + } + + help_texts = { + 'image': _( + "Mindestgröße: 150*150 px, Verwendbare Formate: ..." + ), + 'mailaccount': _( + "Die Mailadresse mit '@fet.at' angeben." + ), + } + class JobForm(forms.ModelForm): class Meta: model = Job - fields = [ - 'name', - 'shortterm', - 'slug', - 'job_group', - ] + fields = ['name', 'shortterm', 'slug', 'job_group',] + + labels = { + 'shortterm': _("Kürzel der Tätigkeit"), + 'job_group': _("Tätigkeitsbereich"), + } class JobGroupForm(forms.ModelForm): class Meta: model = JobGroup - fields = [ - 'name', - 'shortterm', - 'slug', - 'description', - 'is_pinned', - ] + fields = ['name', 'shortterm', 'slug', 'description', 'is_pinned',] widgets = { 'description': CKEditorUploadingWidget(config_name='default') } + + labels = { + 'shortterm': _("Kürzel des Tätigkeitsbereichs"), + 'description': _("Beschreibung des Tätigkeitsbereichs"), + 'is_pinned': _( + "Dieser Tätigkeitsbereich soll im Fachschaftsbereich angeheftet werden, damit es sofort ersichtlich ist." + ), + } diff --git a/fet2020/members/models.py b/fet2020/members/models.py index 792fafad..6f64d3d6 100644 --- a/fet2020/members/models.py +++ b/fet2020/members/models.py @@ -77,16 +77,21 @@ class JobGroupManager(models.Manager): class Member(models.Model): - firstname = models.CharField(max_length=128) - surname = models.CharField(max_length=128) - nickname = models.CharField(max_length=128) - mailaccount = models.CharField(max_length=128) + firstname = models.CharField("Vorname", max_length=128) + surname = models.CharField("Nachname", max_length=128) + nickname = models.CharField("Spitzname", max_length=128) + mailaccount = models.CharField("Mailadresse", max_length=128) class MemberRole(models.TextChoices): ACTIVE = 'A', _('Active') PENSION = 'P', _('Pension') - role = models.CharField(max_length=1, choices=MemberRole.choices, default=MemberRole.ACTIVE) + role = models.CharField( + "Rolle", + max_length=1, + choices=MemberRole.choices, + default=MemberRole.ACTIVE, + ) description = models.TextField(null=True, blank=True) image = ThumbnailerImageField(upload_to='uploads/members/image/') @@ -132,14 +137,14 @@ class JobGroup(models.Model): description = models.TextField(null=True, blank=True) - is_pinned = models.BooleanField(default=False) + is_pinned = models.BooleanField(verbose_name="ANGEHEFTET", default=False) # Managers all_jobgroups = JobGroupManager() class Meta: - verbose_name = "Tätigkeit-Gruppierung" - verbose_name_plural = "Tätigkeit-Gruppierungen" + verbose_name = "Tätigkeitsbereich" + verbose_name_plural = "Tätigkeitsbereiche" def __str__(self): return self.name diff --git a/fet2020/posts/admin.py b/fet2020/posts/admin.py index 33417518..60560e76 100644 --- a/fet2020/posts/admin.py +++ b/fet2020/posts/admin.py @@ -2,7 +2,7 @@ from django.contrib import admin, auth, messages from django.utils.translation import gettext_lazy as _ from .models import Post, Event, News, FetMeeting -from .forms import MyPostForm, MyEventForm, MyNewsForm, MyFetMeetingForm +from .forms import PostForm, EventForm, NewsForm, FetMeetingForm from documents.api import createPadifNotExists import taggit.admin @@ -57,8 +57,8 @@ def make_fetmeeting(self, request, queryset): make_fetmeeting.short_description = "In eine Fachschaftssitzung konvertieren" -class MyPostAdmin(admin.ModelAdmin): - form = MyPostForm +class PostAdmin(admin.ModelAdmin): + form = PostForm model = Post list_filter = ['is_pinned', 'is_hidden'] list_display = ['title', 'slug', 'public_date', 'is_pinned', 'is_hidden'] @@ -95,8 +95,8 @@ class MyPostAdmin(admin.ModelAdmin): ] -class MyEventAdmin(MyPostAdmin): - form = MyEventForm +class EventAdmin(PostAdmin): + form = EventForm model = Event list_filter = ['is_pinned'] list_display = ['title', 'slug', 'event_start', 'public_date', 'is_pinned'] @@ -104,23 +104,19 @@ class MyEventAdmin(MyPostAdmin): actions = [make_fetmeeting] -admin.site.register(Event, MyEventAdmin) - - -class MyNewsAdmin(MyPostAdmin): - form = MyNewsForm +class NewsAdmin(PostAdmin): + form = NewsForm model = News -admin.site.register(News, MyNewsAdmin) - - -class MyFetMeetingAdmin(MyEventAdmin): - form = MyFetMeetingForm +class FetMeetingAdmin(EventAdmin): + form = FetMeetingForm model = FetMeeting list_filter = [] list_display = ['title', 'slug', 'event_start', 'public_date'] actions = [] -admin.site.register(FetMeeting, MyFetMeetingAdmin) +admin.site.register(Event, EventAdmin) +admin.site.register(News, NewsAdmin) +admin.site.register(FetMeeting, FetMeetingAdmin) diff --git a/fet2020/posts/forms.py b/fet2020/posts/forms.py index 7e0f0765..8922e0cc 100644 --- a/fet2020/posts/forms.py +++ b/fet2020/posts/forms.py @@ -7,7 +7,7 @@ from taggit.models import Tag from .models import Post, Event, News, FetMeeting -class MyPostForm(forms.ModelForm): +class PostForm(forms.ModelForm): class Meta: model = Post fields = ['title', 'subtitle', 'tags', 'image', 'body', 'slug', 'author', 'public_date'] @@ -21,28 +21,37 @@ class MyPostForm(forms.ModelForm): ) -class MyNewsForm(MyPostForm): +class NewsForm(PostForm): class Meta: model = News fields = [ 'title', 'subtitle', 'tags', 'image', 'body', 'slug', 'author', 'public_date', 'is_pinned', 'is_hidden', ] + labels = { - 'title': _('Titel des Posts'), - 'image': _('Hintergrundbild des Posts'), - 'body': _('Beschreibung des Posts'), - 'author': _('Autor'), - 'public_date': _('Veröffentlichung'), - 'is_pinned': _('Post anheften'), - 'is_hidden': _('Post verstecken'), + 'title': _("Titel"), + 'subtitle': _("Untertitel"), + 'image': _("Hintergrundbild"), + 'body': _("Text"), + 'author': _("Autor"), + 'public_date': _("Veröffentlichung"), + 'is_pinned': _("Post anheften"), + 'is_hidden': _("Post verstecken"), } + help_texts = { + 'tags': _( + "Die Hashtags ohne '#' eintragen, und mit Komma kann man mehrere Tags anfügen." + ), + 'image': _( + "Verwendbare Formate: ..." + ), 'is_pinned': _( - 'Dieser Post soll an die Startseite als erster Post angeheftet werden.' + "Dieser Post soll an die Startseite als erster Post angeheftet werden." ), 'is_hidden': _( - 'Dieser Post soll im News Feed nicht auftauchen, z.B. Impressum.' + "Dieser Post soll im News Feed nicht auftauchen, z.B. Impressum." ), } @@ -52,27 +61,36 @@ class MyNewsForm(MyPostForm): super().__init__(*args, **kwargs) # to get the self.fields set -class MyEventForm(MyPostForm): +class EventForm(PostForm): class Meta: model = Event fields = [ 'title', 'subtitle', 'tags', 'image', 'body', 'event_start', 'event_end', 'event_place', 'slug', 'author', 'public_date', 'is_pinned', ] + labels = { - 'title': _('Titel des Events'), - 'image': _('Hintergrundbild des Posts'), - 'body': _('Beschreibung des Events'), - 'event_start': _('Start des Events'), - 'event_end': _('Ende des Events'), - 'event_place': _('Ort des Events'), - 'author': _('Autor'), - 'public_date': _('Veröffentlichung'), - 'is_pinned': _('Event anheften'), + 'title': _("Titel"), + 'subtitle': _("Untertitel"), + 'image': _("Hintergrundbild"), + 'body': _("Text"), + 'event_start': _("Start des Events"), + 'event_end': _("Ende des Events"), + 'event_place': _("Ort des Events"), + 'author': _("Autor"), + 'public_date': _("Veröffentlichung"), + 'is_pinned': _("Event anheften"), } + help_texts = { + 'tags': _( + "Die Hashtags ohne '#' eintragen, und mit Komma kann man mehrere Tags anfügen." + ), + 'image': _( + "Verwendbare Formate: " + ), 'is_pinned': _( - 'Dieses Event soll an die Startseite als erster Post angeheftet werden.' + "Dieses Event soll an die Startseite als erster Post angeheftet werden." ), } @@ -88,20 +106,25 @@ class MyEventForm(MyPostForm): self.fields['event_place'].required = True -class MyFetMeetingForm(MyEventForm): +class FetMeetingForm(EventForm): # agenda_html = forms.CharField(widget = forms.TextInput()) class Meta: model = FetMeeting fields = ['event_start', 'event_end', 'tags', 'has_agenda', 'has_protocol'] + labels = { - 'event_start': _('Start der Sitzung'), - 'event_end': _('Ende der Sitzung'), - 'has_agenda': _('Agenda'), - 'has_protocol': _('Protokoll'), + 'event_start': _("Start der Sitzung"), + 'event_end': _("Ende der Sitzung"), + 'has_agenda': _("Agenda"), + 'has_protocol': _("Protokoll"), } + help_texts = { - 'has_agenda': _('Agenda zur Sitzung hinzufügen.'), - 'has_protocol': _('Protokoll zur Sitzung hinzufügen.'), + 'tags': _( + "Die Hashtags ohne '#' eintragen, und mit Komma kann man mehrere Tags anfügen." + ), + 'has_agenda': _("Agenda zur Sitzung hinzufügen."), + 'has_protocol': _("Protokoll zur Sitzung hinzufügen."), } def __init__(self, *args, **kwargs): diff --git a/fet2020/posts/models.py b/fet2020/posts/models.py index 2185e9c0..3cd4e7cd 100644 --- a/fet2020/posts/models.py +++ b/fet2020/posts/models.py @@ -43,7 +43,7 @@ class Post(models.Model): legacy_id = models.IntegerField(null=True) legacy_rubrik_id = models.IntegerField(null=True) # Titel des Posts - title = models.CharField(max_length=200) + title = models.CharField(verbose_name="Titel", max_length=200) subtitle = models.CharField(max_length=500, null=True, blank=True) # Slug = Text Basierter url bestandteil zb Fetsitzung 22.1.2020 --> fetsitzung_22_1_2020 für Url @@ -57,7 +57,7 @@ class Post(models.Model): tags = TaggableManager(blank=True) # Datum ab dem etwas öffentlich sein soll - public_date = models.DateField('date published', null=True, blank=True, default=timezone.now) + public_date = models.DateField(verbose_name="Veröffentlichung", null=True, blank=True, default=timezone.now) imported_from = models.CharField(max_length=200, null=True, blank=True) @@ -75,8 +75,8 @@ class Post(models.Model): is_hidden = models.BooleanField(verbose_name="UNSICHTBAR", default=False) # Zusatz Info wenn ein Event gepostet wird - event_start = models.DateTimeField('Event Start', null=True, blank=True) - event_end = models.DateTimeField('Event Ende', null=True, blank=True) + event_start = models.DateTimeField(verbose_name="Event Start", null=True, blank=True) + event_end = models.DateTimeField(verbose_name="Event Ende", null=True, blank=True) event_place = models.CharField(max_length=200, null=True, blank=True) # Dokumente v.a. fuer Sitzungen diff --git a/fet2020/tasks/admin.py b/fet2020/tasks/admin.py index 2cd39c50..83c3a1d0 100644 --- a/fet2020/tasks/admin.py +++ b/fet2020/tasks/admin.py @@ -1,35 +1,29 @@ from django.contrib import admin -from .forms import TaskListForm +from .forms import TaskAdminForm, TaskListForm from .models import Task, TaskList class TaskAdmin(admin.ModelAdmin): + form = TaskAdminForm model = Task fieldsets = ( (None, { 'fields': ( 'title', 'task_list', + 'assigned_to', 'due_date', 'completed', 'completed_date', - 'assigned_to', 'note', 'priority', ) }), ) - list_display = ( - 'title', - 'task_list', - 'completed', - 'priority', - 'due_date', - 'assigned_to', - ) + + list_display = ['title', 'task_list', 'assigned_to', 'due_date', 'completed', 'priority'] list_filter = ('task_list', ) - ordering = ('priority', ) search_fields = ('title', ) def save_model(self, request, obj, form, change): diff --git a/fet2020/tasks/forms.py b/fet2020/tasks/forms.py index 22333055..4c261fb7 100644 --- a/fet2020/tasks/forms.py +++ b/fet2020/tasks/forms.py @@ -10,6 +10,27 @@ class DateInput(forms.DateInput): input_type = 'date' +class TaskAdminForm(forms.ModelForm): + class Meta: + model = Task + fields = '__all__' + + labels = { + 'title': _('Titel'), + 'task_list': _('Aufgabenbereich'), + 'due_date': _('Fälligkeit'), + 'completed': _('Abgeschlossen'), + 'completed_date': _('Datum der Fertigstellung'), + 'assigned_to': _('Zuweisen an'), + 'note': _('Notizen'), + 'priority': _('Priorität'), + } + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) # to get the self.fields set + self.fields['assigned_to'].empty_label = "Alle" + + class TaskForm(forms.ModelForm): class Meta: model = Task @@ -40,4 +61,13 @@ class TaskForm(forms.ModelForm): class TaskListForm(forms.ModelForm): - users = forms.ModelMultipleChoiceField(queryset=User.objects.all(), widget=FilteredSelectMultiple("User", is_stacked=False)) + users = forms.ModelMultipleChoiceField( + label="Benutzer", + help_text="Es können nur die Benutzer ausgewählt werden, die sich auf der Homepage angemeldet haben.", + queryset=User.objects.all(), + widget=FilteredSelectMultiple("User", is_stacked=False) + ) + + class Meta: + model = TaskList + fields = '__all__' diff --git a/fet2020/tasks/models.py b/fet2020/tasks/models.py index 8dddc863..ab4e5615 100644 --- a/fet2020/tasks/models.py +++ b/fet2020/tasks/models.py @@ -38,18 +38,22 @@ class TaskList(models.Model): objects = models.Manager() + class Meta: + verbose_name = "Auf­ga­ben­be­reich" + verbose_name_plural = "Auf­ga­ben­be­reiche" + def __str__(self): return self.name class Task(models.Model): - title = models.CharField(max_length=140) - task_list = models.ForeignKey(TaskList, on_delete=models.CASCADE, null=True) + title = models.CharField(verbose_name="Titel", max_length=140) + task_list = models.ForeignKey(TaskList, verbose_name="Aufgabenbereich", on_delete=models.CASCADE, null=True) created_date = models.DateTimeField(auto_now_add=True) - due_date = models.DateField(blank=True, null=True) + due_date = models.DateField(verbose_name="Fälligkeit", blank=True, null=True) - completed = models.BooleanField(default=False) + completed = models.BooleanField(verbose_name="Abgeschlossen", default=False) completed_date = models.DateField(blank=True, null=True) created_by = models.ForeignKey( @@ -63,14 +67,19 @@ class Task(models.Model): null=True, related_name="todo_assigned_to", on_delete=models.CASCADE, + verbose_name="Zugewiesen an", ) - note = models.TextField(blank=True, null=True) - priority = models.PositiveIntegerField(blank=True, null=True) + note = models.TextField(verbose_name="Notizen", blank=True, null=True) + priority = models.PositiveIntegerField(verbose_name="Priorität", blank=True, null=True) objects = models.Manager() taskmanager = TaskManager() + class Meta: + verbose_name = "Aufgabe" + verbose_name_plural = "Aufgaben" + def __str__(self): return self.title From e3903e6917095d29ac4b7df09bc774998e6331be Mon Sep 17 00:00:00 2001 From: Patrick Date: Sat, 24 Oct 2020 16:26:16 +0000 Subject: [PATCH 3/6] add admin-form for jobposting --- fet2020/blackboard/forms.py | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 fet2020/blackboard/forms.py diff --git a/fet2020/blackboard/forms.py b/fet2020/blackboard/forms.py new file mode 100644 index 00000000..1e4abea6 --- /dev/null +++ b/fet2020/blackboard/forms.py @@ -0,0 +1,25 @@ +from django import forms +from django.utils.translation import gettext_lazy as _ + +from .models import JobPosting + + +class JobPostingForm(forms.ModelForm): + class Meta: + model = JobPosting + fields = ['companyName', 'jobName', 'salary', 'pdfLocation', 'publishDate'] + + labels = { + 'companyName': _("Firmenname"), + 'jobName': _("Berufsbezeichnung"), + 'salary': _("Gehalt"), + 'pdfLocation': _("Stellenausschreibung"), + 'publishDate': _("Veröffentlichung"), + } + + help_texts = { + 'pdfLocation': _( + "Verwendbare Formate: PDF" + ), + 'salary': _("in Euro angeben"), + } From 494d12a98cb97a2f9f0ea986fd900781d5c6d71c Mon Sep 17 00:00:00 2001 From: Patrick Date: Sat, 24 Oct 2020 16:50:27 +0000 Subject: [PATCH 4/6] add firstname --- fet2020/members/forms.py | 2 +- fet2020/templates/members/members_list.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/fet2020/members/forms.py b/fet2020/members/forms.py index 77dc240e..11262a03 100644 --- a/fet2020/members/forms.py +++ b/fet2020/members/forms.py @@ -20,7 +20,7 @@ class MemberForm(forms.ModelForm): labels = { 'description': _("Beschreibung zu der Person"), - 'image': _("Porträt ()"), + 'image': _("Porträt"), 'birthday': _("Geburtstag"), 'phone': _("Telefonnummer"), 'address': _("Wohnadresse"), diff --git a/fet2020/templates/members/members_list.html b/fet2020/templates/members/members_list.html index 234e0b90..868a71ba 100644 --- a/fet2020/templates/members/members_list.html +++ b/fet2020/templates/members/members_list.html @@ -2,7 +2,7 @@
{% for member in members %}
-

{{member.surname}}

+

{{member.firstname}} {{member.surname}}

{% include 'members/partials/_member.html' %}
{% endfor %} From f79f261b9a3306b020e536bf21ac004e09a03655 Mon Sep 17 00:00:00 2001 From: Patrick Date: Sat, 24 Oct 2020 18:09:48 +0000 Subject: [PATCH 5/6] fix duplicated tasks were displayed, but they were not. --- fet2020/tasks/models.py | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/fet2020/tasks/models.py b/fet2020/tasks/models.py index ab4e5615..932decb8 100644 --- a/fet2020/tasks/models.py +++ b/fet2020/tasks/models.py @@ -13,18 +13,19 @@ class TaskQuerySet(models.QuerySet): class TaskManager(models.Manager): def get_tasks(self, user, completed, task_list, all_tasks): # None ... assigned to all users - qs_comp = self.get_queryset().get_ordered().filter(assigned_to=user) + qs = self.get_queryset().get_ordered().filter(assigned_to__id=user) if all_tasks: - qs_comp |= self.get_queryset().get_ordered().filter(Q(assigned_to=None) & Q(task_list__users=user)) + qs_tmp = self.get_queryset().get_ordered().filter(Q(assigned_to=None) & Q(task_list__users__id__exact=user)) + qs = (qs | qs_tmp).distinct() if not completed: - qs_comp = qs_comp.filter(completed=completed) + qs = qs.filter(completed=completed) if task_list: - qs_comp = qs_comp.filter(task_list=task_list) + qs = qs.filter(task_list=task_list) - return qs_comp + return qs def get_queryset(self): return TaskQuerySet(self.model, using=self._db) @@ -57,15 +58,15 @@ class Task(models.Model): completed_date = models.DateField(blank=True, null=True) created_by = models.ForeignKey( - settings.AUTH_USER_MODEL, - related_name="todo_created_by", + User, + related_name="created_by", on_delete=models.CASCADE, ) assigned_to = models.ForeignKey( - settings.AUTH_USER_MODEL, + User, blank=True, null=True, - related_name="todo_assigned_to", + related_name="assigned_to", on_delete=models.CASCADE, verbose_name="Zugewiesen an", ) From 32fe76f8aeae8425220fe8d3d688fcda1d78ec6c Mon Sep 17 00:00:00 2001 From: Patrick Date: Sat, 24 Oct 2020 18:30:17 +0000 Subject: [PATCH 6/6] fix member list in hashtag links --- fet2020/posts/views.py | 13 ++----------- fet2020/templates/posts/tag.html | 31 ++++++++++++++++++++----------- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/fet2020/posts/views.py b/fet2020/posts/views.py index b0c5c209..ac40ebb5 100644 --- a/fet2020/posts/views.py +++ b/fet2020/posts/views.py @@ -38,16 +38,7 @@ def tags(request, tag=""): featured_post = Post.objects.get_visible_articles().filter(slug=tag).first() members = [] - #job_names, slug_list = JobMember.jobs.get_job_names(slug=tag) - - if None: - active_members = JobMember.active_member.get_members_of_job(job_names=job_names) - - for idx, item in enumerate(job_names): - if active_members[idx]: - members.append( - (job_names[idx], active_members[idx], tag + "#" + slug_list[idx]) - ) + job_members = JobMember.active_member.get_all_by_slug(slug=tag) author_image = None if featured_post: @@ -60,7 +51,7 @@ def tags(request, tag=""): "posts": posts, "author_image": author_image, "featured_post": featured_post, - "members": None, + "job_members": job_members, "tags_list": None, } diff --git a/fet2020/templates/posts/tag.html b/fet2020/templates/posts/tag.html index 7c773635..8b116fc7 100644 --- a/fet2020/templates/posts/tag.html +++ b/fet2020/templates/posts/tag.html @@ -37,23 +37,32 @@ {% endif %}
- {% for member in members %} -

{{member.0}} #

+ + {% regroup job_members by job.name as all_jobmem_list %} -
- {% for mem in member.1 %} + {% for jobmem in all_jobmem_list %} - {% with member=mem.member %} -
-

{{member.surname}}

- {% include 'members/partials/_member.html' %} -
- {% endwith %} +
- {% endfor %} +

{{jobmem.grouper}} #

+ Aktuelle Mitglieder: + +
+ + {% for jm in jobmem.list %} + {% with member=jm.member %} +
+

{{jm.member.firstname}} {{jm.member.surname}}

+ {% include 'members/partials/_member.html' %} +
+ {% endwith %} + {% endfor %} + +
{% endfor %} +