This commit is contained in:
2020-12-11 22:30:28 +00:00
12 changed files with 53 additions and 22 deletions

View File

@@ -59,6 +59,7 @@ class MemberAdmin(admin.ModelAdmin):
'fields': ( 'fields': (
('firstname', 'surname',), ('firstname', 'surname',),
'nickname', 'nickname',
'username',
'mailaccount', 'mailaccount',
'role', 'role',
'description', 'description',
@@ -69,9 +70,10 @@ class MemberAdmin(admin.ModelAdmin):
) )
}), }),
) )
list_display = ['nickname', 'firstname', 'surname', 'mailaccount', 'role']
inlines = (JobOverviewInline,) inlines = (JobOverviewInline,)
list_display = ['nickname', 'firstname', 'surname', 'mailaccount', 'role']
ordering = ['firstname', ]
search_fields = ['firstname', 'surname', 'nickname', 'mailaccount'] search_fields = ['firstname', 'surname', 'nickname', 'mailaccount']
list_filter = [MemberRoleFilter] list_filter = [MemberRoleFilter]
@@ -97,10 +99,11 @@ class MemberAdmin(admin.ModelAdmin):
class JobAdmin(admin.ModelAdmin): class JobAdmin(admin.ModelAdmin):
form = JobForm form = JobForm
model = Job model = Job
list_display = ['name']
inlines = (ActiveMemberInline, InactiveMemberInline) inlines = (ActiveMemberInline, InactiveMemberInline)
search_fields = ['name'] list_display = ['name', ]
ordering = ['name', ]
search_fields = ['name', ]
def add_view(self, request, form_url='', extra_context=None): def add_view(self, request, form_url='', extra_context=None):
extra_context = extra_context or {} extra_context = extra_context or {}
@@ -124,10 +127,11 @@ class JobAdmin(admin.ModelAdmin):
class JobGroupAdmin(admin.ModelAdmin): class JobGroupAdmin(admin.ModelAdmin):
form = JobGroupForm form = JobGroupForm
model = JobGroup model = JobGroup
list_display = ['name', 'is_pinned', ]
inlines = (JobInline, ) 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): def add_view(self, request, form_url='', extra_context=None):
extra_context = extra_context or {} extra_context = extra_context or {}

View File

@@ -10,8 +10,8 @@ class MemberForm(forms.ModelForm):
class Meta: class Meta:
model = Member model = Member
fields = [ fields = [
'firstname', 'surname', 'nickname', 'mailaccount', 'role', 'description', 'image', 'firstname', 'surname', 'nickname', 'username', 'mailaccount', 'role', 'description',
'birthday', 'phone', 'address', 'image', 'birthday', 'phone', 'address',
] ]
widgets = { widgets = {

View File

@@ -89,6 +89,7 @@ class Member(models.Model):
firstname = models.CharField("Vorname", max_length=128) firstname = models.CharField("Vorname", max_length=128)
surname = models.CharField("Nachname", max_length=128) surname = models.CharField("Nachname", max_length=128)
nickname = models.CharField("Spitzname", 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) mailaccount = models.CharField("Mailadresse", unique=True, max_length=128)
class MemberRole(models.TextChoices): class MemberRole(models.TextChoices):

View File

@@ -9,7 +9,7 @@ urlpatterns = [
] ]
member_urlpatterns = [ member_urlpatterns = [
path('<str:member_name>', views.profile_view, name='member'), path('<str:member_id>', views.profile_view, name='member'),
] ]
jobs_urlpatterns = [ jobs_urlpatterns = [

View File

@@ -10,6 +10,9 @@ from .serializers import MemberSerializer, JobSerializer, JobGroupSerializer, Jo
from rest_framework import viewsets from rest_framework import viewsets
#from rest_framework import permissions #from rest_framework import permissions
import logging
logger = logging.getLogger(__name__)
def __remove_if_zero_active_mem(job_group): def __remove_if_zero_active_mem(job_group):
for elem in job_group: for elem in job_group:
@@ -54,7 +57,12 @@ def index(request):
def jobs_view(request, slug=None): def jobs_view(request, slug=None):
pinned_job_groups, unpinned_job_groups = __get_job_groups() pinned_job_groups, unpinned_job_groups = __get_job_groups()
try:
description = JobGroup.all_jobgroups.filter(slug=slug).values().first()['description'] 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) job_members = JobMember.active_member.get_all_by_slug(slug=slug)
context = { context = {
@@ -73,6 +81,7 @@ def members_view(request, filter=None):
if filter in Member.MemberRole: if filter in Member.MemberRole:
members = deque(Member.all_members.filter(role=filter)) members = deque(Member.all_members.filter(role=filter))
else: else:
logger.info("Wrong member role '{}'".format(filter))
raise Http404("no member role") raise Http404("no member role")
context = { context = {
@@ -84,14 +93,15 @@ def members_view(request, filter=None):
return render(request, 'members/index.html', context) 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() 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: if not member:
logger.info("Wrong member id '{}'".format(member_id))
raise Http404("no member") raise Http404("no member")
jobs = deque(JobMember.members.filter(member__nickname=member_name)) jobs = deque(JobMember.members.filter(member__id=member_id))
context = { context = {
"pinned_job_groups": pinned_job_groups, "pinned_job_groups": pinned_job_groups,

View File

@@ -59,6 +59,7 @@ class NewsForm(PostForm):
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs) # to get the self.fields set super().__init__(*args, **kwargs) # to get the self.fields set
self.fields['author'].queryset = self.fields['author'].queryset.order_by('username')
class EventForm(PostForm): class EventForm(PostForm):
@@ -98,6 +99,7 @@ class EventForm(PostForm):
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs) # to get the self.fields set 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_start'].required = True
self.fields['event_end'].required = True self.fields['event_end'].required = True
@@ -129,6 +131,7 @@ class FetMeetingForm(EventForm):
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs) # to get the self.fields set 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_start'].required = True
self.fields['event_end'].required = False self.fields['event_end'].required = False

View File

@@ -67,11 +67,13 @@ def show(request, id=None):
elif id != "" and id is not None: elif id != "" and id is not None:
p = Post.objects.get(slug=(id)) 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_image = None
author = None
if post_author: if post_author:
author_image = post_author.image['avatar'].url author_image = post_author.image['avatar'].url
author = post_author
ep_agenda_link = "#" ep_agenda_link = "#"
ep_protocol_link = "#" ep_protocol_link = "#"
@@ -92,6 +94,7 @@ def show(request, id=None):
context = { context = {
"post": p, "post": p,
"author": author,
"author_image": author_image, "author_image": author_image,
"next": get_next_dict(p), "next": get_next_dict(p),
"related_posts": p.tags.similar_objects()[:6], "related_posts": p.tags.similar_objects()[:6],

View File

@@ -29,6 +29,7 @@ class TaskAdminForm(forms.ModelForm):
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs) # to get the self.fields set super().__init__(*args, **kwargs) # to get the self.fields set
self.fields['assigned_to'].empty_label = "Alle" self.fields['assigned_to'].empty_label = "Alle"
self.fields['assigned_to'].queryset = self.fields['assigned_to'].queryset.order_by('username')
class TaskForm(forms.ModelForm): class TaskForm(forms.ModelForm):
@@ -58,13 +59,14 @@ class TaskForm(forms.ModelForm):
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs) # to get the self.fields set super().__init__(*args, **kwargs) # to get the self.fields set
self.fields['assigned_to'].empty_label = "Alle" self.fields['assigned_to'].empty_label = "Alle"
self.fields['assigned_to'].queryset = self.fields['assigned_to'].queryset.order_by('username')
class TaskListForm(forms.ModelForm): class TaskListForm(forms.ModelForm):
users = forms.ModelMultipleChoiceField( users = forms.ModelMultipleChoiceField(
label="Benutzer", label="Benutzer",
help_text="Es können nur die Benutzer ausgewählt werden, die sich auf der Homepage angemeldet haben.", 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) widget=FilteredSelectMultiple("User", is_stacked=False)
) )

View File

@@ -1,7 +1,7 @@
<div class="grid-x align-bottom"> <div class="grid-x align-bottom">
{% for member in members %} {% for member in members %}
<div class="cell large-2 medium-3 small-6 padding-right-1"> <div class="cell large-2 medium-3 small-6 padding-right-1" style="text-align: center">
<h2>{{member.firstname}} {{member.surname}}</h2> <h2>{{member.firstname}} {{member.surname}}</h2>
{% include 'members/partials/_member.html' %} {% include 'members/partials/_member.html' %}
</div> </div>

View File

@@ -1,5 +1,5 @@
<div class="cell medium-3 large-2 small-6 padding-right-1"> <div class="cell medium-3 large-2 small-6 padding-right-1" style="text-align: center">
<h2>{{member.firstname}} {{member.surname}}</h2> <h2>{{member.firstname}} {{member.surname}}</h2>
{% include 'members/partials/_member.html' %} {% include 'members/partials/_member.html' %}
<br> <br>

View File

@@ -1,5 +1,5 @@
{# only thumb and name of member #} {# only thumb and name of member #}
<a class="thumbnail member-thumb" href="{% url 'member' member.nickname %}" style="width:150px;height:150px"> <a class="thumbnail member-thumb" href="{% url 'member' member.id %}" style="width:150px;height:150px">
<img src="{{member.image.thumb.url}}" alt="" /> <img src="{{member.image.thumb.url}}" alt="" />
<div class="thumb-layer"> <div class="thumb-layer">
<div> <div>

View File

@@ -27,15 +27,23 @@
<div> <div>
{{ post.subtitle|default_if_none:"&nbsp;"|tags_to_url }} {{ post.subtitle|default_if_none:"&nbsp;"|tags_to_url }}
</div> </div>
{% if post.author %} {% if author_image and author %}
<div class="article-author"><a href="{% url 'member' post.author %}"> <div class="article-author">
<img src="{{ author_image }}" alt="" /> {{ post.author }} <a href="{% url 'member' author.id %}">
<img src="{{ author_image }}" alt="" /> {{ author.firstname }}
</a>
</div>
{% elif post.author %}
<div class="article-author">
<a href="">
<img src="" alt="" /> {{ post.author }}
</a> </a>
</div> </div>
{% else %} {% else %}
<div class="article-author"><a href=""> <div class="article-author">
<a href="">
<img src="" alt="" /> <img src="" alt="" />
{{ post.author }}</a> </a>
</div> </div>
{% endif %} {% endif %}
</div> </div>