def pastie_save(req, nosave=False): """ retrieve shell from the form, save or display """ if req.method == 'POST': slug = req.POST.get('slug', None) if slug: pastieinstance = get_object_or_404(Pastie,slug=slug) pastieform = PastieForm(req.POST, instance=pastieinstance) else: pastieform = PastieForm(req.POST) shellform = ShellForm(req.POST) if shellform.is_valid(): shell = shellform.save(commit=False) if nosave: " return the pastie page only " return pastie_show(req, None, shell) if pastieform.is_valid(): pastie = pastieform.save(commit=False) " create slug from random string" # at the moment no versioning - just saving with version 0 if not pastie.slug: allowed_chars='abcdefghjkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ23456789' from random import choice pastie.slug = ''.join([choice(allowed_chars) for i in range(params.SLUG_LENGTH)]) #here some random stuff pastie.save() shell.pastie = pastie shell.save() " return json with pastie url " return HttpResponse(simplejson.dumps( {'pastie_url': ''.join([settings.WEB_SERVER, shell.get_absolute_url()])} ),mimetype='application/javascript' ) else: error = "Pastie form does not validate %s" % pastieform['slug'].errors else: error = "Shell form does not validate" else: error = 'Please use POST request' return HttpResponse(simplejson.dumps({'error':error}), mimetype='application/javascript' )
def pastie_save(req, nosave=False, skin=None): """ retrieve shell from the form, save or display Fix dependency """ if req.method == 'POST': slug = req.POST.get('slug', None) if slug: " UPDATE - get the instance if slug provided " pastieinstance = get_object_or_404(Pastie,slug=slug) pastieform = PastieForm(req.POST, instance=pastieinstance) else: " CREATE " pastieform = PastieForm(req.POST) shellform = ShellForm(req.POST) if shellform.is_valid(): " Instantiate shell data from the form " shell = shellform.save(commit=False) # add js_dependency dependency_ids = [int(dep[1]) for dep in req.POST.items() if dep[0].startswith('js_dependency')] dependencies = [] for dep_id in dependency_ids: dep = JSDependency.objects.get(id=dep_id) dependencies.append(dep) if nosave: " return the pastie page only " return pastie_display(req, None, shell, dependencies, skin) " add user to shell if anyone logged in " if req.user.is_authenticated(): shell.author = req.user if pastieform.is_valid(): " prepare pastie object from DB and POST " pastie = pastieform.save(commit=False) #" set author if first save " #if shell.author and shell.version == 0 and (not shell.revision or shell.revision == 0): # pastie.author = shell.author " create slug from random string if needed" if not pastie.slug: pastie.set_slug() pastie.save() " Connect shell with pastie " shell.pastie = pastie if slug: shell.set_next_version() shell.save() for dep in dependencies: shell.js_dependency.add(dep) " return json with pastie url " return HttpResponse(simplejson.dumps({ #'pastie_url': ''.join(['http://',req.META['SERVER_NAME'], shell.get_absolute_url()]), 'pastie_url_relative': shell.get_absolute_url() }),mimetype='application/javascript' ) else: error = "Pastie form does not validate %s" % pastieform['slug'].errors else: error = "Shell form does not validate" for s in shellform: if hasattr(s, 'errors') and s.errors: error = error + str(s.__dict__) else: error = 'Please use POST request' return HttpResponse(simplejson.dumps({'error':error}), mimetype='application/javascript' )