Handle Exceptions from save(); Move may_edit_media
[mediagoblin.git] / mediagoblin / edit / views.py
1
2
3 from webob import Response, exc
4
5 from mediagoblin.edit import forms
6 from mediagoblin.edit.lib import may_edit_media
7 from mediagoblin.decorators import require_active_login, get_user_media_entry
8
9
10 @get_user_media_entry
11 @require_active_login
12 def edit_media(request, media):
13 if not may_edit_media(request, media):
14 return exc.HTTPForbidden()
15
16 form = forms.EditForm(request.POST,
17 title = media['title'],
18 slug = media['slug'],
19 description = media['description'])
20
21 if request.method == 'POST' and form.validate():
22 media['title'] = request.POST['title']
23 media['description'] = request.POST['description']
24 media['slug'] = request.POST['slug']
25 try:
26 media.save()
27 except Exception as e:
28 return exc.HTTPConflict(detail = str(e))
29
30 # redirect
31 return exc.HTTPFound(
32 location=request.urlgen("mediagoblin.user_pages.media_home",
33 user=media.uploader()['username'], media=media['_id']))
34
35 # render
36 template = request.template_env.get_template(
37 'mediagoblin/edit/edit.html')
38 return Response(
39 template.render(
40 {'request': request,
41 'media': media,
42 'form': form}))