Esempio n. 1
0
def cargaDC4_20140207(item):
    # 289 - DC4
    endDet = EnderecoDetalhe.objects.get(pk=289)
    # 22 - Ativo
    # 30 - Inativo
    est = Estado.objects.get(pk=22)

    # 46 - Carga
    tipoPatr = Tipo.objects.get(pk=46)

    # Rack em que está contido

    patrRack = Patrimonio.objects.get(apelido=item['rack'])
    equipamento = Equipamento.objects.get(pk=item['equipamento_id'])

    patrimonio = Patrimonio(ns=item['ns'], apelido=item['apelido'], descricao=item['descricao'], tipo=tipoPatr,
                            patrimonio=patrRack, equipamento=equipamento, modelo=equipamento.modelo,
                            tamanho=equipamento.tamanho, agilis=False)

    patrimonio.save()

    historicoPai = HistoricoLocal(posicao=item['posicao'], descricao='Verificado novo equipamento em visita ao NAP.',
                                  data=datetime.date(2014, 1, 29), patrimonio=patrimonio, endereco=endDet, estado=est)

    historicoPai.save()

    print patrimonio.id
Esempio n. 2
0
def conserta_posicoes(request):

    if request.method == 'GET':
        return TemplateResponse(request, 'patrimonio/conserta.html')
    ok = []
    failed = []
    if request.FILES:
        with request.FILES['racks'] as racksfile:
            rackscsv = csv.DictReader(racksfile, delimiter=';', quotechar='"')
            for row in rackscsv:
                try:
                    rack = Patrimonio.objects.get(id=row['rack_id'])
                    p = Patrimonio.objects.get(id=row['id'])
                    hl_rack = rack.historico_atual
                    if p.patrimonio == rack and p.historico_atual.posicao and\
                            p.historico_atual.posicao.endswith('%03d' % int(row['posicao'])):
                        continue
                    hl = HistoricoLocal()
                    hl.endereco = hl_rack.endereco
                    hl.estado = hl_rack.estado
                    hl.data = datetime.datetime.now()
                    hl.posicao = '%s.F%03d' % (rack.apelido.split()[-1],
                                               int(row['posicao']))
                    hl.patrimonio = p
                    p.patrimonio = rack
                    p.save()
                    hl.save()
                    ok.append('%s - %s' % (p.apelido or p.id, row['posicao']))
                except:
                    failed.append('%s - %s' % (row['id'], row['posicao']))

    return TemplateResponse(request, 'patrimonio/conserta.html', {
        'ok': ok,
        'failed': failed
    })
Esempio n. 3
0
def conserta_posicoes(request):

    if request.method == 'GET':
        return TemplateResponse(request, 'patrimonio/conserta.html')
    ok = []
    failed = []
    if request.FILES:
        with request.FILES['racks'] as racksfile:
            rackscsv = csv.DictReader(racksfile, delimiter=';', quotechar='"')
            for row in rackscsv:
                try:
                    rack = Patrimonio.objects.get(id=row['rack_id'])
                    p = Patrimonio.objects.get(id=row['id'])
                    hl_rack = rack.historico_atual
                    if p.patrimonio == rack and p.historico_atual.posicao and\
                            p.historico_atual.posicao.endswith('%03d' % int(row['posicao'])):
                        continue
                    hl = HistoricoLocal()
                    hl.endereco = hl_rack.endereco
                    hl.estado = hl_rack.estado
                    hl.data = datetime.datetime.now()
                    hl.posicao = '%s.F%03d' % (rack.apelido.split()[-1], int(row['posicao']))
                    hl.patrimonio = p
                    p.patrimonio = rack
                    p.save()
                    hl.save()
                    ok.append('%s - %s' % (p.apelido or p.id, row['posicao']))
                except:
                    failed.append('%s - %s' % (row['id'], row['posicao']))

    return TemplateResponse(request, 'patrimonio/conserta.html', {'ok': ok, 'failed': failed})
Esempio n. 4
0
def cargaDC4_20140207(item):
    # 289 - DC4
    endDet = EnderecoDetalhe.objects.get(pk=289)
    # 22 - Ativo
    # 30 - Inativo
    est = Estado.objects.get(pk=22)

    # 46 - Carga
    tipoPatr = Tipo.objects.get(pk=46)

    # Rack em que está contido

    patrRack = Patrimonio.objects.get(apelido=item['rack'])
    equipamento = Equipamento.objects.get(pk=item['equipamento_id'])

    patrimonio = Patrimonio(ns=item['ns'],
                            apelido=item['apelido'],
                            descricao=item['descricao'],
                            tipo=tipoPatr,
                            patrimonio=patrRack,
                            equipamento=equipamento,
                            modelo=equipamento.modelo,
                            tamanho=equipamento.tamanho,
                            agilis=False)

    patrimonio.save()

    historicoPai = HistoricoLocal(
        posicao=item['posicao'],
        descricao='Verificado novo equipamento em visita ao NAP.',
        data=datetime.date(2014, 1, 29),
        patrimonio=patrimonio,
        endereco=endDet,
        estado=est)

    historicoPai.save()

    print patrimonio.id
Esempio n. 5
0
    def clean(self):
        cleaned_data = super(BaseHistoricoLocalAdminFormSet, self).clean()
        # Retorna erro para erros de sistemas não tratados
        if any(self.errors):
            raise forms.ValidationError(u'Erro sistema %s' % self.errors)

        form_mais_recente = None
        patrimonio = None

        for i in range(0, self.total_form_count()):
            form = self.forms[i]

            # guardando o patrimonio relacionado a este histórico para posterior verificação
            if not patrimonio and form.cleaned_data.get("patrimonio"):
                patrimonio = form.cleaned_data.get("patrimonio")

            data = form.cleaned_data.get('data')
            # Verifica o historico mais recente, que não foi removido
            if data and (form.cleaned_data.get('DELETE') is None or form.cleaned_data.get('DELETE') is False):
                if form_mais_recente:
                    if data > form_mais_recente.cleaned_data.get('data'):
                        form_mais_recente = form
                else:
                    form_mais_recente = form

        if form_mais_recente:
            cleaned_data = form_mais_recente.cleaned_data

            if cleaned_data.get("patrimonio") and cleaned_data.get("patrimonio").patrimonio:
                contido_em = cleaned_data.get("patrimonio").patrimonio
                endereco = cleaned_data.get("endereco")

                # Verifica se o patrimonio atual não tem endereço/localidade e está dentro de um patrimonio com
                # endereço/localidade
                if (contido_em.historico_atual and not endereco):
                    raise forms.ValidationError(u'Patrimônio deve estar na mesma localização do patrimônio em '
                                                u'que está contido.')

                # Verifica se está no mesmo endereço do patrimonio pai
                if (contido_em.historico_atual and contido_em.historico_atual.endereco != endereco):
                    raise forms.ValidationError(u'Patrimônio deve estar na mesma localização do patrimônio em '
                                                u'que está contido.')

                historicolocal = HistoricoLocal(posicao=cleaned_data.get("posicao"))
                # Verifica se o patrimonio atual não tem posicao/rack e está dentro de um patrimonio com posicao/rack
                if contido_em.historico_atual.posicao_rack and \
                        (not historicolocal.posicao_rack or historicolocal.posicao_rack == ''):
                    raise forms.ValidationError(u'Patrimônio deve estar no mesmo rack do patrimônio em '
                                                u'que está contido.')

                # Verifica se está no mesmo rack do patrimonio pai
                if contido_em.historico_atual and historicolocal and \
                        contido_em.historico_atual.posicao_rack != historicolocal.posicao_rack:
                    raise forms.ValidationError(u'Patrimônio deve estar no mesmo rack do patrimônio em '
                                                u'que está contido.')

                # Verifica se o patrimonio está no mesmo rack/furo do patrimonio pai
                # Não verifica se o patrimonio pai for Rack, pois o Rack não tem posição de furo
                if contido_em.equipamento.tipo.nome != 'Rack' and \
                        contido_em.historico_atual.posicao_furo != historicolocal.posicao_furo:
                    raise forms.ValidationError(u'Patrimônio deve estar no mesmo furo do patrimônio em '
                                                u'que está contido.')
        else:
            if patrimonio:
                contido_em = patrimonio.patrimonio
                if contido_em:
                    # Esse caso deve ocorrer se o patrimonio está contido em outro e o histórico atual foi removido
                    raise forms.ValidationError(u'Patrimônio deve estar na mesma localização do patrimônio em '
                                                u'que está contido.')

        return cleaned_data