From be5be1154fd22c548125ce5a055af1bdfdad9526 Mon Sep 17 00:00:00 2001 From: Aaron Williamson Date: Fri, 17 Aug 2012 00:54:40 -0400 Subject: Added basic collection functionality --- mediagoblin/submit/forms.py | 10 ++++++++++ mediagoblin/submit/routing.py | 5 ++++- mediagoblin/submit/views.py | 44 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 58 insertions(+), 1 deletion(-) (limited to 'mediagoblin/submit') diff --git a/mediagoblin/submit/forms.py b/mediagoblin/submit/forms.py index 7d9e8fcf..bd1e904f 100644 --- a/mediagoblin/submit/forms.py +++ b/mediagoblin/submit/forms.py @@ -41,3 +41,13 @@ class SubmitStartForm(wtforms.Form): _('License'), [wtforms.validators.Optional(),], choices=licenses_as_choices()) + +class AddCollectionForm(wtforms.Form): + title = wtforms.TextField( + _('Title'), + [wtforms.validators.Length(min=0, max=500), wtforms.validators.Required()]) + description = wtforms.TextAreaField( + _('Description of this collection'), + description=_("""You can use + + Markdown for formatting.""")) diff --git a/mediagoblin/submit/routing.py b/mediagoblin/submit/routing.py index 8ce23cd9..1e399d1e 100644 --- a/mediagoblin/submit/routing.py +++ b/mediagoblin/submit/routing.py @@ -18,4 +18,7 @@ from routes.route import Route submit_routes = [ Route('mediagoblin.submit.start', '/', - controller='mediagoblin.submit.views:submit_start')] + controller='mediagoblin.submit.views:submit_start'), + Route('mediagoblin.submit.collection', '/collection', + controller='mediagoblin.submit.views:add_collection'), + ] diff --git a/mediagoblin/submit/views.py b/mediagoblin/submit/views.py index 72186136..a9b13778 100644 --- a/mediagoblin/submit/views.py +++ b/mediagoblin/submit/views.py @@ -14,6 +14,7 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . +from mediagoblin import messages import mediagoblin.mg_globals as mg_globals import uuid from os.path import splitext @@ -181,3 +182,46 @@ def submit_start(request): 'mediagoblin/submit/start.html', {'submit_form': submit_form, 'app_config': mg_globals.app_config}) + +@require_active_login +def add_collection(request, media=None): + """ + View to create a new collection + """ + submit_form = submit_forms.AddCollectionForm(request.POST) + + if request.method == 'POST' and submit_form.validate(): + try: + collection = request.db.Collection() + collection.id = ObjectId() + + collection.title = unicode(request.POST['title']) + + collection.description = unicode(request.POST.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(validate=True) + + 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}) -- cgit v1.2.3