def NextGeneration( cls ): """ Get a generation number. """ now_sec, now_nsec = storagetypes.clock_gettime() # 10ths of milliseconds generation = now_sec * 10000 + now_nsec / 100000 return generation
def createvolume(request): session = request.session username = session['login_email'] message = "" if request.method == "POST": # Validate input forms form = forms.CreateVolume(request.POST) if form.is_valid(): # attempt to create the volume # CREATE VOLUME kwargs = {} kwargs['name'] = form.cleaned_data['name'] kwargs['blocksize'] = int(form.cleaned_data['blocksize']) kwargs['description'] = form.cleaned_data['description'] kwargs['volume_secret'] = form.cleaned_data['password'] kwargs['private'] = form.cleaned_data['private'] try: volume_key = db.create_volume(username, **kwargs) volume = volume_key.get() except Exception, e: logging.exception(e) message = "Unable to create Volume '{}': {}".format( form.cleaned_data['name'], e.message) form = forms.CreateVolume() t = loader.get_template('createvolume.html') c = RequestContext(request, { 'username': username, 'form': form, 'message': message }) return HttpResponse(t.render(c)) now_sec, now_nsec = clock_gettime() rc = db.make_root(volume, volume.owner_id) session['new_change'] = "Your new volume is ready." session['next_url'] = '/syn/volume/myvolumes/' session['next_message'] = "Click here to see your volumes." return redirect('/syn/thanks/') else: # Prep returned form values (so they don't have to re-enter stuff) if 'name' in form.errors: oldname = "" else: oldname = request.POST['name'] if 'blocksize' in form.errors: oldblocksize = "" else: oldblocksize = request.POST['blocksize'] if 'description' in form.errors: olddescription = "" else: olddescription = request.POST['description'] # Prep error message message = "Invalid form entry: " for k, v in form.errors.items(): message = message + "\"" + k + "\"" + " -> " for m in v: message = message + m + " " # Give then the form again form = forms.CreateVolume( initial={ 'name': oldname, 'blocksize': oldblocksize, 'description': olddescription }) t = loader.get_template('createvolume.html') c = RequestContext(request, { 'username': username, 'form': form, 'message': message }) return HttpResponse(t.render(c))