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
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 })
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})
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
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