def update(request, id=None): snippet = get_object_or_404(Snippet, pk=id) if request.user.id == snippet.author_id: if request.method == 'POST': # If the form has been submitted... form = SnippetForm(request.POST) # A form bound to the POST data if form.is_valid(): formData = form.save(commit = False) formData.pk = snippet.pk if 'delete' in request.POST: snippet.delete() request.session['flash'] = ['#' + str(formData.pk) +' deleted successfuly', 'sucess'] return HttpResponseRedirect('/accounts/profile/') if 'preview' in request.POST: data = {} data['title'] = formData.title; data['preview_body'] = highlight(formData.body, get_lexer_by_name(formData.lexer), HtmlFormatter(cssclass = 'source')) data['lines'] = range(1, formData.body.count('\n') + 2) data['form'] = form data['snippet'] = snippet return render_to_response('snippets/process.html', data, context_instance=build_context(request)) else: #save formData.author = request.user if not formData.lexer: try: lexer = guess_lexer(formData.body) for lex in LEXERS.itervalues(): if lexer.name == lex[1]: formData.lexer = lex[2][0].lower() except ClassNotFound: formData.lexer = 'text' formData.save() if snippet.body != formData.body: try: last_version = SnippetVersion.objects.order_by('-version').filter(snippet = snippet).all()[0] new_version = SnippetVersion(snippet = snippet, version = last_version.version + 1, body = snippet.body) new_version.save() except: create_version = SnippetVersion(snippet = snippet, version = 1, body = snippet.body) create_version.save() request.session['flash'] = ['#' + str(formData.pk) +' updated successfuly', 'sucess']; return HttpResponseRedirect('/accounts/profile/') # Redirect after POST else: return render_to_response('snippets/process.html', {'form': form }, context_instance=build_context(request)) else: form = SnippetForm(instance=snippet) return render_to_response('snippets/process.html', {'form': form, 'snippet': snippet }, context_instance=build_context(request)) else: request.session['flash'] = ['Access denied', 'error']; return HttpResponseRedirect('/accounts/profile/') # Redirect after POST
def create(request): """ Expect a post """ user = _auth(request) if user: data = simplejson.loads(request.POST.get('data', '{}')) data['status'] = 'published' form = SnippetForm(data) if not form.is_valid(): fb(form.errors) return HttpResponse('VALIDATION') try: lexer_obj = guess_lexer(data['body']) for lex in LEXERS.itervalues(): if lexer_obj.name == lex[1]: lexer = lex[2][0].lower() break except ClassNotFound: lexer = u'text' try: snippet = Snippet( author = user, title = data['title'], description = data['description'], body=data['body'], tags=data['tags'], lexer=lexer, via=data['via'], privacy = data['privacy'], status = data['status'] ) snippet.save() return HttpResponse('SUCCESS') except: return HttpResponse('ERROR') else: return HttpResponse('NOT_AUTHORIZED')