def do_edit(request): if request.method == "POST": data = request.POST if data.has_key("main"): s = get_object_or_404(Schedule, pk=int(data["id"])) s.name = data["name"] s.save() return HttpResponse('{"status": "ok", "new_id": %s}' % s.id) elif data.has_key("schedule_id"): s = get_object_or_404(Schedule, pk=int(data["schedule_id"])) if data["status"] == "deleted": r = get_object_or_404(Run, pk=int(data["id"])) r.delete() try: if data["status"] == "new": run = Run() run.schedule = s run.level = BackupLevel.objects.get(id=int(data["level_id"])) run.kind = BackupKind.objects.get(id=int(data["kind_id"])) run.hour = data["hour"] run.minute = data["minute"] run.day = int(data["day_num"]) run.save() call_reload_baculadir() return HttpResponse('{"status": "ok"}') except: return HttpResponse('{"status": "error"}')
def do_delete(request, schedule_id): s = get_object_or_404(Schedule, pk=schedule_id) if s.is_model: for procedure in s.procedures.all(): new_schedule = Schedule() new_schedule.name = 'Agendamentos de %s' % procedure.name new_schedule.is_model = False new_schedule.save() for run in s.runs.all(): new_run = Run() new_run.schedule = new_schedule new_run.level = run.level new_run.kind = run.kind new_run.day = run.day new_run.hour = run.hour new_run.minute = run.minute new_run.save() procedure.schedule = new_schedule procedure.save() name = s.name s.delete() call_reload_baculadir() messages.success( request, u"Perfil de agendamento '%s' removido com sucesso." % name) return redirect('/procedures/profile/list')
def create_database(): u"""Cria a base de dados do nimbus""" call_command('syncdb',verbosity=0,interactive=False) if len(User.objects.all()) == 0: u = User(username = "******", is_superuser=True, is_staff=True, email = "*****@*****.**") u.set_password("admin") u.save() call_command('loaddata', settings.INITIALDATA_FILE) # FIX: LOADDATA nao eh invocado em um dpkg update config = Config.get_instance() config.director_password = utils.random_password() config.save() storage = Storage.objects.get(id=1) storage.password = utils.random_password() storage.save() computer = Computer.objects.get(id=1) computer.activate() register_administrative_nimbus_models() call_reload_baculadir() else: force_unlock_bacula_and_start()
def create_database(): u"""Cria a base de dados do nimbus""" call_command('syncdb', verbosity=0, interactive=False) if len(User.objects.all()) == 0: u = User(username="******", is_superuser=True, is_staff=True, email="*****@*****.**") u.set_password("admin") u.save() call_command('loaddata', settings.INITIALDATA_FILE) # FIX: LOADDATA nao eh invocado em um dpkg update config = Config.get_instance() config.director_password = utils.random_password() config.save() storage = Storage.objects.get(id=1) storage.password = utils.random_password() storage.save() computer = Computer.objects.get(id=1) computer.activate() register_administrative_nimbus_models() call_reload_baculadir() else: force_unlock_bacula_and_start()
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)
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)
def do_edit(request): if request.method == 'POST': data = request.POST if data.has_key('main'): s = get_object_or_404(Schedule, pk=int(data['id'])) s.name = data['name'] s.save() return HttpResponse('{"status": "ok", "new_id": %s}' % s.id) elif data.has_key('schedule_id'): s = get_object_or_404(Schedule, pk=int(data['schedule_id'])) if data['status'] == 'deleted': r = get_object_or_404(Run, pk=int(data['id'])) r.delete() try: if data['status'] == 'new': run = Run() run.schedule = s run.level = BackupLevel.objects.get( id=int(data['level_id'])) run.kind = BackupKind.objects.get(id=int(data['kind_id'])) run.hour = data['hour'] run.minute = data['minute'] run.day = int(data['day_num']) run.save() call_reload_baculadir() return HttpResponse('{"status": "ok"}') except: return HttpResponse('{"status": "error"}')
def do_delete(request, fileset_id): f = get_object_or_404(FileSet, pk=fileset_id) if f.is_model: for procedure in f.procedures.all(): novo_fileset = FileSet() novo_fileset.name = 'Arquivos de %s' % procedure.name novo_fileset.save() for file in f.files.all(): novo_arquivo = FilePath() novo_arquivo.fileset = novo_fileset novo_arquivo.path = file.path novo_arquivo.save() for w in f.wildcards.all(): novo_wildcard = Wildcard() novo_wildcard.expression = w.expression novo_wildcard.kind = w.kind novo_wildcard.fileset = novo_fileset novo_wildcard.save() procedure.fileset = novo_fileset procedure.save() name = f.name f.delete() call_reload_baculadir() messages.success(request, u"Perfil de conjunto de arquivos '%s' removido com sucesso." % name) return redirect('/procedures/profile/list')
def deactivate(request, object_id): if request.method == "POST": procedure = Procedure.objects.get(id=object_id) procedure.active = False procedure.save() call_reload_baculadir() messages.success(request, "Procedimento desativado com sucesso") return redirect('/procedures/list')
def deactivate(request, object_id): try: computer = Computer.objects.get(id=object_id) computer.deactivate() call_reload_baculadir() except Computer.DoesNotExist, error: messages.error(request, u'Impossível desativar computador, computador inexistente') return redirect('nimbus.computers.views.list')
def activate(request, object_id): try: computer = Computer.objects.get(id=object_id) computer.activate() call_reload_baculadir() except Computer.DoesNotExist, error: messages.error( request, u'Impossível ativar computador, computador inexistente') return redirect('nimbus.computers.views.add')
def do_delete(request, object_id): procedure = Procedure.objects.get(id=object_id) if not procedure.schedule.is_model: procedure.schedule.delete() if not procedure.fileset.is_model: procedure.fileset.delete() procedure.delete() call_reload_baculadir() messages.success(request, u"Procedimento removido com sucesso.") return redirect('/procedures/list')
def edit(request, object_id): extra_context = {'title': u"Editar computador"} r = create_update.update_object(request, object_id=object_id, model=Computer, form_class=form(Computer), template_name="base_computers.html", extra_context=extra_context, post_save_redirect="/computers/") call_reload_baculadir() return r
def edit(request, object_id): extra_context = {'title': u"Editar armazenamento"} r = create_update.update_object( request, object_id = object_id, model = Storage, form_class = form(Storage), template_name = "storages_edit.html", extra_context = extra_context, post_save_redirect = "/storages/list") call_reload_baculadir() return r
def edit(request, object_id): extra_context = {'title': u"Editar computador"} r = create_update.update_object(request, object_id = object_id, model = Computer, form_class = form(Computer), template_name = "base_computers.html", extra_context = extra_context, post_save_redirect = "/computers/") call_reload_baculadir() return r
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)
def do_edit(request, fileset_id): f = FileSet.objects.get(id=fileset_id) if request.method == 'POST': data = request.POST fileset_form = forms.FileSetForm(data, prefix="fileset", instance=f) if fileset_form.is_valid(): new_fileset = fileset_form.save() filepaths_form = forms.FilesToDeleteForm(data, instance=new_fileset) if filepaths_form.is_valid(): filepaths_form.save() wildcards_form = forms.WildcardsFormSet(data, instance=new_fileset) if wildcards_form.is_valid(): for wildcard in new_fileset.wildcards.all(): wildcard.delete() new_fileset.save() wildcards_form.save() call_reload_baculadir() return HttpResponse('{"status":true,"fileset_id":"%s","fileset_name":"%s","message":"Conjunto de arquivos \'%s\' foi atualizado com sucesso"}' % (new_fileset.id, new_fileset.name, new_fileset.name)) else: new_fileset.delete() return HttpResponse('{"status":false,"fileset_id":"none","message":"Erro nos arquivos","error":1}') else: return HttpResponse('{"status":false,"fileset_id":"none","message":"Erro nos fileset","error":0}')
def do_delete(request, schedule_id): s = get_object_or_404(Schedule, pk=schedule_id) if s.is_model: for procedure in s.procedures.all(): new_schedule = Schedule() new_schedule.name = "Agendamentos de %s" % procedure.name new_schedule.is_model = False new_schedule.save() for run in s.runs.all(): new_run = Run() new_run.schedule = new_schedule new_run.level = run.level new_run.kind = run.kind new_run.day = run.day new_run.hour = run.hour new_run.minute = run.minute new_run.save() procedure.schedule = new_schedule procedure.save() name = s.name s.delete() call_reload_baculadir() messages.success(request, u"Perfil de agendamento '%s' removido com sucesso." % name) return redirect("/procedures/profile/list")
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)
def do_delete(request, object_id): computer = Computer.objects.get(id=object_id) computer.delete() call_reload_baculadir() messages.success(request, u"Computador removido com sucesso.") return redirect('nimbus.computers.views.list')
if not '/' in redirect_to: redirect_to = reverse(redirect_to) if not formclass and model: formclass = forms.form(model) try: r = update_object( request, object_id=1, form_class = formclass, model = model, template_name = templatename, post_save_redirect = redirect_to, extra_context = extra_context ) except Http404, error: r = create_object( request, form_class = formclass, model = model, template_name = templatename, post_save_redirect = redirect_to, extra_context = extra_context ) if request.method == "POST" and reload_bacula: call_reload_baculadir() return r def render_to_response(request, template, dictionary): return _render_to_response( template, dictionary, context_instance=RequestContext(request))
if not '/' in redirect_to: redirect_to = reverse(redirect_to) if not formclass and model: formclass = forms.form(model) try: r = update_object(request, object_id=1, form_class=formclass, model=model, template_name=templatename, post_save_redirect=redirect_to, extra_context=extra_context) except Http404, error: r = create_object(request, form_class=formclass, model=model, template_name=templatename, post_save_redirect=redirect_to, extra_context=extra_context) if request.method == "POST" and reload_bacula: call_reload_baculadir() return r def render_to_response(request, template, dictionary): return _render_to_response(template, dictionary, context_instance=RequestContext(request))