def create_or_edit_release(request, project_slug, release_slug=None): project = get_object_or_404(Project, slug=project_slug) if release_slug: action = "Edit release" release = get_object_or_404(Release, project=project, slug=release_slug) if not project.get_perms(request.user).get("has_member_perm", False): request.user.message_set.create(message=NEED_MEMBER_PERM) return HttpResponseRedirect(release.version.get_absolute_url()) form_class = forms.ReleaseEditForm else: action = "Release a new version" release = Release(project=project, creator=request.user) form_class = forms.ReleaseCreationForm if request.method == 'POST': form = form_class(data=request.POST, files=request.FILES, instance=release) if form.is_valid(): release = form.save(commit=False) # if not release_slug: # release.creator = request.user release.last_editor = request.user # release.project = project if "submit" in request.POST: release.save() if hasattr(form, 'save_m2m'): form.save_m2m() return HttpResponseRedirect(reverse('view_release', args=[project.slug, release.slug])) else: release.render_markup() preview = True else: form = form_class(instance=release) return render_to_response('projects/create_or_edit_release.html', locals(), context_instance=RequestContext(request))