Fix output of documents list for projects: show only docs for given project.
Fix output of documents list for projects: show only docs for given project.
diff --git a/mgmt/templatetags/prj_filters.py b/mgmt/templatetags/prj_filters.py
index 2a93692..aaac4d5 100644
--- a/mgmt/templatetags/prj_filters.py
+++ b/mgmt/templatetags/prj_filters.py
@@ -11,6 +11,8 @@ import sys
from os.path import dirname
sys.path.append(dirname(__file__))
+from projects.mgmt.models import Document
+
@register.filter('link')
def link(obj,type='projects'):
return "<a href='%s/%s/%s/'>%s</a>" % (settings.BASE_URL,type,obj.id,obj.name)
@@ -53,3 +55,26 @@ def form(parser,token):
return FormNode(cs[1],cs[2])
msg = "`form` tag syntax: {\% form form-object [additional-fields] \%}"
raise template.TemplateSyntaxError(msg)
+
+class DocsNode(template.Node):
+ def __init__(self,project,category,name):
+ self.project = project
+ self.category = category
+ self.name = name
+
+ def render(self,context):
+ prj=context[self.project]
+ cat=context[self.category]
+ docs = Document.objects.filter(category=cat, project=prj)
+ context[self.name] = docs
+ return ''
+
+@register.tag
+def category_documents(parser,token):
+ cs = token.split_contents()
+ l = len(cs)
+ if l != 5 or cs[3] != 'as':
+ raise template.TemplateSyntaxError("`category_documents` syntax: category_documents project category as name")
+ return DocsNode(cs[1],cs[2],cs[4])
+
+
diff --git a/templates/project_docs.html b/templates/project_docs.html
index 88a78e5..f85c54c 100644
--- a/templates/project_docs.html
+++ b/templates/project_docs.html
@@ -10,7 +10,8 @@
{% for cat in categories %}
<h3>{{cat.title}}:</h3>
<ul class='documents'>
- {% for doc in cat.document_set.all %}
+ {% category_documents project cat as docs %}
+ {% for doc in docs %}
<li><a href='{% url mgmt.views.one_document doc.id %}'>{{doc.name}}</a></li>
{% endfor %}
</ul>