Esempio n. 1
0
def add(request, teste=None):
    comp_id = 0
    if request.GET:
        comp_id = request.GET["comp_id"]
    title = u"Adicionar backup"
    form = ProcedureForm(prefix="procedure")
    content = {'title': title,
                'form':form,
                'comp_id': comp_id}
    if request.method == "POST":
        data = copy(request.POST)
        if data["procedure-fileset"]:
            fileset = FileSet.objects.get(id=data['procedure-fileset'])
            content['fileset'] = fileset
        if data["procedure-schedule"]:
            schedule = Schedule.objects.get(id=data['procedure-schedule'])
            content['schedule'] = schedule
        procedure_form = ProcedureForm(data, prefix="procedure")
        if procedure_form.is_valid():
            procedure = procedure_form.save()
            messages.success(request, "Procedimento de backup '%s' criado com sucesso" % procedure.name)
            return redirect('/procedures/list')
        else:
            messages.error(request, "O procedimento de backup não foi criado devido aos seguintes erros")
            content['form'] = procedure_form
            return render_to_response(request, "add_procedure.html", content)
    return render_to_response(request, "add_procedure.html", content)
Esempio n. 2
0
def network(request):
    logger = logging.getLogger(__name__)
    extra_context = {'wizard_title': u'2 de 4 - Configuração de Rede',
                     'page_name': u'network'}
    if request.method == "GET":
        interface = NetworkInterface.get_instance()
        Form = form(NetworkInterface)
        extra_context['form'] = Form(instance=interface)
        return render_to_response( request, "generic.html", extra_context)
    else:
        edit_singleton_model(request, "generic.html",
                             "nimbus.wizard.views.timezone",
                              model = NetworkInterface,
                              extra_context = extra_context)

        interface = NetworkInterface.get_instance()


        if interface.address == get_raw_network_interface_address():
            return redirect( "nimbus.wizard.views.timezone" )
        else:
            logger.info('redirecting user to redirect page')
            return render_to_response(request, "redirect.html", 
                                        dict(ip_address=interface.address,
                                             url=reverse('nimbus.wizard.views.timezone')))
Esempio n. 3
0
def edit(request, procedure_id):
    p = get_object_or_404(Procedure, pk=procedure_id)
    title = u"Editando '%s'" % p.name
    partial_form = ProcedureForm(prefix="procedure", instance=p)
    content = {'title': title,
              'form': partial_form,
              'id': procedure_id,
              'procedure': p,
              'schedule': p.schedule,
              'fileset': p.fileset,
              'retention_time': p.pool_retention_time}
    print content
    print content['schedule'].id
    if request.method == "POST":
        data = copy(request.POST)
        if data['procedure-schedule'] == u"":
            data['procedure-schedule'] = u"%d" % p.schedule.id
        if data['procedure-fileset'] == u"":
            data['procedure-fileset'] = u"%d" % p.fileset.id
        procedure_form = ProcedureForm(data, instance=p, prefix="procedure")
        if procedure_form.is_valid():
            procedure_form.save()
            messages.success(request, "Procedimento '%s' alterado com sucesso" % p.name)
            return redirect('/procedures/list')
        else:
            messages.error(request, "O procedimento de backup não foi criado devido aos seguintes erros")
            content['forms'] = [procedure_form]
            return render_to_response(request, "edit_procedure.html", content)
    return render_to_response(request, 'edit_procedure.html', content)
Esempio n. 4
0
def edit(request, procedure_id):
    p = get_object_or_404(Procedure, pk=procedure_id)
    title = u"Editando '%s'" % p.name
    partial_form = ProcedureForm(prefix="procedure", instance=p)
    content = {
        'title': title,
        'form': partial_form,
        'id': procedure_id,
        'procedure': p,
        'schedule': p.schedule,
        'fileset': p.fileset,
        'retention_time': p.pool_retention_time
    }
    if request.method == "POST":
        data = copy(request.POST)
        if data['procedure-schedule'] == u"":
            data['procedure-schedule'] = u"%d" % p.schedule.id
        if data['procedure-fileset'] == u"":
            data['procedure-fileset'] = u"%d" % p.fileset.id
        procedure_form = ProcedureForm(data, instance=p, prefix="procedure")
        if procedure_form.is_valid():
            procedure_form.save()
            messages.success(request,
                             "Procedimento '%s' alterado com sucesso" % p.name)
            call_reload_baculadir()
            return redirect('/procedures/list')
        else:
            messages.error(
                request,
                "O procedimento de backup não foi criado devido aos seguintes erros"
            )
            content['forms'] = [procedure_form]
            return render_to_response(request, "edit_procedure.html", content)
    return render_to_response(request, 'edit_procedure.html', content)
Esempio n. 5
0
def network(request):
    logger = logging.getLogger(__name__)
    extra_context = {
        'wizard_title': u'2 de 5 - Configuração de Rede',
        'page_name': u'network'
    }
    if request.method == "GET":
        interface = NetworkInterface.get_instance()
        Form = form(NetworkInterface)
        extra_context['form'] = Form(instance=interface)
        return render_to_response(request, "generic.html", extra_context)
    else:
        edit_singleton_model(request,
                             "generic.html",
                             next_step_url('network'),
                             model=NetworkInterface,
                             extra_context=extra_context)

        interface = NetworkInterface.get_instance()

        if interface.address == get_raw_network_interface_address():
            return redirect_next_step('network')
        else:
            logger.info('redirecting user to redirect page')
            return render_to_response(
                request, "redirect.html",
                dict(ip_address=interface.address,
                     url=next_step_url('network')))
Esempio n. 6
0
def add(request, teste=None):

    initial = {}
    if request.method == "GET":
        computer = request.GET.get("comp_id", 0)

        if computer:
            initial = {"computer" : computer}
        else:
            initial = {}

    title = u"Adicionar backup"
    form = ProcedureForm(initial=initial, prefix="procedure")

    content = {'title': title,
                'form':form}
    if request.method == "POST":
        data = copy(request.POST)
        if data["procedure-fileset"]:
            fileset = FileSet.objects.get(id=data['procedure-fileset'])
            content['fileset'] = fileset
        if data["procedure-schedule"]:
            schedule = Schedule.objects.get(id=data['procedure-schedule'])
            content['schedule'] = schedule
        procedure_form = ProcedureForm(data, prefix="procedure")
        if procedure_form.is_valid():
            procedure = procedure_form.save()
            messages.success(request, "Procedimento de backup '%s' criado com sucesso" % procedure.name)
            return redirect('/procedures/list')
        else:
            messages.error(request, "O procedimento de backup não foi criado devido aos seguintes erros")
            content['form'] = procedure_form
            return render_to_response(request, "add_procedure.html", content)
    return render_to_response(request, "add_procedure.html", content)
Esempio n. 7
0
def step3(request):
    """Selecionar o JOB"""
    if request.method == "POST":
        data = request.POST
        computer = Computer.objects.get(id=data["computer_id"])
        procedure = Procedure.objects.get(id=data["procedure_id"])
        if data.has_key("start_date") and data.has_key("end_date"):
            start_date = datetime.strptime(data["start_date"], "%d/%m/%Y")
            end_date = datetime.strptime(data["end_date"] + " 23:59:59", "%d/%m/%Y %H:%M:%S")
            jobs = procedure.get_backup_jobs_between(start_date, end_date)
        else:
            end_date = datetime.now()
            start_date = datetime.today() - timedelta(30)
            jobs = procedure.get_backup_jobs_between(start_date, end_date)
            # jobs = procedure.all_my_good_jobs
        extra_content = {
            'computer': computer,
            'procedure': procedure,
            'jobs': jobs,
            'start_date': start_date.strftime("%d/%m/%Y"),
            'end_date': end_date.strftime("%d/%m/%Y"),
            'title': u"Restauração de arquivos"
        }
        return render_to_response(request, "step3.html", extra_content)
    else:
        return redirect('nimbus.restore.views.step1')
Esempio n. 8
0
def pid_history(request):

    threadpool = middlewares.ThreadPool.get_instance()
    jobs = threadpool.list_jobs_pending()

    if 'ajax' in request.POST:
        l = []
        for job in jobs:
            d = {}
            d['pk'] = job.id
            d['fields'] = {}
            d['fields']['pid'] = job.id
            d['fields']['created_at'] = job.created_at.strftime(
                "%d/%m/%Y %H:%M")
            d['fields']['name'] = job.description
            d['fields']['status'] = job.status
            l.append(d)
        response = simplejson.dumps(l)
        return HttpResponse(response, mimetype="text/plain")

    return render_to_response(request, "pid_history.html", {
        "object_list": jobs,
        "list_type": "Downloads",
        "title": u"Processos"
    })
Esempio n. 9
0
def detail(request):
    offsite = Offsite.get_instance()
    uploads = list(LocalUploadRequest.objects.all()) + list(
        RemoteUploadRequest.objects.all())
    content = []
    for upload in uploads:
        content.append({
            'type':
            'ok',
            'date':
            upload.last_attempt or upload.created_at,
            'label':
            upload.volume.filename,
            'message':
            "%.2f MB" % utils.bytes_to_mb(upload.volume.size)
        })
    transferencias_em_execucao = [{
        'title': u'Transferências em execução',
        'content': content
    }]

    if offsite.active:
        graphic = Graphics()
        graph_block = graphic.data_to_template()[0]
    else:
        ocupacao_offsite = 0.0
        messages.error(request, "Offsite desativado")
    return render_to_response(request, "detail.html", locals())
Esempio n. 10
0
def list_uploadrequest(request):
    uploads_requests = list(LocalUploadRequest.objects.all()) + list(RemoteUploadRequest.objects.all())
    if 'ajax' in request.POST:
        l = []
        for up in uploads_requests:
            d = {}
            d['pk'] = up.id
            # d['model'] = up.model
            d['fields'] = {}
            d['fields']['filename'] = up.volume.filename
            d['fields']['created_at'] = up.created_at.strftime("%d/%m/%Y %H:%M")
            d['fields']['attempts'] = up.attempts
            if up.last_attempt:
                d['fields']['last_attempt'] = up.last_attempt.strftime("%d/%m/%Y %H:%M")
            else:
                d['fields']['last_attempt'] = None
            d['fields']['friendly_rate'] = up.friendly_rate
            d['fields']['estimated_transfer_time'] = up.estimated_transfer_time
            d['fields']['finished_percent'] = up.finished_percent
            l.append(d)
        # response = serializers.serialize("json", uploads_requests)
        response = simplejson.dumps(l)
        return HttpResponse(response, mimetype="text/plain")
    return render_to_response(request, 
                              "list_downuploadrequest.html", 
                              {"object_list": uploads_requests,
                               "list_type": "Uploads",
                               "title": u"Uploads ativos"})
Esempio n. 11
0
def list(request):
    d = {
        "storages" : Storage.objects.filter(active=True),
        "title": u"Armazenamento"
    }

    return render_to_response(request, "storages_list.html", d)
Esempio n. 12
0
def delete(request, object_id):
    c = get_object_or_404(Computer, pk=object_id)
    jobs = c.all_my_jobs
    content = {'computer': c,
               'last_jobs': jobs,
               'procedures': c.procedure_set.all()}
    return render_to_response(request, "remove_computer.html", content)
Esempio n. 13
0
def list_procedures(request):
    procedures = Procedure.objects.filter(id__gt=1, offsite_on=True)
    extra_content = {
        'procedures': procedures,
        'title': u"Procedimentos com offsite ativo"
    }
    return render_to_response(request, "procedures_list.html", extra_content)
Esempio n. 14
0
def about(request):
    version_file = settings.VERSION_FILE

    with file(version_file) as f:
        version_content = f.read().strip()


    version, githash = version_content.split('-')

    computers = len(Computer.objects.exclude(id=1))
    all_procedures = Procedure.objects.exclude(id=1)
    jobs = 0
    for procedure in all_procedures:
        jobs += len(procedure.all_my_good_jobs)
    procedures = len(all_procedures)

    try:
        last_backup = Procedure.objects.get(id=1).last_success_date().endtime.strftime("%d/%m/%Y - %H:%M:%S")
    except IndexError:
        last_backup = "Não realizado"

    data = {'computers': computers,
            'procedures': procedures,
            'jobs': jobs,
            'last_backup': last_backup,
            'version': version,
            'release': githash
            }
    return render_to_response(request, "about.html", data)
Esempio n. 15
0
def add(request):
    lforms = [ forms.ComputerForm ]
    content = {'title':u'Ativar novo Computador',
               'forms':lforms,
               'computers':Computer.objects.filter(active=False)
              }
    return render_to_response(request, "computers_add.html", content)
Esempio n. 16
0
def step3(request):
    """Selecionar o JOB"""
    if request.method == "POST":
        data = request.POST
        computer = Computer.objects.get(id=data["computer_id"])
        procedure = Procedure.objects.get(id=data["procedure_id"])
        if data.has_key("start_date") and data.has_key("end_date"):
            start_date = datetime.strptime(data["start_date"], "%d/%m/%Y")
            end_date = datetime.strptime(data["end_date"] + " 23:59:59",
                                         "%d/%m/%Y %H:%M:%S")
            jobs = procedure.get_backup_jobs_between(start_date, end_date)
        else:
            end_date = datetime.now()
            start_date = datetime.today() - timedelta(30)
            jobs = procedure.get_backup_jobs_between(start_date, end_date)
            # jobs = procedure.all_my_good_jobs
        extra_content = {
            'computer': computer,
            'procedure': procedure,
            'jobs': jobs,
            'start_date': start_date.strftime("%d/%m/%Y"),
            'end_date': end_date.strftime("%d/%m/%Y"),
            'title': u"Restauração de arquivos"
        }
        return render_to_response(request, "step3.html", extra_content)
    else:
        return redirect('nimbus.restore.views.step1')
Esempio n. 17
0
def delete(request, object_id):
    c = get_object_or_404(Computer, pk=object_id)
    jobs = c.all_my_jobs
    content = {'computer': c,
               'last_jobs': jobs,
               'procedures': c.procedure_set.all()}
    return render_to_response(request, "remove_computer.html", content)
Esempio n. 18
0
def add(request):
    lforms = [ forms.ComputerForm ]
    content = {'title':u'Ativar novo Computador',
               'forms':lforms,
               'computers':Computer.objects.filter(active=False,id__gt=1)
              }
    return render_to_response(request, "computers_add.html", content)
Esempio n. 19
0
def list_uploadrequest(request):
    uploads_requests = list(LocalUploadRequest.objects.all()) + list(
        RemoteUploadRequest.objects.all())
    if 'ajax' in request.POST:
        l = []
        for up in uploads_requests:
            d = {}
            d['pk'] = up.id
            # d['model'] = up.model
            d['fields'] = {}
            d['fields']['filename'] = up.volume.filename
            d['fields']['created_at'] = up.created_at.strftime(
                "%d/%m/%Y %H:%M")
            d['fields']['attempts'] = up.attempts
            if up.last_attempt:
                d['fields']['last_attempt'] = up.last_attempt.strftime(
                    "%d/%m/%Y %H:%M")
            else:
                d['fields']['last_attempt'] = None
            d['fields']['friendly_rate'] = up.friendly_rate
            d['fields']['estimated_transfer_time'] = up.estimated_transfer_time
            d['fields']['finished_percent'] = up.finished_percent
            l.append(d)
        # response = serializers.serialize("json", uploads_requests)
        response = simplejson.dumps(l)
        return HttpResponse(response, mimetype="text/plain")
    return render_to_response(
        request, "list_downuploadrequest.html", {
            "object_list": uploads_requests,
            "list_type": "Uploads",
            "title": u"Uploads ativos"
        })
Esempio n. 20
0
def step1(request):
    """Selecionar o computador"""
    computers = Computer.objects.filter(active=True,id__gt=1)
    extra_content = {
        'computers': computers,
        'title': u"Restauração de arquivos"
    }
    return render_to_response(request, "step1.html", extra_content)
Esempio n. 21
0
def list_offsite(request):
    procedures = Procedure.with_job_tasks('Offsite')
    last_jobs = Procedure.jobs_with_job_tasks('Offsite')
    extra_content = {'procedures': procedures,
                     'last_jobs' : last_jobs,
                     'title': u"Procedimentos com offsite ativo"}

    return render_to_response(request, "procedures_list.html", extra_content)
Esempio n. 22
0
def step1(request):
    """Selecionar o computador"""
    computers = Computer.objects.filter(active=True, id__gt=1)
    extra_content = {
        'computers': computers,
        'title': u"Restauração de arquivos"
    }
    return render_to_response(request, "step1.html", extra_content)
Esempio n. 23
0
def finish(request):
    extra_content = {'title': u"Recuperação do sistema"}
    if request.method == "GET":
        return render_to_response(request, "recovery_finish.html", extra_content)
    elif request.method == "POST":
        wizard = Wizard.get_instance()
        wizard.finish()
        return redirect( "nimbus.base.views.home" )
Esempio n. 24
0
def view_computer(request, object_id):
    storage = Storage.objects.get(id=object_id)
    computers = Computer.objects.filter(procedure__profile__storage=storage)
    d = {
        "storage" : storage,
        "computers" : computers,
        "title": u'Computadores do armazenamento "%s"' % storage.name
    }
    return render_to_response(request, "computers_list.html", d)
Esempio n. 25
0
def select_storage(request):
    if request.method == "GET":
        extra_content = {'wizard_title': u'Selecione o armazenamento',
                         'title': u"Recuperação do sistema",
                         'devices' : offsite.list_disk_labels()}
        return render_to_response(request, "recovery_select_storage.html",
                                  extra_content)
    else:
        raise Http404()
Esempio n. 26
0
def finish(request):
    extra_content = {'title': u"Recuperação do sistema"}
    if request.method == "GET":
        return render_to_response(request, "recovery_finish.html",
                                  extra_content)
    elif request.method == "POST":
        wizard = Wizard.get_instance()
        wizard.finish()
        return redirect("nimbus.base.views.home")
Esempio n. 27
0
def profile_list(request):
    title = u"Perfis de configuração"
    filesets = FileSet.objects.filter(is_model=True)
    schedules = Schedule.objects.filter(is_model=True)
    computers = Computer.objects.filter(active=True,id__gt=1)
    content = {'title': u"Perfis de configuração",
               'filesets': filesets,
               'schedules': schedules,
               'computers': computers}
    return render_to_response(request, "profile_list.html", content)
Esempio n. 28
0
def profile_list(request):
    title = u"Perfis de configuração"
    filesets = FileSet.objects.filter(is_model=True)
    schedules = Schedule.objects.filter(is_model=True)
    computers = Computer.objects.filter(active=True,id__gt=1)
    content = {'title': u"Perfis de configuração",
               'filesets': filesets,
               'schedules': schedules,
               'computers': computers}
    return render_to_response(request, "profile_list.html", content)
Esempio n. 29
0
def list_offsite(request):
    procedures = Procedure.with_job_tasks('Offsite')
    last_jobs = Procedure.jobs_with_job_tasks('Offsite')
    extra_content = {
        'procedures': procedures,
        'last_jobs': last_jobs,
        'title': u"Procedimentos com offsite ativo"
    }

    return render_to_response(request, "procedures_list.html", extra_content)
Esempio n. 30
0
def recover_volumes(request):
    extra_content = {'wizard_title': u'Recuperando arquivos',
                     'title': u"Recuperação do sistema"}
    if request.method == "GET":
        return render_to_response(request, "recovery_recover_volumes.html",
                                  extra_content)
    elif request.method == "POST":
        localsource = request.POST.get("localsource", "offsite")
        if localsource != "offsite":
            device = request.POST.get("device")
            storage = StorageDeviceManager(device)
            manager = offsite.LocalManager(storage, "/bacula")
        else:
            manager =  offsite.RemoteManager()
        systemprocesses.min_priority_job("Recovery nimbus volumes",
                                         recover_volumes_worker, manager)
        extra_content.update({ "object_list" : DownloadRequest.objects.all()})
        return render_to_response(request, "recovery_recover_volumes.html", extra_content)
    else:
        raise Http404()
Esempio n. 31
0
def network_tool(request, type="ping"):
    if type == "ping":
        title = u"Teste de ping"
    elif type == "traceroute":
        title = u"Teste de traceroute"
    elif type == "nslookup":
        title = u"Teste de ns lookup"
    
    extra_content = {'title': title, 'type': type}
    
    return render_to_response(request, "system_network_tool.html", extra_content)
Esempio n. 32
0
def stat(request):
    memory = systeminfo.get_memory_usage()
    memory_free = 100 - memory
    extra_content = {
        'title': u"Estatística do sistema",
        'cpu' : systeminfo.get_cpu_usage(),
        'memory' : memory,
        'memory_free' : memory_free
    }

    return render_to_response(request, "stat.html", extra_content)
Esempio n. 33
0
def edit(request, fileset_id, computer_id):
    f = FileSet.objects.get(id=fileset_id)
    fileset_form = forms.FileSetForm(prefix="fileset", instance=f)
    deletes_form = forms.FilesToDeleteForm(instance=f)
    computer = get_object_or_404(Computer, pk=computer_id)
    content = {'title': u"Editar Conjunto de Arquivos '%s'" % f.name,
               'computer': computer,
               'fileset_form': fileset_form,
               'deletes_form': deletes_form,
               'fileset': f}
    return render_to_response(request, "edit_fileset.html", content)
Esempio n. 34
0
def select_storage(request):
    if request.method == "GET":
        extra_content = {
            'wizard_title': u'Selecione o armazenamento',
            'title': u"Recuperação do sistema",
            'devices': offsite.list_disk_labels()
        }
        return render_to_response(request, "recovery_select_storage.html",
                                  extra_content)
    else:
        raise Http404()
Esempio n. 35
0
def stat(request):
    memory = systeminfo.get_memory_usage()
    memory_free = 100 - memory
    extra_content = {
        'title': u"Estatística do sistema",
        'cpu': systeminfo.get_cpu_usage(),
        'memory': memory,
        'memory_free': memory_free
    }

    return render_to_response(request, "stat.html", extra_content)
Esempio n. 36
0
def password(request):
    extra_context = {
        'wizard_title': u'4 de 4 - Senha do usuário admin',
        'page_name': u'password',
        'previous': reverse('nimbus.wizard.views.timezone')
    }
    user = User.objects.get(id=1)
    if request.method == "GET":
        extra_context['form'] = SetPasswordForm(user)
        return render_to_response( request, "generic.html", extra_context )
    elif request.method == "POST":
        form = SetPasswordForm(user, request.POST)
        if form.is_valid():
            form.save()
            return redirect('nimbus.wizard.views.finish')
        else:
            extra_context['form'] = SetPasswordForm(user)
            extra_context['messages'] = [u'Please fill all fields.']
            return render_to_response( request, "generic.html", extra_context )
    else:
        raise Http404()
Esempio n. 37
0
def license(request):
    extra_context = {
        'wizard_title': u'1 de 4 - Licença',
        'page_name': u'license',
        'wide': 'wide'
    }
    if request.method == "GET":
        return render_to_response(request, "license.html", extra_context)
    elif request.method == "POST":
        return redirect('nimbus.wizard.views.network')
    else:
        raise Http404()
Esempio n. 38
0
def license(request):
    extra_context = {
        'wizard_title': u'1 de 5 - Licença',
        'page_name': u'license',
        'wide': 'wide'
    }
    if request.method == "GET":
        return render_to_response( request, "license.html", extra_context )
    elif request.method == "POST":
        return redirect_next_step('start')
    else:
        raise Http404()
Esempio n. 39
0
def password(request):
    extra_context = {
        'wizard_title': u'4 de 4 - Senha do usuário admin',
        'page_name': u'password',
        'previous': reverse('nimbus.wizard.views.timezone')
    }
    user = User.objects.get(id=1)
    if request.method == "GET":
        extra_context['form'] = SetPasswordForm(user)
        return render_to_response(request, "generic.html", extra_context)
    elif request.method == "POST":
        form = SetPasswordForm(user, request.POST)
        if form.is_valid():
            form.save()
            return redirect('nimbus.wizard.views.finish')
        else:
            extra_context['form'] = SetPasswordForm(user)
            extra_context['messages'] = [u'Please fill all fields.']
            return render_to_response(request, "generic.html", extra_context)
    else:
        raise Http404()
Esempio n. 40
0
def password(request):
    extra_context = {
        'wizard_title': u'5 de 5 - Senha do usuário admin',
        'page_name': u'password',
        'previous': previous_step_url('password')
    }
    user = User.objects.get(id=1)
    if request.method == "GET":
        extra_context['form'] = SetPasswordForm(user)
        return render_to_response(request, "generic.html", extra_context)
    elif request.method == "POST":
        form = SetPasswordForm(user, request.POST)
        if form.is_valid():
            form.save()
            return redirect_next_step('password')
        else:
            extra_context['form'] = SetPasswordForm(user)
            extra_context['messages'] = [u'Please fill all fields.']
            return render_to_response(request, "generic.html", extra_context)
    else:
        raise Http404()
Esempio n. 41
0
def recovery(request):
    extra_context = {
        'wizard_title': u'Recuperação do sistema',
        'page_name': u'recovery',
        'next': reverse('nimbus.wizard.views.timezone')
    }
    if request.method == "GET":
        return render_to_response(request, "recovery.html", extra_context)
    elif request.method == "POST":
        return redirect('nimbus.recovery.views.select_source')
    else:
        raise Http404()
Esempio n. 42
0
def password(request):
    extra_context = {
        'wizard_title': u'5 de 5 - Senha do usuário admin',
        'page_name': u'password',
        'previous': previous_step_url('password')
    }
    user = User.objects.get(id=1)
    if request.method == "GET":
        extra_context['form'] = SetPasswordForm(user)
        return render_to_response( request, "generic.html", extra_context )
    elif request.method == "POST":
        form = SetPasswordForm(user, request.POST)
        if form.is_valid():
            form.save()
            return redirect_next_step('password')
        else:
            extra_context['form'] = SetPasswordForm(user)
            extra_context['messages'] = [u'Please fill all fields.']
            return render_to_response( request, "generic.html", extra_context )
    else:
        raise Http404()
Esempio n. 43
0
def license(request):
    extra_context = {
        'wizard_title': u'1 de 4 - Licença',
        'page_name': u'license',
        'wide': 'wide'
    }
    if request.method == "GET":
        return render_to_response( request, "license.html", extra_context )
    elif request.method == "POST":
        return redirect('nimbus.wizard.views.network')
    else:
        raise Http404()
Esempio n. 44
0
def recovery(request):
    extra_context = {
        'wizard_title': u'Recuperação do sistema',
        'page_name': u'recovery',
        'next': reverse('nimbus.wizard.views.timezone')
    }
    if request.method == "GET":
        return render_to_response( request, "recovery.html", extra_context )
    elif request.method == "POST":
        return redirect('nimbus.recovery.views.select_source')
    else:
        raise Http404()
Esempio n. 45
0
def home(request):
    job_bytes = Job.get_bytes_from_last_jobs()
    grafico_backup_dados = {
        'title': u"Quantidade de dados realizados backup", 'width': "100%",
        'type': "bar",
        'cid': "chart1",
        'header': [d.strftime("%d/%m/%y") for d in sorted(job_bytes)],
        'labels': [utils.filesizeformat(v) for k, v in sorted(job_bytes.items())],
        'lines': {
            "Dados": utils.ordered_dict_value_to_formatted_float(job_bytes)
        }
    }

    job_files = Job.get_files_from_last_jobs()
    grafico_backup_arquivos = {
        'title': u"Quantidade de arquivos realizados backup", 'width': "100%",
        'type': "bar",
        'cid': "chart2",
        'header': [d.strftime("%d/%m/%y") for d in sorted(job_files)],
        'labels': [int(v) for k, v in sorted(job_files.items())],
        'lines': {
            "Arquivos": [int(v) for k, v in sorted(job_files.items())]
        }
    }

    graphics = Graphics()
    blocks = graphics.render_blocks()

    memory = systeminfo.get_memory_usage()
    memory_free = 100 - memory

    grafico_uso_memoria = {'title': u"Uso da memória", 'width': "90%", 'type': "pie", 'cid': "chart4", 'header': ["Gigabytes"],
              'lines': {
                  "Disponível": [memory_free],
                  "Ocupado": [memory]}}

    cpu = systeminfo.get_cpu_usage()
    cpu_free = 100 - memory


    grafico_uso_cpu = {'title': u"Uso da CPU", 'width': "", "type": "pie", 'cid': "chart5", 'header': ["Clocks"], 'lines': {
        "Disponível": [cpu_free],
        "Ocupado": [cpu]}}

    # Dados de content:
    # - type
    # - label
    # - date
    # - message

    last_jobs = Procedure.all_non_self_jobs()[:5]

    return render_to_response(request, "home.html", locals())
Esempio n. 46
0
def email_test(request):
    if request.method == "GET":
        return views.render_to_response(request, "emailtest.html", {})
    elif request.method == "POST":
        try:
            send_hello_message()
            messages.success(request, u"Email enviado corretamente, verifique sua caixa postal")
        except (smtplib.SMTPException, socket.error):
            messages.error(request, u"Impossível enviar email, verifique configurações")
        return redirect('nimbus.reports.views.email_conf')
    else:
        raise Http404()
Esempio n. 47
0
def license(request):
    extra_context = {
        'wizard_title': u'1 de 5 - Licença',
        'page_name': u'license',
        'wide': 'wide'
    }
    if request.method == "GET":
        return render_to_response(request, "license.html", extra_context)
    elif request.method == "POST":
        return redirect_next_step('start')
    else:
        raise Http404()
Esempio n. 48
0
def network_tool(request, type="ping"):
    if type == "ping":
        title = u"Teste de ping"
    elif type == "traceroute":
        title = u"Teste de traceroute"
    elif type == "nslookup":
        title = u"Teste de ns lookup"

    extra_content = {'title': title, 'type': type}

    return render_to_response(request, "system_network_tool.html",
                              extra_content)
Esempio n. 49
0
def edit(request, fileset_id, computer_id):
    f = FileSet.objects.get(id=fileset_id)
    fileset_form = forms.FileSetForm(prefix="fileset", instance=f)
    deletes_form = forms.FilesToDeleteForm(instance=f)
    computer = get_object_or_404(Computer, pk=computer_id)
    content = {
        'title': u"Editar Conjunto de Arquivos '%s'" % f.name,
        'computer': computer,
        'fileset_form': fileset_form,
        'deletes_form': deletes_form,
        'fileset': f
    }
    return render_to_response(request, "edit_fileset.html", content)
Esempio n. 50
0
def finish(request):

    #GET OR POST
    wizard = models.Wizard.get_instance()
    wizard.finish()

    network_interface = NetworkInterface.get_instance()
    if network_interface.address == get_raw_network_interface_address():
        return redirect( "nimbus.base.views.home" )
    else:
        network_interface.save() # change ip address
        return render_to_response(request, "redirect.html", dict(ip_address=network_interface.address,
                                                                 url="/"))
Esempio n. 51
0
def finish(request):

    #GET OR POST
    wizard = models.Wizard.get_instance()
    wizard.finish()

    network_interface = NetworkInterface.get_instance()
    if network_interface.address == get_raw_network_interface_address():
        return redirect("nimbus.base.views.home")
    else:
        network_interface.save()  # change ip address
        return render_to_response(
            request, "redirect.html",
            dict(ip_address=network_interface.address, url="/"))
Esempio n. 52
0
def recover_volumes(request):
    extra_content = {
        'wizard_title': u'Recuperando arquivos',
        'title': u"Recuperação do sistema"
    }
    if request.method == "GET":
        return render_to_response(request, "recovery_recover_volumes.html",
                                  extra_content)
    elif request.method == "POST":
        localsource = request.POST.get("localsource", "offsite")
        if localsource != "offsite":
            device = request.POST.get("device")
            storage = StorageDeviceManager(device)
            manager = offsite.LocalManager(storage, "/bacula")
        else:
            manager = offsite.RemoteManager()
        systemprocesses.min_priority_job("Recovery nimbus volumes",
                                         recover_volumes_worker, manager)
        extra_content.update({"object_list": DownloadRequest.objects.all()})
        return render_to_response(request, "recovery_recover_volumes.html",
                                  extra_content)
    else:
        raise Http404()
Esempio n. 53
0
def add(request, teste=None):

    initial = {}
    if request.method == "GET":
        computer = request.GET.get("comp_id", 0)

        if computer:
            initial = {"computer" : computer}
        else:
            initial = {}

    title = u"Adicionar backup"
    form = ProcedureForm(initial=initial, prefix="procedure")
    tasks = JobTask.objects.all()
    content = {'title': title,
                'form':form,
                'tasks': tasks}
    if request.method == "POST":
        data = copy(request.POST)
        if data["procedure-fileset"]:
            fileset = FileSet.objects.get(id=data['procedure-fileset'])
            content['fileset'] = fileset
        if data["procedure-schedule"]:
            schedule = Schedule.objects.get(id=data['procedure-schedule'])
            content['schedule'] = schedule
        procedure_form = ProcedureForm(data, prefix="procedure")
        if procedure_form.is_valid():
            procedure = procedure_form.save()
            call_reload_baculadir()
            messages.success(request, "Procedimento de backup '%s' criado com sucesso" % procedure.name)
            return redirect('/procedures/list')
        else:
            messages.error(request, "O procedimento de backup não foi criado devido aos seguintes erros")
            content['form'] = procedure_form
            return render_to_response(request, "add_procedure.html", content)
    return render_to_response(request, "add_procedure.html", content)
Esempio n. 54
0
def add(request, computer_id=None):
    computer = get_object_or_404(Computer, pk=computer_id)
    referer = utils.Referer(request)
    fileset_form = forms.FileSetForm(prefix="fileset")
    hide_name = False
    if referer.local == '/procedures/profile/list/':
        fileset_form.initial = {'is_model': True}
    elif referer.local.startswith('/procedures/'):
        fileset_form.initial = {'name': 'Conjunto de arquivos de %s' % computer.name}
        hide_name = True
    content = {'title': u"Criar conjunto de arquivos",
               'computer': computer,
               'fileset_form': fileset_form,
               'hide_name': hide_name}
    return render_to_response(request, "add_fileset.html", content)
Esempio n. 55
0
def list(request):
    group = request.GET.get("group")
    if group:
        computers = Computer.objects.filter(active=True,id__gt=1, groups__name=group)
    else:
        computers = Computer.objects.filter(active=True,id__gt=1)


    groups = ComputerGroup.objects.order_by('name')
    extra_content = {
            'computers': computers,
            'title': u"Computadores Ativos",
            'groups': groups
    }
    return render_to_response(request, "computers_list.html", extra_content)