diff --git a/src/info/models.py b/src/info/models.py
index 75bddf20..6e7f5676 100644
--- a/src/info/models.py
+++ b/src/info/models.py
@@ -92,7 +92,7 @@ class InfoItem(CampRelatedModel):
return self.category.camp
def clean(self):
- if InfoCategory.objects.filter(camp=self.category.camp, anchor=self.anchor).exists():
+ if hasattr(self, 'category') and InfoCategory.objects.filter(camp=self.category.camp, anchor=self.anchor).exists():
# this anchor is already in use on a category, so it cannot be used here (they must be unique on the entire page)
raise ValidationError({'anchor': 'Anchor is already in use on an info category for this camp'})
diff --git a/src/teams/templates/info_item_form.html b/src/teams/templates/info_item_form.html
index 465671db..3a15e8e8 100644
--- a/src/teams/templates/info_item_form.html
+++ b/src/teams/templates/info_item_form.html
@@ -8,7 +8,7 @@ Edit Info Item: {{ form.instance.headline }}
{% else %}
Create Info item
{% endif %}
-for in {{ form.instance.category.headline }}
+in {{ form.instance.category.headline }}
{% endblock %}
{% block content %}
@@ -20,7 +20,7 @@ for in {{ form.instance.category.headline }}
{% else %}
Create Info Item
{% endif %}
- for in {{ form.instance.category.headline }}
+ in {{ form.instance.category.headline }}
diff --git a/src/teams/templates/team_detail.html b/src/teams/templates/team_detail.html
index 86a96040..86586f3a 100644
--- a/src/teams/templates/team_detail.html
+++ b/src/teams/templates/team_detail.html
@@ -137,7 +137,7 @@ Team: {{ team.name }} | {{ block.super }}
{{ item.headline }} |
-
Edit Task
@@ -147,8 +147,11 @@ Team: {{ team.name }} | {{ block.super }}
+ Create Info Item
+
{% endfor %}
+
{% endif %}
diff --git a/src/teams/urls.py b/src/teams/urls.py
index 555bc945..039aabb6 100644
--- a/src/teams/urls.py
+++ b/src/teams/urls.py
@@ -10,7 +10,7 @@ from teams.views.base import (
TeamManageView,
FixIrcAclView,
)
-from teams.views.info import InfoItemUpdateView
+from teams.views.info import InfoItemUpdateView, InfoItemCreateView
from teams.views.tasks import (
TaskCreateView,
@@ -92,14 +92,14 @@ urlpatterns = [
]),
),
url(
- r'^info_items/', include([
+ r'^info_items/(?P[-_\w+]+)/', include([
url(
- r'^(?P[-_\w+]+)/', include([
- # url(
- # r'^$',
- # TaskDetailView.as_view(),
- # name='task_detail',
- # ),
+ r'^create/$',
+ InfoItemCreateView.as_view(),
+ name='info_item_create',
+ ),
+ url(
+ r'^(?P[-_\w+]+)/', include([
url(
r'^update/$',
InfoItemUpdateView.as_view(),
diff --git a/src/teams/views/info.py b/src/teams/views/info.py
index 64c77916..b3dc5a8e 100644
--- a/src/teams/views/info.py
+++ b/src/teams/views/info.py
@@ -1,9 +1,10 @@
from django.contrib.auth.mixins import LoginRequiredMixin
+from django.http import HttpResponseRedirect
from django.views.generic import CreateView, UpdateView
from reversion.views import RevisionMixin
from camps.mixins import CampViewMixin
-from info.models import InfoItem
+from info.models import InfoItem, InfoCategory
from teams.views.mixins import EnsureTeamResponsibleMixin
@@ -15,11 +16,18 @@ class InfoItemCreateView(LoginRequiredMixin, CampViewMixin, EnsureTeamResponsibl
def get_context_data(self, *args, **kwargs):
context = super().get_context_data(**kwargs)
- context['team'] = self.object.category.team
+ context['team'] = self.team
return context
+ def form_valid(self, form):
+ info_item = form.save(commit=False)
+ category = InfoCategory.objects.get(camp=self.camp, anchor=self.kwargs.get('category_anchor'))
+ info_item.category = category
+ info_item.save()
+ return HttpResponseRedirect(self.get_success_url())
+
def get_success_url(self):
- return self.object.category.team.get_absolute_url()
+ return self.team.get_absolute_url()
class InfoItemUpdateView(LoginRequiredMixin, CampViewMixin, EnsureTeamResponsibleMixin, RevisionMixin, UpdateView):
@@ -31,9 +39,9 @@ class InfoItemUpdateView(LoginRequiredMixin, CampViewMixin, EnsureTeamResponsibl
def get_context_data(self, *args, **kwargs):
context = super().get_context_data(**kwargs)
- context['team'] = self.object.category.team
+ context['team'] = self.team
return context
def get_success_url(self):
- return self.object.category.team.get_absolute_url()
+ return self.team.get_absolute_url()
|