add FileUpload to admin and view

This commit is contained in:
2021-06-16 09:54:52 +00:00
committed by Patrick Mayr
parent 95e9e9e016
commit 7c9a68dbd9
6 changed files with 61 additions and 10 deletions

View File

@@ -2,7 +2,7 @@ from django.contrib import admin
from django.db.models import F from django.db.models import F
from .models import TopicGroup, Topic, Documentation, Document, FileUpload from .models import TopicGroup, Topic, Documentation, Document, FileUpload
from .forms import TopicGroupAdminForm, TopicAdminForm, DocumentationAdminForm, DocumentAdminForm from .forms import TopicGroupAdminForm, TopicAdminForm, DocumentationAdminForm, DocumentAdminForm, FileUploadAdminForm
class DocumentationInline(admin.TabularInline): class DocumentationInline(admin.TabularInline):
@@ -20,6 +20,13 @@ class FileUploadInline(admin.TabularInline):
verbose_name_plural = "Do­ku­men­ten­samm­lung" verbose_name_plural = "Do­ku­men­ten­samm­lung"
class DocumentInline(admin.TabularInline):
model = Document
extra = 0
verbose_name = "Dokument"
verbose_name_plural = "Do­ku­men­ten­samm­lung"
class TopicInline(admin.TabularInline): class TopicInline(admin.TabularInline):
model = Topic model = Topic
form = TopicAdminForm form = TopicAdminForm
@@ -61,6 +68,7 @@ class TopicAdmin(admin.ModelAdmin):
class DocumentationAdmin(admin.ModelAdmin): class DocumentationAdmin(admin.ModelAdmin):
form = DocumentationAdminForm form = DocumentationAdminForm
model = Documentation model = Documentation
inlines = (DocumentInline, FileUploadInline, )
list_display = ["title", "topic",] list_display = ["title", "topic",]
@@ -82,7 +90,20 @@ class DocumentAdmin(admin.ModelAdmin):
super().save_model(request, obj, form, change) super().save_model(request, obj, form, change)
class FileUploadAdmin(admin.ModelAdmin):
form = FileUploadAdminForm
model = FileUpload
list_filter = ["documentation",]
list_display = ["title", "documentation",]
def save_model(self, request, obj, form, change):
obj.created_by = request.user
super().save_model(request, obj, form, change)
admin.site.register(TopicGroup, TopicGroupAdmin) admin.site.register(TopicGroup, TopicGroupAdmin)
admin.site.register(Topic, TopicAdmin) admin.site.register(Topic, TopicAdmin)
#admin.site.register(Documentation, DocumentationAdmin) admin.site.register(Documentation, DocumentationAdmin)
admin.site.register(Document, DocumentAdmin) admin.site.register(Document, DocumentAdmin)
admin.site.register(FileUpload, FileUploadAdmin)

View File

@@ -2,7 +2,7 @@ from ckeditor_uploader.widgets import CKEditorUploadingWidget
from django import forms from django import forms
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
from .models import TopicGroup, Topic, Documentation, Document from .models import TopicGroup, Topic, Documentation, Document, FileUpload
class DateInput(forms.DateInput): class DateInput(forms.DateInput):
@@ -38,9 +38,9 @@ class DocumentationAdminForm(forms.ModelForm):
fields = [ fields = [
"title", "title",
"slug", "slug",
"topic",
"placeholder", "placeholder",
"description", "description",
"topic",
] ]
widgets = {"description": CKEditorUploadingWidget(config_name="default")} widgets = {"description": CKEditorUploadingWidget(config_name="default")}
@@ -55,6 +55,16 @@ class DocumentAdminForm(forms.ModelForm):
] ]
class FileUploadAdminForm(forms.ModelForm):
class Meta:
model = FileUpload
fields = [
"title",
"file_field",
"documentation",
]
class DocumentForm(forms.ModelForm): class DocumentForm(forms.ModelForm):
class Meta: class Meta:
model = Document model = Document

View File

@@ -132,6 +132,7 @@ class Document(models.Model):
class FileUpload(models.Model): class FileUpload(models.Model):
title = models.CharField(verbose_name="Titel", max_length=128) title = models.CharField(verbose_name="Titel", max_length=128)
file_field = models.FileField(verbose_name="Dokument", upload_to="uploads/intern/files/") file_field = models.FileField(verbose_name="Dokument", upload_to="uploads/intern/files/")
date = models.DateField(verbose_name="Datum", default=date.today)
documentation = models.ForeignKey(Documentation, on_delete=models.CASCADE) documentation = models.ForeignKey(Documentation, on_delete=models.CASCADE)

View File

@@ -9,7 +9,7 @@ from documents.etherpadlib import add_ep_cookie
from collections import deque from collections import deque
from .forms import DocumentForm from .forms import DocumentForm
from .models import TopicGroup, Topic, Documentation, Document from .models import TopicGroup, Topic, Documentation, Document, FileUpload
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@@ -65,6 +65,8 @@ def show_docu(request, topic_slug=None, slug=None):
form = DocumentForm(initial=initial) form = DocumentForm(initial=initial)
files = deque(FileUpload.objects.filter(documentation=active_docu))
docus = deque(Document.objects.filter(documentation=active_docu).order_by('-date')) docus = deque(Document.objects.filter(documentation=active_docu).order_by('-date'))
documents = deque([]) documents = deque([])
@@ -83,6 +85,7 @@ def show_docu(request, topic_slug=None, slug=None):
"active_topic": active_topic, "active_topic": active_topic,
"active_docu": active_docu, "active_docu": active_docu,
"documents": documents, "documents": documents,
"files": files,
} }
response = render(request, "intern/docu.html", context) response = render(request, "intern/docu.html", context)

View File

@@ -2,7 +2,7 @@
{% block content %} {% block content %}
<div class="grid-container"> <div class="grid-container">
<div class="grid-x grid-padding-x padding-top-1"> <div class="grid-x grid-padding-x">
<div class="cell large-2 medium-4 small-6"> <div class="cell large-2 medium-4 small-6">
<a href="{% url 'intern' %}"> <a href="{% url 'intern' %}">
<div class="internheader"> <div class="internheader">
@@ -31,10 +31,11 @@
<div class="intern-hero"> <div class="intern-hero">
{% if active_docu.description %} {% if active_docu.description %}
<div class="padding-top-1 padding-left-1 padding-right-1"> <div class="padding-top-1 padding-left-1 padding-right-1">
<a href="{% url 'admin:intern_topic_change' active_topic.id %}">Beschreibung bearbeiten</a>
<hr>
{{ active_docu.description|safe }} {{ active_docu.description|safe }}
<hr>
</div> </div>
<hr>
{% endif %} {% endif %}
<form action="" method="post"> <form action="" method="post">
@@ -78,6 +79,19 @@
</div> </div>
</a> </a>
{% endfor %} {% endfor %}
{% for file in files %}
<a href="{{ file.file_field.url }}" target="_blank">
<div class="news-hero-compact">
<div class="news-hero-compact-text">
<p style="margin-bottom: 0rem;"><i class="far fa-file"></i> {{ file.title }}</p>
</div>
<div class="news-hero-compact-right">
<p style="margin-bottom: 0rem;">{{ file.date }}</p>
</div>
</div>
</a>
{% endfor %}
</div> </div>
</div> </div>
</div> </div>

View File

@@ -2,7 +2,7 @@
{% block content %} {% block content %}
<div class="grid-container"> <div class="grid-container">
<div class="grid-x grid-padding-x padding-top-1"> <div class="grid-x grid-padding-x">
<div class="cell large-2 medium-4 small-6"> <div class="cell large-2 medium-4 small-6">
<a href="{% url 'intern' %}"> <a href="{% url 'intern' %}">
<div class="internheader"> <div class="internheader">
@@ -23,9 +23,11 @@
<div class="intern-hero"> <div class="intern-hero">
{% if active_topic.description %} {% if active_topic.description %}
<div class="padding-top-1 padding-left-1 padding-right-1"> <div class="padding-top-1 padding-left-1 padding-right-1">
<a href="{% url 'admin:intern_topic_change' active_topic.id %}">Beschreibung bearbeiten</a>
<hr>
{{ active_topic.description|safe }} {{ active_topic.description|safe }}
<hr>
</div> </div>
<hr>
{% endif %} {% endif %}
<div class="grid-x grid-padding-x"> <div class="grid-x grid-padding-x">