+
+@require_active_login
+def add_collection(request, media=None):
+ """
+ View to create a new collection
+ """
+ submit_form = submit_forms.AddCollectionForm(request.form)
+
+ if request.method == 'POST' and submit_form.validate():
+ try:
+ collection = request.db.Collection()
+
+ collection.title = unicode(request.form['title'])
+ collection.description = unicode(request.form.get('description'))
+ collection.creator = request.user.id
+ collection.generate_slug()
+
+ # Make sure this user isn't duplicating an existing collection
+ existing_collection = request.db.Collection.find_one({
+ 'creator': request.user.id,
+ 'title':collection.title})
+
+ if existing_collection:
+ messages.add_message(
+ request, messages.ERROR, _('You already have a collection called "%s"!' % collection.title))
+ else:
+ collection.save()
+
+ add_message(request, SUCCESS, _('Collection "%s" added!' % collection.title))
+
+ return redirect(request, "mediagoblin.user_pages.user_home",
+ user=request.user.username)
+
+ except Exception as e:
+ raise
+
+ return render_to_response(
+ request,
+ 'mediagoblin/submit/collection.html',
+ {'submit_form': submit_form,
+ 'app_config': mg_globals.app_config})