item_type = request.GET.get('item_type')
assert item_type, 'No item_type parameter was provided.'
- # for the moment, only HEADINGs can be added.
- assert item_type == 'HEADING', 'Sorry, only HEADINGs can be added right now.'
+ # for the moment, only HEADINGs and URLs can be added.
+ assert item_type in ('HEADING', 'URL'), 'Sorry, only HEADINGs and URLs can be added right now.'
if request.method == 'GET':
- return g.render('item_add_heading.xhtml', **locals())
+ return g.render('item_add_%s.xhtml' % item_type.lower(),
+ **locals())
else:
- title = request.POST.get('title', '').strip()
- if not title:
- return HttpResponseRedirect(request.get_full_path())
+ # fixme, this will need refactoring. But not yet.
+ if item_type == 'HEADING':
+ title = request.POST.get('title', '').strip()
+ if not title:
+ # fixme, better error handling.
+ return HttpResponseRedirect(request.get_full_path())
+ else:
+ item = models.Item(
+ course=course,
+ item_type='HEADING',
+ parent_heading=parent_item,
+ title=title,
+ author=request.user.get_full_name(),
+ activation_date=datetime.now(),
+ last_modified=datetime.now())
+ item.save()
+ return HttpResponseRedirect(item_url(item))
+ elif item_type == 'URL':
+ title = request.POST.get('title', '').strip()
+ url = request.POST.get('url', '').strip()
+ if not (title or url):
+ # fixme, better error handling.
+ return HttpResponseRedirect(request.get_full_path())
+ else:
+ item = models.Item(
+ course=course,
+ item_type='URL',
+ parent_heading=parent_item,
+ title=title,
+ author=request.user.get_full_name(),
+ activation_date=datetime.now(),
+ last_modified=datetime.now(),
+ url = url)
+ item.save()
+ return HttpResponseRedirect(item_url(item) + 'meta/')
else:
- # rubber hits road.
- item = models.Item(
- course=course,
- item_type='HEADING',
- parent_heading=parent_item,
- title=title,
- author=request.user.get_full_name(),
- activation_date=datetime.now(),
- last_modified=datetime.now())
- item.save()
- return HttpResponseRedirect(item_url(item))
-
-
- raise NotImplementedError
+ raise NotImplementedError
def normalize_query(query_string,
findterms=re.compile(r'"([^"]+)"|(\S+)').findall,
class="nestedtitle">
<span py:for="n, x in enumerate(hier)"
style="margin-left: ${n}em;"><a href="${item_url(x)}">${x.title}</a> • </span>
-<h2>${item.title}</h2>
+ <h2>${item.title}</h2>
</div>
+
+ <ul py:def="add_subs(parent=None)">
+ <li>Add a new item...</li>
+ <ul py:with="prefix = (not parent) and 'item/0/' or ''">
+ <li><a href="${prefix}add?item_type=HEADING">Add subheading</a></li>
+ <li><a href="${prefix}add?item_type=URL">Add URL</a></li>
+ <li><a href="${prefix}add?item_type=ELEC">Add Electronic Document</a></li>
+ <li><a href="${prefix}add?item_type=PHYS">Add Physical Book/Document</a></li>
+ </ul>
+ </ul>
+
</html>