diff --git a/fet2020/members/admin.py b/fet2020/members/admin.py index 0cfe1e04..2e94f8f9 100644 --- a/fet2020/members/admin.py +++ b/fet2020/members/admin.py @@ -59,6 +59,7 @@ class MemberAdmin(admin.ModelAdmin): 'fields': ( ('firstname', 'surname',), 'nickname', + 'username', 'mailaccount', 'role', 'description', @@ -69,9 +70,10 @@ class MemberAdmin(admin.ModelAdmin): ) }), ) - list_display = ['nickname', 'firstname', 'surname', 'mailaccount', 'role'] inlines = (JobOverviewInline,) + list_display = ['nickname', 'firstname', 'surname', 'mailaccount', 'role'] + ordering = ['firstname', ] search_fields = ['firstname', 'surname', 'nickname', 'mailaccount'] list_filter = [MemberRoleFilter] @@ -97,10 +99,11 @@ class MemberAdmin(admin.ModelAdmin): class JobAdmin(admin.ModelAdmin): form = JobForm model = Job - list_display = ['name'] inlines = (ActiveMemberInline, InactiveMemberInline) - search_fields = ['name'] + list_display = ['name', ] + ordering = ['name', ] + search_fields = ['name', ] def add_view(self, request, form_url='', extra_context=None): extra_context = extra_context or {} @@ -124,10 +127,11 @@ class JobAdmin(admin.ModelAdmin): class JobGroupAdmin(admin.ModelAdmin): form = JobGroupForm model = JobGroup - list_display = ['name', 'is_pinned', ] inlines = (JobInline, ) - search_fields = ['name'] + list_display = ['name', 'is_pinned', ] + ordering = ['name', ] + search_fields = ['name', ] def add_view(self, request, form_url='', extra_context=None): extra_context = extra_context or {} diff --git a/fet2020/members/forms.py b/fet2020/members/forms.py index 11262a03..0304b5eb 100644 --- a/fet2020/members/forms.py +++ b/fet2020/members/forms.py @@ -10,8 +10,8 @@ class MemberForm(forms.ModelForm): class Meta: model = Member fields = [ - 'firstname', 'surname', 'nickname', 'mailaccount', 'role', 'description', 'image', - 'birthday', 'phone', 'address', + 'firstname', 'surname', 'nickname', 'username', 'mailaccount', 'role', 'description', + 'image', 'birthday', 'phone', 'address', ] widgets = { diff --git a/fet2020/members/models.py b/fet2020/members/models.py index 1e587eab..50da58b4 100644 --- a/fet2020/members/models.py +++ b/fet2020/members/models.py @@ -89,6 +89,7 @@ class Member(models.Model): firstname = models.CharField("Vorname", max_length=128) surname = models.CharField("Nachname", max_length=128) nickname = models.CharField("Spitzname", max_length=128) + username = models.CharField("Benutzername", blank=True, max_length=128) mailaccount = models.CharField("Mailadresse", unique=True, max_length=128) class MemberRole(models.TextChoices): diff --git a/fet2020/members/urls.py b/fet2020/members/urls.py index 16753f25..93c10b7a 100644 --- a/fet2020/members/urls.py +++ b/fet2020/members/urls.py @@ -9,7 +9,7 @@ urlpatterns = [ ] member_urlpatterns = [ - path('', views.profile_view, name='member'), + path('', views.profile_view, name='member'), ] jobs_urlpatterns = [ diff --git a/fet2020/members/views.py b/fet2020/members/views.py index 3be37b71..f8a575a0 100644 --- a/fet2020/members/views.py +++ b/fet2020/members/views.py @@ -10,6 +10,9 @@ from .serializers import MemberSerializer, JobSerializer, JobGroupSerializer, Jo from rest_framework import viewsets #from rest_framework import permissions +import logging +logger = logging.getLogger(__name__) + def __remove_if_zero_active_mem(job_group): for elem in job_group: @@ -54,7 +57,12 @@ def index(request): def jobs_view(request, slug=None): pinned_job_groups, unpinned_job_groups = __get_job_groups() - description = JobGroup.all_jobgroups.filter(slug=slug).values().first()['description'] + try: + description = JobGroup.all_jobgroups.filter(slug=slug).values().first()['description'] + except Exception as e: + logger.info("Wrong job '{}'".format(slug)) + raise Http404("wrong job") + job_members = JobMember.active_member.get_all_by_slug(slug=slug) context = { @@ -73,6 +81,7 @@ def members_view(request, filter=None): if filter in Member.MemberRole: members = deque(Member.all_members.filter(role=filter)) else: + logger.info("Wrong member role '{}'".format(filter)) raise Http404("no member role") context = { @@ -84,14 +93,15 @@ def members_view(request, filter=None): return render(request, 'members/index.html', context) -def profile_view(request, member_name=None): +def profile_view(request, member_id=None): pinned_job_groups, unpinned_job_groups = __get_job_groups() - member = Member.all_members.filter(nickname=member_name).first() + member = Member.all_members.filter(id=member_id).first() if not member: + logger.info("Wrong member id '{}'".format(member_id)) raise Http404("no member") - jobs = deque(JobMember.members.filter(member__nickname=member_name)) + jobs = deque(JobMember.members.filter(member__id=member_id)) context = { "pinned_job_groups": pinned_job_groups, diff --git a/fet2020/posts/forms.py b/fet2020/posts/forms.py index 8922e0cc..f66ec70d 100644 --- a/fet2020/posts/forms.py +++ b/fet2020/posts/forms.py @@ -59,6 +59,7 @@ class NewsForm(PostForm): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) # to get the self.fields set + self.fields['author'].queryset = self.fields['author'].queryset.order_by('username') class EventForm(PostForm): @@ -98,6 +99,7 @@ class EventForm(PostForm): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) # to get the self.fields set + self.fields['author'].queryset = self.fields['author'].queryset.order_by('username') self.fields['event_start'].required = True self.fields['event_end'].required = True @@ -129,6 +131,7 @@ class FetMeetingForm(EventForm): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) # to get the self.fields set + self.fields['author'].queryset = self.fields['author'].queryset.order_by('username') self.fields['event_start'].required = True self.fields['event_end'].required = False diff --git a/fet2020/posts/views.py b/fet2020/posts/views.py index 58e9de42..f54b4b5e 100644 --- a/fet2020/posts/views.py +++ b/fet2020/posts/views.py @@ -67,11 +67,13 @@ def show(request, id=None): elif id != "" and id is not None: p = Post.objects.get(slug=(id)) - post_author = Member.all_members.filter(nickname=p.author).first() + post_author = Member.all_members.filter(username=p.author).first() author_image = None + author = None if post_author: author_image = post_author.image['avatar'].url + author = post_author ep_agenda_link = "#" ep_protocol_link = "#" @@ -92,6 +94,7 @@ def show(request, id=None): context = { "post": p, + "author": author, "author_image": author_image, "next": get_next_dict(p), "related_posts": p.tags.similar_objects()[:6], diff --git a/fet2020/tasks/forms.py b/fet2020/tasks/forms.py index 4c261fb7..5f83602b 100644 --- a/fet2020/tasks/forms.py +++ b/fet2020/tasks/forms.py @@ -29,6 +29,7 @@ class TaskAdminForm(forms.ModelForm): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) # to get the self.fields set self.fields['assigned_to'].empty_label = "Alle" + self.fields['assigned_to'].queryset = self.fields['assigned_to'].queryset.order_by('username') class TaskForm(forms.ModelForm): @@ -58,13 +59,14 @@ class TaskForm(forms.ModelForm): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) # to get the self.fields set self.fields['assigned_to'].empty_label = "Alle" + self.fields['assigned_to'].queryset = self.fields['assigned_to'].queryset.order_by('username') class TaskListForm(forms.ModelForm): 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(), + queryset=User.objects.all().order_by('username'), widget=FilteredSelectMultiple("User", is_stacked=False) ) diff --git a/fet2020/templates/members/members_list.html b/fet2020/templates/members/members_list.html index ec252ed1..b08e431c 100644 --- a/fet2020/templates/members/members_list.html +++ b/fet2020/templates/members/members_list.html @@ -1,7 +1,7 @@
{% for member in members %} -
+

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

{% include 'members/partials/_member.html' %}
diff --git a/fet2020/templates/members/partials/_job_membership_grid.html b/fet2020/templates/members/partials/_job_membership_grid.html index 8ab289fc..aa03624b 100644 --- a/fet2020/templates/members/partials/_job_membership_grid.html +++ b/fet2020/templates/members/partials/_job_membership_grid.html @@ -1,5 +1,5 @@ -
+

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

{% include 'members/partials/_member.html' %}
diff --git a/fet2020/templates/members/partials/_member.html b/fet2020/templates/members/partials/_member.html index 1ed9d65d..aa3101d2 100644 --- a/fet2020/templates/members/partials/_member.html +++ b/fet2020/templates/members/partials/_member.html @@ -1,5 +1,5 @@ {# only thumb and name of member #} - +