summaryrefslogtreecommitdiff
path: root/meetingtools/apps/archive/views.py
diff options
context:
space:
mode:
authorLeif Johansson <leifj@sunet.se>2012-10-16 17:57:45 +0200
committerLeif Johansson <leifj@sunet.se>2012-10-16 17:57:45 +0200
commit8f6f63c87128906be86fdfdf53aba48570677e87 (patch)
tree443ae2807ace7ed11306699c69cd4f209352874e /meetingtools/apps/archive/views.py
parenta15a4d81d5520adbfbbc5509202e32b1b56f826a (diff)
- normalize sco objects to separate tablesco
- add archive object for "published" archives - configurable return from form edits - tagging for archives - reset south
Diffstat (limited to 'meetingtools/apps/archive/views.py')
-rw-r--r--meetingtools/apps/archive/views.py63
1 files changed, 63 insertions, 0 deletions
diff --git a/meetingtools/apps/archive/views.py b/meetingtools/apps/archive/views.py
new file mode 100644
index 0000000..2c8086d
--- /dev/null
+++ b/meetingtools/apps/archive/views.py
@@ -0,0 +1,63 @@
+import re
+from django.contrib.auth.decorators import login_required
+from django.shortcuts import get_object_or_404
+from django.views.decorators.cache import never_cache
+from tagging.models import Tag
+from meetingtools.apps.archive.forms import TagArchiveForm
+from meetingtools.apps.archive.models import publish_archive, Archive
+from meetingtools.apps.room.models import Room
+from meetingtools.multiresponse import redirect_to, respond_to
+
+__author__ = 'leifj'
+
+class HttpRedirect(object):
+ pass
+
+@login_required
+def publish_sco(request,rid,sco_id):
+ room = get_object_or_404(Room,pk=rid)
+ acc = room.sco.sco_id
+ ar = publish_archive(room,sco_id)
+ return redirect_to("/room/%d/recordings#%d" % (rid,ar.sco.sco_id))
+
+def _can_tag(request,tag):
+ if tag in ('selfcleaning','cleaning','public','private'):
+ return False,"'%s' is reserved" % tag
+ # XXX implement access model for tags here soon
+ return True,""
+
+@never_cache
+@login_required
+def untag(request,rid,tag):
+ ar = get_object_or_404(Archive,pk=rid)
+ new_tags = []
+ for t in Tag.objects.get_for_object(ar):
+ if t.name != tag:
+ new_tags.append(t.name)
+
+ Tag.objects.update_tags(ar, ' '.join(new_tags))
+ return redirect_to("/archive/%d/tag" % ar.id)
+
+@never_cache
+@login_required
+def tag(request,rid):
+ archive = get_object_or_404(Archive,pk=rid)
+ if request.method == 'POST':
+ form = TagArchiveForm(request.POST)
+ if form.is_valid():
+ for tag in re.split('[,\s]+',form.cleaned_data['tag']):
+ tag = tag.strip()
+ if tag:
+ ok,reason = _can_tag(request,tag)
+ if ok:
+ Tag.objects.add_tag(archive, tag)
+ else:
+ form._errors['tag'] = form.error_class([u'%s ... please choose another tag!' % reason])
+ else:
+ form = TagArchiveForm()
+
+ tags = Tag.objects.get_for_object(archive)
+ tn = "+".join([t.name for t in tags])
+ return respond_to(request,
+ {'text/html': "apps/archive/tag.html"},
+ {'form': form,'formtitle': 'Add Tag','cancelname':'Done','submitname': 'Add Tag','archive': archive, 'tagstring': tn,'tags': tags})