merge
This commit is contained in:
@@ -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 {}
|
||||||
|
|||||||
@@ -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 = {
|
||||||
|
|||||||
@@ -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):
|
||||||
|
|||||||
@@ -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 = [
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|
||||||
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)
|
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,
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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],
|
||||||
|
|||||||
@@ -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)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -27,15 +27,23 @@
|
|||||||
<div>
|
<div>
|
||||||
{{ post.subtitle|default_if_none:" "|tags_to_url }}
|
{{ post.subtitle|default_if_none:" "|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>
|
||||||
|
|||||||
Reference in New Issue
Block a user