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 
Example #2
0
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))