diff --git a/fet2020/intern/forms.py b/fet2020/intern/forms.py index 3f98ad9a..f881efc0 100644 --- a/fet2020/intern/forms.py +++ b/fet2020/intern/forms.py @@ -1,7 +1,9 @@ from ckeditor_uploader.widgets import CKEditorUploadingWidget from django import forms +from django.forms.widgets import HiddenInput from django.utils.translation import gettext_lazy as _ +from tasks.models import Task, TaskList from .models import TopicGroup, Topic, Documentation, Etherpad, FileUpload @@ -16,8 +18,15 @@ class TopicGroupAdminForm(forms.ModelForm): "title", "slug", "order", + "short_description", ] + labels = { + "title": _("Titel"), + "slug": _("Permalink"), + "short_description": _("Kurzbeschreibung"), + } + class TopicAdminForm(forms.ModelForm): class Meta: @@ -25,12 +34,19 @@ class TopicAdminForm(forms.ModelForm): fields = [ "title", "slug", - "archive", - "description", "topic_group", "task_list", + "archive", + "description", ] + labels = { + "title": _("Titel"), + "slug": _("Permalink"), + "task_list": _("Aufgabenbereich"), + "description": _("Beschreibung"), + } + widgets = {"description": CKEditorUploadingWidget(config_name="default")} @@ -44,6 +60,12 @@ class DocumentationAdminForm(forms.ModelForm): "description", ] + labels = { + "title": _("Titel"), + "slug": _("Permalink"), + "description": _("Beschreibung"), + } + widgets = {"description": CKEditorUploadingWidget(config_name="default")} @@ -52,8 +74,8 @@ class EtherpadAdminForm(forms.ModelForm): model = Etherpad fields = [ "title", - "documentation", "date", + "documentation", ] @@ -75,6 +97,11 @@ class TopicInlineForm(forms.ModelForm): "slug", ] + labels = { + "title": _("Titel"), + "slug": _("Permalink"), + } + class DocumentationInlineForm(forms.ModelForm): class Meta: @@ -84,16 +111,26 @@ class DocumentationInlineForm(forms.ModelForm): "slug", ] + labels = { + "title": _("Titel"), + "slug": _("Permalink"), + } + class EtherpadInlineForm(forms.ModelForm): class Meta: model = Etherpad fields = [ "title", - "documentation", "date", + "documentation", ] + labels = { + "title": _("Titel"), + "date": _("Datum"), + } + class FileUploadInlineForm(forms.ModelForm): class Meta: @@ -103,6 +140,96 @@ class FileUploadInlineForm(forms.ModelForm): "file_field", ] + labels = { + "title": _("Titel"), + } + + +class TopicCreateForm(forms.ModelForm): + class Meta: + model = Topic + fields = [ + "title", + "slug", + "description", + "topic_group", + ] + + labels = { + "title": _("Titel"), + "slug": _("Permalink"), + "description": _("Beschreibung"), + } + + widgets = { + "topic_group": HiddenInput, + } + + +class TopicUpdateForm(forms.ModelForm): + class Meta: + model = Topic + fields = [ + "title", + "slug", + "description", + "topic_group", + ] + + labels = { + "title": _("Titel"), + "slug": _("Permalink"), + "description": _("Beschreibung"), + } + + widgets = { + "topic_group": HiddenInput, + } + + +class DocumentationCreateForm(forms.ModelForm): + class Meta: + model = Documentation + + fields = [ + "title", + "slug", + "description", + "topic", + ] + + labels = { + "title": _("Titel"), + "slug": _("Permalink"), + "description": _("Beschreibung"), + } + + widgets = { + "topic": HiddenInput, + } + + +class DocumentationUpdateForm(forms.ModelForm): + class Meta: + model = Documentation + + fields = [ + "title", + "slug", + "description", + "topic", + ] + + labels = { + "title": _("Titel"), + "slug": _("Permalink"), + "description": _("Beschreibung"), + } + + widgets = { + "topic": HiddenInput, + } + class EtherpadForm(forms.ModelForm): class Meta: @@ -120,7 +247,8 @@ class EtherpadForm(forms.ModelForm): } widgets = { - "date": DateInput(format=("%d-%m-%Y")), + "date": DateInput(format=("%Y-%m-%d")), + "documentation": HiddenInput, } @@ -132,3 +260,7 @@ class FileUploadForm(forms.ModelForm): "file_field", "documentation", ] + + widgets = { + "documentation": HiddenInput, + } diff --git a/fet2020/intern/models.py b/fet2020/intern/models.py index 57538c24..59c5b42b 100644 --- a/fet2020/intern/models.py +++ b/fet2020/intern/models.py @@ -19,6 +19,8 @@ class TopicGroup(models.Model): title = models.CharField(verbose_name="Titel", max_length=128) slug = models.SlugField(max_length=10, unique=True) + short_description = models.TextField(null=True, blank=True) + order = models.PositiveSmallIntegerField( verbose_name="Reihenfolge", unique=True, null=True, blank=True ) @@ -34,7 +36,7 @@ class TopicGroup(models.Model): return self.title def get_absolute_url(self): - return reverse("intern") + "#" + self.slug + return reverse("intern:index") + "#" + self.slug def save(self, *args, **kwargs): if not self.slug: @@ -68,7 +70,7 @@ class Topic(models.Model): return self.title def get_absolute_url(self): - return reverse("topic", kwargs={"slug": self.slug}) + return reverse("intern:topic", kwargs={"slug": self.slug}) def save(self, *args, **kwargs): if not self.slug: @@ -107,7 +109,7 @@ class Documentation(models.Model): "slug": self.slug, } - return reverse("docu", kwargs=kwargs) + return reverse("intern:docu", kwargs=kwargs) def save(self, *args, **kwargs): if not self.slug: @@ -118,6 +120,8 @@ class Documentation(models.Model): class Etherpad(models.Model): title = models.CharField(verbose_name="Titel", max_length=128) + slug = models.SlugField(null=True, blank=True) + etherpad_key = models.CharField(max_length=50, blank=True) date = models.DateField(verbose_name="Datum", default=date.today) @@ -143,11 +147,14 @@ class Etherpad(models.Model): + "-" + self.documentation.slug + "-" - + slugify(self.title) + + self.slug ) def clean(self): - pad_name = slugify(self.__get_pad_name()) + if not self.slug: + self.slug = slugify(self.title) + + pad_name = self.__get_pad_name() if len(pad_name) > 50: raise ValidationError( diff --git a/fet2020/intern/urls.py b/fet2020/intern/urls.py index 1edc2c2f..11a166f1 100644 --- a/fet2020/intern/urls.py +++ b/fet2020/intern/urls.py @@ -1,13 +1,45 @@ from django.urls import path +from . import apps from . import views -from .views import EtherpadCreateView, FileUploadCreateView +from .views import ( + DocumentationCreateView, + DocumentationUpdateView, + EtherpadCreateView, + FileUploadCreateView, + TaskCreateView, + TopicCreateView, + TopicUpdateView, +) +app_name = apps.InternConfig.name + urlpatterns = [ - path("", views.index, name="intern"), + path("", views.index, name="index"), + path( + "/topic-create/", + TopicCreateView.as_view(), + name="topic-create", + ), path("/", views.show_topic, name="topic"), + path( + "/update/", + TopicUpdateView.as_view(), + name="topic-update", + ), + path( + "/docu-create/", + DocumentationCreateView.as_view(), + name="docu-create", + ), + path("/create/", TaskCreateView.as_view(), name="task-create"), path("//", views.show_docu, name="docu"), + path( + "//update/", + DocumentationUpdateView.as_view(), + name="docu-update", + ), path( "//etherpad-create/", EtherpadCreateView.as_view(), diff --git a/fet2020/intern/views.py b/fet2020/intern/views.py index bc3cc74d..6eb8ebfc 100644 --- a/fet2020/intern/views.py +++ b/fet2020/intern/views.py @@ -6,14 +6,22 @@ from django.contrib.auth.mixins import LoginRequiredMixin from django.db.models import F, Q from django.http import HttpResponseRedirect, Http404 from django.shortcuts import render -from django.views.generic.edit import CreateView -from django.urls import reverse +from django.views.generic.edit import CreateView, UpdateView +from django.urls import reverse_lazy, reverse from authentications.decorators import authenticated_user from documents.api import get_pad_link from documents.etherpadlib import add_ep_cookie +from tasks.forms import InternTaskCreateForm from tasks.models import Task -from .forms import EtherpadForm, FileUploadForm +from .forms import ( + DocumentationCreateForm, + DocumentationUpdateForm, + EtherpadForm, + FileUploadForm, + TopicCreateForm, + TopicUpdateForm, +) from .models import TopicGroup, Topic, Documentation, Etherpad, FileUpload logger = logging.getLogger(__name__) @@ -21,15 +29,15 @@ logger = logging.getLogger(__name__) @authenticated_user def index(request): - topic = deque( - Topic.objects.filter(archive=False).order_by( - F("topic_group__order").asc(nulls_last=True), "topic_group", "title" - ) + topic = Topic.objects.filter(archive=False).order_by( + F("topic_group__order").asc(nulls_last=True), "topic_group", "title" ) - archive_topic = deque(Topic.objects.filter(archive=True)) + empty_topic_groups = TopicGroup.objects.filter(topic=None) + archive_topic = Topic.objects.filter(archive=True) context = { "topic": topic, + "empty_topic_groups": empty_topic_groups, "archive_topic": archive_topic, } @@ -42,7 +50,7 @@ def show_topic(request, slug=None): if not active_topic: raise Http404("wrong topic") - docu = deque(Documentation.objects.filter(topic__slug=slug).order_by("title")) + docu = Documentation.objects.filter(topic__slug=slug).order_by("title") tasks = None if active_topic.task_list: @@ -104,9 +112,9 @@ def show_docu(request, topic_slug=None, slug=None): form_add_etherpad = EtherpadForm(initial=initial) form_add_file = FileUploadForm(initial=initial) - files = deque(FileUpload.objects.filter(documentation=active_docu)) + files = FileUpload.objects.filter(documentation=active_docu) - docus = deque(Etherpad.objects.filter(documentation=active_docu).order_by("-date")) + docus = Etherpad.objects.filter(documentation=active_docu).order_by("-date") etherpads = deque([]) # list of etherpad url-link of any etherpads @@ -138,6 +146,124 @@ def show_docu(request, topic_slug=None, slug=None): return response +class TopicCreateView(LoginRequiredMixin, CreateView): + model = Topic + success_url = reverse_lazy("intern:index") + template_name = "intern/topic/topic_create.html" + form_class = TopicCreateForm + + slug = None + + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + context["topic_group"] = self.slug + return context + + def get_initial(self): + self.slug = self.kwargs.get("topic_group") + topic_group = TopicGroup.objects.filter(slug=self.slug).first() + + context = { + "topic_group": topic_group, + } + + return context + + +class TopicUpdateView(LoginRequiredMixin, UpdateView): + model = Topic + template_name = "intern/topic/topic_update.html" + form_class = TopicUpdateForm + + slug = None + + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + context["slug"] = self.slug + return context + + def get_initial(self): + self.slug = self.kwargs.get("slug") + topic = Topic.objects.filter(slug=self.slug).first() + + context = { + "topic": topic, + } + + return context + + def get_success_url(self): + context = { + "slug": self.slug, + } + + return reverse("intern:topic", kwargs=context) + + +class DocumentationCreateView(LoginRequiredMixin, CreateView): + model = Documentation + template_name = "intern/docu/docu_create.html" + form_class = DocumentationCreateForm + + slug = None + + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + context["slug"] = self.slug + return context + + def get_initial(self): + self.slug = self.kwargs.get("slug") + topic = Topic.objects.filter(slug=self.slug).first() + + context = { + "topic": topic, + } + + return context + + def get_success_url(self): + context = { + "slug": self.slug, + } + + return reverse("intern:topic", kwargs=context) + + +class DocumentationUpdateView(LoginRequiredMixin, UpdateView): + model = Documentation + template_name = "intern/docu/docu_update.html" + form_class = DocumentationUpdateForm + + topic_slug = None + slug = None + + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + context["topic_slug"] = self.topic_slug + context["slug"] = self.slug + return context + + def get_initial(self): + self.topic_slug = self.kwargs.get("topic_slug") + self.slug = self.kwargs.get("slug") + + active_docu = Documentation.objects.filter(slug=self.slug).first() + context = { + "documentation": active_docu, + } + + return context + + def get_success_url(self): + context = { + "topic_slug": self.topic_slug, + "slug": self.slug, + } + + return reverse("intern:docu", kwargs=context) + + class EtherpadCreateView(LoginRequiredMixin, CreateView): model = Etherpad template_name = "intern/etherpad_create.html" @@ -156,7 +282,7 @@ class EtherpadCreateView(LoginRequiredMixin, CreateView): self.topic_slug = self.kwargs.get("topic_slug") self.slug = self.kwargs.get("slug") - active_docu = Documentation.objects.filter(slug=self.kwargs.get("slug")).first() + active_docu = Documentation.objects.filter(slug=self.slug).first() context = { "documentation": active_docu, } @@ -169,7 +295,7 @@ class EtherpadCreateView(LoginRequiredMixin, CreateView): "slug": self.slug, } - return reverse("docu", kwargs=context) + return reverse("intern:docu", kwargs=context) class FileUploadCreateView(LoginRequiredMixin, CreateView): @@ -204,4 +330,40 @@ class FileUploadCreateView(LoginRequiredMixin, CreateView): "slug": self.slug, } - return reverse("docu", kwargs=context) + return reverse("intern:docu", kwargs=context) + + +class TaskCreateView(LoginRequiredMixin, CreateView): + model = Task + template_name = "intern/task_create.html" + form_class = InternTaskCreateForm + + slug = None + + def form_valid(self, form): + form.instance.created_by = self.request.user + # add_log_action(self.request, form, True) + return super().form_valid(form) + + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + context["slug"] = self.slug + return context + + def get_initial(self): + self.slug = self.kwargs.get("slug") + topic = Topic.objects.filter(slug=self.slug).first() + + context = { + "topic": topic, + "task_list": topic.task_list, + } + + return context + + def get_success_url(self): + context = { + "slug": self.slug, + } + + return reverse("intern:topic", kwargs=context) diff --git a/fet2020/tasks/forms.py b/fet2020/tasks/forms.py index 79e9a307..92d7b526 100644 --- a/fet2020/tasks/forms.py +++ b/fet2020/tasks/forms.py @@ -22,6 +22,24 @@ class DocumentInlineForm(forms.ModelForm): "date", ] + labels = { + "title": _("Titel"), + "slug": _("Permalink"), + } + + +class TaskListAdminForm(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().order_by("username"), + widget=FilteredSelectMultiple("User", is_stacked=False), + ) + + class Meta: + model = TaskList + fields = "__all__" + class TaskAdminForm(forms.ModelForm): class Meta: @@ -56,6 +74,7 @@ class TaskCreateForm(forms.ModelForm): "task_list", "due_date", "assigned_to", + "note", ] labels = { @@ -67,16 +86,23 @@ class TaskCreateForm(forms.ModelForm): widgets = { "due_date": DateInput( - format=("%d-%m-%Y"), + format=("%Y-%m-%d"), ) } def __init__(self, *args, **kwargs): + if "user" in kwargs: + user = kwargs.pop("user") + else: + user = None + 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") + qs = self.fields["assigned_to"].queryset + self.fields["assigned_to"].queryset = qs.order_by("username") + + if user: + self.fields["task_list"].queryset = TaskList.objects.filter(users=user) def clean(self): cleaned_data = super().clean() @@ -84,10 +110,7 @@ class TaskCreateForm(forms.ModelForm): if assigned_to: task_list = TaskList.objects.get(id=cleaned_data["task_list"].id) - for elem in task_list.users.all(): - if assigned_to == elem: - break - else: + if not task_list.users.filter(username=assigned_to.username): raise ValidationError( _( f"User '{assigned_to}' gibt es nicht in der User-Liste der Task-Gruppe '{task_list}'." @@ -97,7 +120,7 @@ class TaskCreateForm(forms.ModelForm): return cleaned_data -class TaskUpdateForm(forms.ModelForm): +class TaskUpdateForm(TaskCreateForm): class Meta: model = Task @@ -106,6 +129,7 @@ class TaskUpdateForm(forms.ModelForm): "due_date", "priority", "note", + "task_list", ] labels = { @@ -115,32 +139,13 @@ class TaskUpdateForm(forms.ModelForm): widgets = { "due_date": DateInput( - format=("%d-%m-%Y"), - ) + format=("%Y-%m-%d"), + ), + "task_list": HiddenInput, } - 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 TaskListAdminForm(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().order_by("username"), - widget=FilteredSelectMultiple("User", is_stacked=False), - ) - - class Meta: - model = TaskList - fields = "__all__" - - -class DocumentForm(forms.ModelForm): +class DocumentCreateForm(forms.ModelForm): class Meta: model = Document @@ -155,4 +160,35 @@ class DocumentForm(forms.ModelForm): "date": _("Datum"), } - widgets = {"date": DateInput(format=("%d-%m-%Y")), "task": HiddenInput} + widgets = { + "date": DateInput(format=("%d-%m-%Y")), + "task": HiddenInput, + } + + +class InternTaskCreateForm(TaskCreateForm): + # form for creating a task from intern page. + class Meta: + model = Task + + fields = [ + "title", + "task_list", + "due_date", + "assigned_to", + "note", + ] + + labels = { + "title": _("Titel des Tasks"), + "task_list": _("Task-Gruppe"), + "due_date": _("Fälligkeitsdatum"), + "assigned_to": _("Zuweisen an"), + } + + widgets = { + "due_date": DateInput( + format=("%d-%m-%Y"), + ), + "task_list": HiddenInput, + } diff --git a/fet2020/tasks/models.py b/fet2020/tasks/models.py index b9701090..5e5456b9 100644 --- a/fet2020/tasks/models.py +++ b/fet2020/tasks/models.py @@ -29,18 +29,16 @@ class TaskList(models.Model): return self.name def get_absolute_url(self): - return reverse("tasks") + return reverse("tasks:index") - def save(self, *args, **kwargs): + def clean(self): if not self.slug: self.slug = slugify(self.name) - super().save(*args, **kwargs) - class Task(models.Model): title = models.CharField(verbose_name="Titel", max_length=128) - slug = models.SlugField(unique=True, null=True, blank=True) + slug = models.SlugField(null=True, blank=True) task_list = models.ForeignKey( TaskList, verbose_name="Aufgabenbereich", on_delete=models.CASCADE, null=True @@ -82,12 +80,13 @@ class Task(models.Model): return self.title def get_absolute_url(self): - return reverse("task-detail", kwargs={"pk": self.id}) + return reverse("tasks:task-detail", kwargs={"pk": self.id}) - def save(self, *args, **kwargs): + def clean(self): if not self.slug: self.slug = slugify(self.title) + def save(self, *args, **kwargs): if self.completed and not self.completed_date: self.completed_date = timezone.now().date() @@ -99,7 +98,7 @@ class Task(models.Model): class Document(models.Model): title = models.CharField(verbose_name="Titel", max_length=128) - slug = models.SlugField(unique=True, null=True, blank=True) + slug = models.SlugField(null=True, blank=True) etherpad_key = models.CharField(max_length=50, blank=True) date = models.DateField(verbose_name="Datum", default=date.today) diff --git a/fet2020/tasks/urls.py b/fet2020/tasks/urls.py index 8bed9422..2c910257 100644 --- a/fet2020/tasks/urls.py +++ b/fet2020/tasks/urls.py @@ -1,11 +1,14 @@ from django.urls import path +from . import apps from . import views from .views import TaskCreate, TaskDetail, TaskUpdate, DocumentCreate +app_name = apps.TasksConfig.name + urlpatterns = [ - path("", views.index, name="tasks"), + path("", views.index, name="index"), path("task-create/", TaskCreate.as_view(), name="task-create"), path("/docu-create/", DocumentCreate.as_view(), name="docu-create"), path("/update/", TaskUpdate.as_view(), name="task-update"), diff --git a/fet2020/tasks/views.py b/fet2020/tasks/views.py index fc11ab76..870b8fdd 100644 --- a/fet2020/tasks/views.py +++ b/fet2020/tasks/views.py @@ -15,8 +15,8 @@ from django.utils import timezone from authentications.decorators import authenticated_user from documents.api import get_pad_link from documents.etherpadlib import add_ep_cookie - -from .forms import DocumentForm, TaskCreateForm, TaskUpdateForm +from intern.models import Topic +from .forms import DocumentCreateForm, TaskCreateForm, TaskUpdateForm from .models import Document, Task, TaskList logger = logging.getLogger(__name__) @@ -54,15 +54,13 @@ def index(request): else: show_all_tasks = False - tasks = deque( - Task.taskmanager.get_tasks( - user=request.user.id, - completed=current_action, - task_list=tasklist, - all_tasks=show_all_tasks, - ) + tasks = Task.taskmanager.get_tasks( + user=request.user.id, + completed=current_action, + task_list=tasklist, + all_tasks=show_all_tasks, ) - tasklists = deque(TaskList.objects.all()) + tasklists = TaskList.objects.all() context = { "tasks": tasks, @@ -98,21 +96,33 @@ def add_log_action(request, form, add=True): class TaskCreate(LoginRequiredMixin, CreateView): model = Task - success_url = reverse_lazy("tasks") + success_url = reverse_lazy("tasks:index") template_name = "tasks/task_create.html" form_class = TaskCreateForm + user = None + def form_valid(self, form): form.instance.created_by = self.request.user add_log_action(self.request, form, True) return super().form_valid(form) + def get_initial(self): + self.user = self.request.user + + def get_form_kwargs(self): + kwargs = super().get_form_kwargs() + kwargs["user"] = self.request.user + return kwargs + class TaskUpdate(LoginRequiredMixin, UpdateView): model = Task template_name = "tasks/task_update.html" form_class = TaskUpdateForm + pk = None + def form_valid(self, form): add_log_action(self.request, form, False) return super().form_valid(form) @@ -121,12 +131,12 @@ class TaskUpdate(LoginRequiredMixin, UpdateView): kwargs = { "pk": self.kwargs.get("pk"), } - return reverse("task-detail", kwargs=kwargs) + return reverse("tasks:task-detail", kwargs=kwargs) class TaskDetail(LoginRequiredMixin, DetailView): model = Task - success_url = reverse_lazy("tasks") + success_url = reverse_lazy("tasks:index") template_name = "tasks/task_detail.html" def get(self, request, *args, **kwargs): @@ -142,9 +152,8 @@ class TaskDetail(LoginRequiredMixin, DetailView): def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) - docus = deque( - Document.objects.filter(task__id=self.object.id).order_by("-date") - ) + docus = Document.objects.filter(task__id=self.object.id).order_by("-date") + documents = deque([]) # list of etherpad url-link of any documents @@ -158,13 +167,15 @@ class TaskDetail(LoginRequiredMixin, DetailView): ) context["documents"] = documents + context["topic"] = Topic.objects.filter(task_list=self.object.task_list).first() + return context class DocumentCreate(LoginRequiredMixin, CreateView): model = Document template_name = "tasks/docu_create.html" - form_class = DocumentForm + form_class = DocumentCreateForm task_id = None @@ -186,4 +197,4 @@ class DocumentCreate(LoginRequiredMixin, CreateView): kwargs = { "pk": self.task_id, } - return reverse("task-detail", kwargs=kwargs) + return reverse("tasks:task-detail", kwargs=kwargs) diff --git a/fet2020/templates/intern/docu.html b/fet2020/templates/intern/docu.html index 1f7d93c8..1ce074b6 100644 --- a/fet2020/templates/intern/docu.html +++ b/fet2020/templates/intern/docu.html @@ -1,12 +1,12 @@ {% extends "layout.html" %} -{% block content %} +{% block content %}
@@ -17,7 +17,7 @@ {% if request.user.is_authenticated %} {% endif %} @@ -32,7 +32,7 @@
Etherpad Dokumente: - +
- {% endblock %} diff --git a/fet2020/templates/intern/docu/docu_create.html b/fet2020/templates/intern/docu/docu_create.html new file mode 100644 index 00000000..769ecb74 --- /dev/null +++ b/fet2020/templates/intern/docu/docu_create.html @@ -0,0 +1,23 @@ +{% extends "layout.html" %} + +{% block content %} +
+ +
+ +

Neue Dokumentation erstellen

+
+
+
+ {% csrf_token %} + {{ form }} + +
+
+
+
+{% endblock %} diff --git a/fet2020/templates/intern/docu/docu_update.html b/fet2020/templates/intern/docu/docu_update.html new file mode 100644 index 00000000..a37790a7 --- /dev/null +++ b/fet2020/templates/intern/docu/docu_update.html @@ -0,0 +1,26 @@ +{% extends "layout.html" %} + +{% block content %} +
+ +
+ +

Dokumentation '{{ documentation.title }}' bearbeiten

+
+
+
+ {% csrf_token %} + {{ form }} + +
+
+
+
+{% endblock %} diff --git a/fet2020/templates/intern/etherpad_create.html b/fet2020/templates/intern/etherpad_create.html index 17793c06..b9c0ae3e 100644 --- a/fet2020/templates/intern/etherpad_create.html +++ b/fet2020/templates/intern/etherpad_create.html @@ -1,10 +1,10 @@ {% extends "layout.html" %} -{% block content %} +{% block content %}
-
+
@@ -20,5 +20,4 @@
- {% endblock %} diff --git a/fet2020/templates/intern/file_create.html b/fet2020/templates/intern/file_create.html index bded966f..1439509c 100644 --- a/fet2020/templates/intern/file_create.html +++ b/fet2020/templates/intern/file_create.html @@ -1,10 +1,10 @@ {% extends "layout.html" %} -{% block content %} +{% block content %}
-
+
@@ -20,5 +20,4 @@
- {% endblock %} diff --git a/fet2020/templates/intern/index.html b/fet2020/templates/intern/index.html index ff3fd4c6..6961ce93 100644 --- a/fet2020/templates/intern/index.html +++ b/fet2020/templates/intern/index.html @@ -1,6 +1,6 @@ {% extends "layout.html" %} -{% block content %} +{% block content %}
{% if request.user.is_authenticated %} @@ -13,13 +13,17 @@ {% regroup topic by topic_group as topic_list %} {% for topic in topic_list %}
-

{{ topic.grouper.title }} #

+

{{ topic.grouper.title }} #

+ + {% if topic.grouper.short_description %} + {{ topic.grouper.short_description }} + {% endif %}
{% for tp in topic.list %}
- + + {% endfor %} + + {% for topic_group in empty_topic_groups %} +
+

{{ topic_group.title }} #

+
+ +
+
+
+ @@ -48,7 +70,7 @@
{% for tp in archive_topic %}
- +
{{ tp.title }} @@ -59,7 +81,5 @@ {% endfor %}
{% endif %} -
- {% endblock %} diff --git a/fet2020/templates/intern/task_create.html b/fet2020/templates/intern/task_create.html new file mode 100644 index 00000000..26db5a25 --- /dev/null +++ b/fet2020/templates/intern/task_create.html @@ -0,0 +1,23 @@ +{% extends 'layout.html' %} + +{% block content %} +
+ +
+ +

Neuen Task hinzufügen

+
+
+
+ {% csrf_token %} + {{ form }} + +
+
+
+
+{% endblock %} diff --git a/fet2020/templates/intern/topic.html b/fet2020/templates/intern/topic.html index 2d489faf..12cf20e9 100644 --- a/fet2020/templates/intern/topic.html +++ b/fet2020/templates/intern/topic.html @@ -1,11 +1,11 @@ {% extends "layout.html" %} -{% block content %} +{% block content %}
@@ -14,11 +14,13 @@
- + {% if active_topic.task_list %} + + {% endif %}
{% if active_topic.description %} @@ -34,18 +36,17 @@ {% for task in tasks %} {% endfor %}

- {% endif %}
{% for docu in docus %}
- + - {% endblock %} diff --git a/fet2020/templates/intern/topic/topic_create.html b/fet2020/templates/intern/topic/topic_create.html new file mode 100644 index 00000000..d9332ac4 --- /dev/null +++ b/fet2020/templates/intern/topic/topic_create.html @@ -0,0 +1,23 @@ +{% extends "layout.html" %} + +{% block content %} +
+
+
+ Zurück +
+
+
+ +

Neues Thema erstellen

+
+
+
+ {% csrf_token %} + {{ form }} + +
+
+
+
+{% endblock %} diff --git a/fet2020/templates/intern/topic/topic_update.html b/fet2020/templates/intern/topic/topic_update.html new file mode 100644 index 00000000..e314aa94 --- /dev/null +++ b/fet2020/templates/intern/topic/topic_update.html @@ -0,0 +1,26 @@ +{% extends "layout.html" %} + +{% block content %} +
+ +
+ +

Thema '{{ topic.title }}' bearbeiten

+
+
+
+ {% csrf_token %} + {{ form }} + +
+
+
+
+{% endblock %} diff --git a/fet2020/templates/layout.html b/fet2020/templates/layout.html index bdbb55fd..e916377f 100644 --- a/fet2020/templates/layout.html +++ b/fet2020/templates/layout.html @@ -53,8 +53,8 @@
  • Admin
  • -
  • Tasks
  • -
  • Intern
  • +
  • Tasks
  • +
  • Intern
  • Legacy Intern
  • {% endif %}
  • News
  • diff --git a/fet2020/templates/tasks/index.html b/fet2020/templates/tasks/index.html index 3b2e3173..d30f9a8c 100644 --- a/fet2020/templates/tasks/index.html +++ b/fet2020/templates/tasks/index.html @@ -1,10 +1,10 @@ {% extends 'layout.html' %} -{% block content %} +{% block content %}

    @@ -61,7 +61,7 @@
    @@ -90,5 +90,4 @@
    {% endif %}
    - {% endblock %} diff --git a/fet2020/templates/tasks/task_create.html b/fet2020/templates/tasks/task_create.html index 56458b7e..68ead194 100644 --- a/fet2020/templates/tasks/task_create.html +++ b/fet2020/templates/tasks/task_create.html @@ -1,10 +1,10 @@ {% extends 'layout.html' %} -{% block content %} +{% block content %}
    Task-Gruppe erstellen @@ -23,5 +23,4 @@
    - {% endblock %} diff --git a/fet2020/templates/tasks/task_detail.html b/fet2020/templates/tasks/task_detail.html index b190cead..c40b3961 100644 --- a/fet2020/templates/tasks/task_detail.html +++ b/fet2020/templates/tasks/task_detail.html @@ -1,16 +1,21 @@ {% extends 'layout.html' %} -{% block content %} +{% block content %}

    @@ -44,5 +49,4 @@
    - {% endblock %} diff --git a/fet2020/templates/tasks/task_update.html b/fet2020/templates/tasks/task_update.html index be874b22..1b1c9dbc 100644 --- a/fet2020/templates/tasks/task_update.html +++ b/fet2020/templates/tasks/task_update.html @@ -1,10 +1,10 @@ {% extends 'layout.html' %} -{% block content %} +{% block content %}
    Task im Admin bearbeiten @@ -23,5 +23,4 @@
    - {% endblock %}