Exemplo n.º 1
0
def index(request):
    context = additional_context(request)
    if request.user.is_authenticated():

        ### delete job form start
        job_delete_form = JobDeleteForm(request.POST or None)
        if job_delete_form.is_valid():
            result = job_delete_form.rest_save(username=request.user.username)
            if result:
                messages.add_message(request, messages.SUCCESS, _(u'Backup was successfully deleted.'))
            else:
                messages.add_message(request, messages.ERROR, _(u'Backup couldn\'t be deleted.'))
        context['job_delete_form'] = job_delete_form

        rest_jobs = RestJobs(username=request.user.username)
        jobs = rest_jobs.get_all()
        #### delete job form end

        if jobs and 'errorType' in jobs:
            if jobs['errorType'] == 'org.backmeup.model.exceptions.UnknownUserException':
                logout(request)
                redirect('index')
            else:
                messages.error(request, _(jobs['errorMessage']))
                context['needs_email_validation'] = True
        else:
            rest_datasource_profile = RestDatasourceProfile(username=request.user.username)
            datasource_profiles = rest_datasource_profile.get_all()

            rest_datasink_profile = RestDatasinkProfile(username=request.user.username)
            datasink_profiles = rest_datasink_profile.get_all()

            for job in jobs:
                # need to cut of first 3 numbers to get valid unix timestamp
                if 'createDate' in job:
                    job['createDate'] = datetime.datetime.fromtimestamp(job['createDate']/1000)
                if 'startDate' in job:
                    job['startDate'] = datetime.datetime.fromtimestamp(job['startDate']/1000)
                if 'lastBackup' in job:
                    job['lastBackup'] = datetime.datetime.fromtimestamp(job['lastBackup']/1000)
                if 'nextBackup' in job:
                    job['nextBackup'] = datetime.datetime.fromtimestamp(job['nextBackup']/1000)
                if 'lastSuccessful' in job:
                    job['lastSuccessful'] = datetime.datetime.fromtimestamp(job['lastSuccessful']/1000)
                
                job['datasink']['title'] = get_sink_title(datasink_profiles, job['datasink']['datasinkId'])
                #job['datasources'] = []
                for datasource in job['datasources']:
                    datasource['title'] = get_source_title(datasource_profiles, datasource['datasourceId'])
            context['jobs'] = jobs

    return render_to_response(
        "www/index.html",
        context,
        context_instance=RequestContext(request))
Exemplo n.º 2
0
def job_log(request, job_id):
    rest_jobs = RestJobs(username=request.user.username)
    job_status = rest_jobs.get_job_status(job_id=job_id)

    rest_jobs = RestJobs(username=request.user.username)
    jobs = rest_jobs.get_all()

    job = get_job(jobs, job_id=job_id)

    rest_datasource_profile = RestDatasourceProfile(username=request.user.username)
    datasource_profiles = rest_datasource_profile.get_all()

    rest_datasink_profile = RestDatasinkProfile(username=request.user.username)
    datasink_profiles = rest_datasink_profile.get_all()

    job['datasink']['title'] = get_sink_title(datasink_profiles, job['datasink']['datasinkId'])
    #job['datasources'] = []
    for datasource in job['datasources']:
        datasource['title'] = get_source_title(datasource_profiles, datasource['datasourceId'])
    log=job_status['backupStatus']
    for l in log:
	l['message']=l['message'].encode("utf-8")
	if 'timeStamp' in l:
		l['timeStamp'] = datetime.datetime.fromtimestamp(int(l['timeStamp'])/1000)
    context = {
        'job': job,
        'log': log,
    }
    try:
        context['current_status'] = job_status['backupStatus'][0]['type']
    except:
        pass

    return render_to_response(
        "www/job_log.html",
        context,
        context_instance=RequestContext(request))
Exemplo n.º 3
0
def datasource_select(request):
    try:
        del request.session['datasource_profile_id']
        del request.session['datasink_profile_id']
    except Exception:
        pass
    
    rest_datasource = RestDatasource()
    datasources = rest_datasource.get_all()
    datasource_choices = []
    for item in datasources:
        datasource_choices.append((item['datasourceId'], _(item['title'])))
    
    rest_datasource_profile = RestDatasourceProfile(username=request.user.username)
    datasource_profiles = rest_datasource_profile.get_all()
    datasource_profile_choices = []
    if len(datasource_profiles):
        for item in datasource_profiles:
            # no need to show profiles without 'identification'
            # * it's not a completely authenticated profile
            # * it's a profile whitch doesn't require authentication
            if 'identification' in item:
                title = _(item['pluginName'] + " - %(account)s") % {'account': item['identification']}
                datasource_profile_choices.append( (item['datasourceProfileId'], title) )
    if len(datasource_profile_choices):
        datasource_profile_choices = [("", "---")] + datasource_profile_choices
    
    extra_data = {
        'datasource_choices': datasource_choices,
        'datasource_profile_choices': datasource_profile_choices,
    }
    
    form = DatasourceSelectForm(request.POST or None, extra_data=extra_data)
    
    if form.is_valid():
        if form.cleaned_data['datasource']:
            rest_datasource_profile = RestDatasourceProfile(username=request.user.username)
            profile_name = _("%(plugin)s - profile") % {'plugin': form.cleaned_data['datasource']}
            data = {
                "profileName": profile_name,
                "keyRing": request.session['key_ring'],
            }
            result = rest_datasource_profile.auth(datasource_id=form.cleaned_data['datasource'], data=data)
            
            if hasError(result):
                messages.add_message(request, messages.ERROR, _(getErrorMsg(result)))
            else:
                request.session['auth_data'] = result
                if result['type'] == 'OAuth':
                    request.session['next_step'] = 'datasource-auth'
                    return redirect(result['redirectURL'])
                return redirect('datasource-auth')

        elif form.cleaned_data['datasource_profile']:
            request.session['datasource_profile_id'] = form.cleaned_data['datasource_profile']
            try:
                del request.session['auth_data']
            except Exception:
                pass
            return redirect('datasink-select')
        
    context = additional_context(request)
    context['form'] = form

    return render_to_response(
        "www/datasource_select.html",
        context,
        context_instance=RequestContext(request))