fix auth error and simplify url and email checks
[mediagoblin.git] / mediagoblin / views.py
index 1081ce29a217f97cccad61a907ac8f721f696662..9e893d566ba3cb11121e2d426cf84616f4bc964c 100644 (file)
@@ -1,5 +1,5 @@
 # GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011, 2012 MediaGoblin contributors.  See AUTHORS.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU Affero General Public License as published by
 # You should have received a copy of the GNU Affero General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-import datetime
+from mediagoblin import mg_globals
+from mediagoblin.db.models import MediaEntry
+from mediagoblin.tools.pagination import Pagination
+from mediagoblin.tools.pluginapi import hook_handle
+from mediagoblin.tools.response import render_to_response, render_404
+from mediagoblin.decorators import uses_pagination, user_not_banned
 
-from webob import Response, exc
-import wtforms
 
-from mediagoblin import models
-
-def root_view(request):
-    template = request.template_env.get_template(
-        'mediagoblin/root.html')
-    return Response(
-        template.render(
-            {'request': request}))
-
-
-class ImageSubmitForm(wtforms.Form):
-    title = wtforms.TextField(
-        'Title',
-        [wtforms.validators.Length(min=1, max=500)])
-    description = wtforms.TextAreaField('Description of this work')
-    file = wtforms.FileField('File')
+@user_not_banned
+@uses_pagination
+def default_root_view(request, page):
+    cursor = request.db.query(MediaEntry).filter_by(state=u'processed').\
+        order_by(MediaEntry.created.desc())
 
+    pagination = Pagination(page, cursor)
+    media_entries = pagination()
+    return render_to_response(
+        request, 'mediagoblin/root.html',
+        {'media_entries': media_entries,
+         'allow_registration': mg_globals.app_config["allow_registration"],
+         'pagination': pagination})
 
-def submit_test(request):
-    image_form = ImageSubmitForm(request.POST)
-    if request.method == 'POST' and image_form.validate():
-        # create entry and save in database
 
-        entry = request.db.MediaEntry()
-        entry['title'] = request.POST['title']
-        entry['description'] = request.POST.get(['description'])
-        entry['media_type'] = u'image'
-
-        # TODO this does NOT look save, we should clean the filename somenow?
-        entry['file_store'] = request.POST['file'].filename
-
-        entry.save(validate=True)
-
-        # save file to disk
-        ## TODO
-        #open('/tmp/read_file.png', 'wb').write(request.POST['file'].file.read())
 
+def root_view(request):
+    """
+    Proxies to the real root view that's displayed
+    """
+    view = hook_handle("frontpage_view") or default_root_view
+    return view(request)
 
-        # resize if necessary
-        ## Hm.  This should be done on a separate view?
 
-        # redirect
-        pass
 
+def simple_template_render(request):
+    """
+    A view for absolutely simple template rendering.
+    Just make sure 'template' is in the matchdict!
+    """
+    template_name = request.matchdict['template']
+    return render_to_response(
+        request, template_name, {})
 
+def terms_of_service(request):
+    if mg_globals.app_config["show_tos"] is False:
+        return render_404(request)
 
-    # render
-    template = request.template_env.get_template(
-        'mediagoblin/test_submit.html')
-    return Response(
-        template.render(
-            {'request': request,
-             'image_form': image_form}))
+    return render_to_response(request,
+        'mediagoblin/terms_of_service.html', {})