Exemple #1
0
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
Exemple #2
0
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')