a0afaa3062e482fd1a880a284c6b9c0e1a91c931
[mediagoblin.git] / mediagoblin / edit / views.py
1
2
3 from webob import Response, exc
4
5 from mediagoblin.edit import forms
6 from mediagoblin.decorators import require_active_login, get_user_media_entry
7
8
9 def may_edit_media(request, media):
10 """Check, if the request's user may edit the media details"""
11 if media['uploader'] == request.user['_id']:
12 return True
13 if request.user['is_admin']:
14 return True
15 return False
16
17
18 @get_user_media_entry
19 @require_active_login
20 def edit_media(request, media):
21 if not may_edit_media(request, media):
22 return exc.HTTPForbidden()
23
24 form = forms.EditForm(request.POST,
25 title = media['title'],
26 slug = media['slug'],
27 description = media['description'])
28
29 if request.method == 'POST' and form.validate():
30 media['title'] = request.POST['title']
31 media['description'] = request.POST['description']
32 media['slug'] = request.POST['slug']
33 media.save()
34
35 # redirect
36 return exc.HTTPFound(
37 location=request.urlgen("mediagoblin.user_pages.media_home",
38 user=media.uploader()['username'], media=media['_id']))
39
40 # render
41 template = request.template_env.get_template(
42 'mediagoblin/edit/edit.html')
43 return Response(
44 template.render(
45 {'request': request,
46 'media': media,
47 'form': form}))