fix description and image. New member can be created after log in.
This commit is contained in:
@@ -78,7 +78,6 @@ class MemberAdmin(admin.ModelAdmin):
|
|||||||
"surname",
|
"surname",
|
||||||
),
|
),
|
||||||
"nickname",
|
"nickname",
|
||||||
"username",
|
|
||||||
"mailaccount",
|
"mailaccount",
|
||||||
"role",
|
"role",
|
||||||
"description",
|
"description",
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import logging
|
import logging
|
||||||
|
|
||||||
|
from django.conf import settings
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
from django.core.validators import ValidationError, validate_email
|
from django.core.validators import ValidationError, validate_email
|
||||||
from django.db import models
|
from django.db import models
|
||||||
@@ -31,7 +32,7 @@ class Member(models.Model):
|
|||||||
nickname = models.CharField("Spitzname", max_length=128)
|
nickname = models.CharField("Spitzname", max_length=128)
|
||||||
|
|
||||||
# LDAP Username
|
# LDAP Username
|
||||||
username = models.CharField("fet.at Benutzername", max_length=128, blank=True)
|
username = models.CharField(max_length=128)
|
||||||
|
|
||||||
# fet mail account
|
# fet mail account
|
||||||
mailaccount = models.CharField(
|
mailaccount = models.CharField(
|
||||||
@@ -106,6 +107,38 @@ class Member(models.Model):
|
|||||||
def get_model_name(self):
|
def get_model_name(self):
|
||||||
return self._meta.model_name
|
return self._meta.model_name
|
||||||
|
|
||||||
|
@property
|
||||||
|
def image_url(self):
|
||||||
|
if self.image:
|
||||||
|
return self.image.url
|
||||||
|
|
||||||
|
# return default image
|
||||||
|
return settings.STATIC_URL + "img/FET-Logo-2014-quadrat.png"
|
||||||
|
|
||||||
|
@property
|
||||||
|
def avatar_url(self):
|
||||||
|
if self.image:
|
||||||
|
return self.image["avatar"].url
|
||||||
|
|
||||||
|
# return default image
|
||||||
|
return settings.STATIC_URL + "img/FET-Logo-2014-quadrat.png"
|
||||||
|
|
||||||
|
@property
|
||||||
|
def portrait_url(self):
|
||||||
|
if self.image:
|
||||||
|
return self.image["portrait"].url
|
||||||
|
|
||||||
|
# return default image
|
||||||
|
return settings.STATIC_URL + "img/FET-Logo-2014-quadrat.png"
|
||||||
|
|
||||||
|
@property
|
||||||
|
def thumb_url(self):
|
||||||
|
if self.image:
|
||||||
|
return self.image["thumb"].url
|
||||||
|
|
||||||
|
# return default image
|
||||||
|
return settings.STATIC_URL + "img/FET-Logo-2014-quadrat.png"
|
||||||
|
|
||||||
|
|
||||||
class JobGroup(models.Model):
|
class JobGroup(models.Model):
|
||||||
name = models.CharField(max_length=128)
|
name = models.CharField(max_length=128)
|
||||||
|
|||||||
@@ -125,7 +125,7 @@ class PostDetailView(DetailView):
|
|||||||
post_author = Member.all_members.filter(username=self.object.author).first()
|
post_author = Member.all_members.filter(username=self.object.author).first()
|
||||||
if post_author:
|
if post_author:
|
||||||
author = post_author
|
author = post_author
|
||||||
author_image = post_author.image["avatar"].url
|
author_image = post_author.avatar_url
|
||||||
|
|
||||||
related_posts = self.object.tags.similar_objects()
|
related_posts = self.object.tags.similar_objects()
|
||||||
# list of non 'is_hidden' posts for related_posts
|
# list of non 'is_hidden' posts for related_posts
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
{% for jm in jobmem.list %}
|
{% for jm in jobmem.list %}
|
||||||
<figure>
|
<figure>
|
||||||
<a href="{{ jm.member.get_absolute_url }}">
|
<a href="{{ jm.member.get_absolute_url }}">
|
||||||
<img loading="lazy" src="{{ jm.member.image.thumb.url }}" alt="Portraitfoto von {{ jm.member.firstname }}" class="w-36 h-36 bg-white">
|
<img loading="lazy" src="{{ jm.member.thumb_url }}" alt="Portraitfoto von {{ jm.member.firstname }}" class="w-36 h-36 bg-white">
|
||||||
<figcaption>
|
<figcaption>
|
||||||
<h4 class="member-name">{{ jm.member.firstname }} {{ jm.member.surname }}</h4>
|
<h4 class="member-name">{{ jm.member.firstname }} {{ jm.member.surname }}</h4>
|
||||||
<p class="member-role">{{ jm.get_job_role_display }}</p>
|
<p class="member-role">{{ jm.get_job_role_display }}</p>
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
{% block title %}{{ member.firstname }} {{ member.surname }}{% endblock %}
|
{% block title %}{{ member.firstname }} {{ member.surname }}{% endblock %}
|
||||||
|
|
||||||
{% block extraheader %}
|
{% block extraheader %}
|
||||||
<meta content="{{member.image.url}}" property="og:image">
|
<meta content="{{ member.image_url }}" property="og:image">
|
||||||
<meta content="{{ member.firstname }}" property="og:profile:first_name">
|
<meta content="{{ member.firstname }}" property="og:profile:first_name">
|
||||||
<meta content="{{ member.surname }}" property="og:profile:last_name">
|
<meta content="{{ member.surname }}" property="og:profile:last_name">
|
||||||
<meta content="profile" property="og:type">
|
<meta content="profile" property="og:type">
|
||||||
@@ -15,16 +15,18 @@
|
|||||||
<section class="flex-grow w-full max-w-prose my-8 sm:my-0 text-gray-800 dark:text-gray-300">
|
<section class="flex-grow w-full max-w-prose my-8 sm:my-0 text-gray-800 dark:text-gray-300">
|
||||||
<!-- Alternativtext auf jede Person anpassen: Name im alt="" dynamisch erzeugen -->
|
<!-- Alternativtext auf jede Person anpassen: Name im alt="" dynamisch erzeugen -->
|
||||||
<div>
|
<div>
|
||||||
<img loading="lazy" src="{{ member.image.portrait.url }}" alt="Portraitfoto von {{ member.firstname }} {{ member.surname }}" class="md:float-left w-36 mr-2 mb-2">
|
<img loading="lazy" src="{{ member.portrait_url }}" alt="Portraitfoto von {{ member.firstname }} {{ member.surname }}" class="md:float-left w-36 mr-2 mb-2">
|
||||||
<div>
|
<div>
|
||||||
<h2 class="mb-2 text-lg text-gray-900 dark:text-gray-100 text-left">{{ member.firstname }} {{ member.surname }}</h2>
|
<h2 class="mb-2 text-lg text-gray-900 dark:text-gray-100 text-left">{{ member.firstname }} {{ member.surname }}</h2>
|
||||||
<div class="mb-2">
|
<div class="mb-2">
|
||||||
Spitzname: {{ member.nickname }}<br>
|
Spitzname: {{ member.nickname }}<br>
|
||||||
Mailaccount: {{ member.mailaccount }}<br>
|
Mailaccount: {{ member.mailaccount }}<br>
|
||||||
</div>
|
</div>
|
||||||
<div class="mb-2">
|
{% if member.description %}
|
||||||
{{ member.description|softhyphen|safe }}
|
<div class="mb-2">
|
||||||
</div>
|
{{ member.description|softhyphen|safe }}
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
{% if active_jobs or inactive_jobs %}
|
{% if active_jobs or inactive_jobs %}
|
||||||
<div x-data="collapseContent" class="clear-left">
|
<div x-data="collapseContent" class="clear-left">
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
{% for member in members %}
|
{% for member in members %}
|
||||||
<figure>
|
<figure>
|
||||||
<a href="{{ member.get_absolute_url }}">
|
<a href="{{ member.get_absolute_url }}">
|
||||||
<img loading="lazy" src="{{ member.image.thumb.url }}" alt="Portraitfoto von {{ member.firstname }}" class="w-36 h-36 bg-white">
|
<img loading="lazy" src="{{ member.thumb_url }}" alt="Portraitfoto von {{ member.firstname }}" class="w-36 h-36 bg-white">
|
||||||
<figcaption>
|
<figcaption>
|
||||||
<h3>{{ member.firstname }} {{ member.surname }}</h3>
|
<h3>{{ member.firstname }} {{ member.surname }}</h3>
|
||||||
</figcaption>
|
</figcaption>
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<a class="flex gap-x-4 group" href="{{ result.get_absolute_url }}">
|
<a class="flex gap-x-4 group" href="{{ result.get_absolute_url }}">
|
||||||
<div class="flex-none w-20 rounded-full aspect-square bg-center bg-no-repeat bg-cover bg-gray-300 dark:bg-gray-700" style="background-image: url('{{ result.image.url }}')"></div>
|
<div class="flex-none w-20 rounded-full aspect-square bg-center bg-no-repeat bg-cover bg-gray-300 dark:bg-gray-700" style="background-image: url('{{ result.image_url }}')"></div>
|
||||||
<article class="flex-grow-0 self-center">
|
<article class="flex-grow-0 self-center">
|
||||||
<h2 class="line-clamp-1 hover:underline decoration-1 text-gray-800 dark:text-gray-200 font-medium">{{ result.firstname }} {{ result.surname }}</h2>
|
<h2 class="line-clamp-1 hover:underline decoration-1 text-gray-800 dark:text-gray-200 font-medium">{{ result.firstname }} {{ result.surname }}</h2>
|
||||||
<ul class="text-gray-700 dark:text-gray-300 text-sm sm:text-base">
|
<ul class="text-gray-700 dark:text-gray-300 text-sm sm:text-base">
|
||||||
|
|||||||
Reference in New Issue
Block a user