Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class ProtocoloContabilWizard(SessionWizardView):
- file_storage = FileSystemStorage(location=settings.TEMP_ROOT)
- def get_template_names(self):
- return [TEMPLATES[self.steps.current]]
- def done(self, form_list, **kwargs):
- """ Etapa final do wizard.
- Aqui os dados são efetivados no banco, e ao final o usuário é redirecionado para a tela de edição do protocolo
- recem criado.
- """
- form_step_0 = form_list[0]
- if form_step_0.instance.pk is None:
- instance = form_step_0.save()
- else:
- instance = form_step_0.instance
- form_step_1 = form_list[1]
- # Criação/busca da categoria do download.
- try:
- categoria_download = DownloadCategoria.objects.get(nome="Relatório contábeis")
- except DownloadCategoria.DoesNotExist:
- categoria_download = DownloadCategoria.objects.create(nome="Relatório contábeis")
- codigo_protocolo = instance.get_protocolo_codigo()
- # Criação/busca do download pack.
- try:
- download = Download.objects.get(nome=codigo_protocolo,
- categoria=categoria_download)
- except Download.DoesNotExist:
- download = Download.objects.create(nome=codigo_protocolo,
- categoria=categoria_download)
- # Vinculação dos arquivos ao protocolo.
- for tipo, arquivo in form_step_1.files.items():
- pk = int(tipo.rsplit('_',1)[-1])
- categoria = DownloadArquivoCategoria.objects.get(pk=pk)
- pca = ProtocoloContabilArquivo(protocolo=instance,
- arquivo=arquivo,
- categoria=categoria,
- download=download)
- pca.save()
- print(dir(arquivo))
- print(arquivo.file)
- if os.path.exists(unicode(arquivo.file)):
- os.remove(unicode(arquivo.file))
- url = reverse('admin:protocolo_protocolocontabil_change', args=(form_list[0].instance.id,))
- print(url)
- return HttpResponseRedirect(url)
- def get_form(self, step=None, data=None, files=None):
- print('get_form')
- if step is None:
- step = self.steps.current
- # Inicializa o form de upload.
- if step == '1' and not files:
- data = {}
- cleaned_data = self.get_cleaned_data_for_step('0')
- data['ano'] = cleaned_data['ano']
- data['mes'] = cleaned_data['mes']
- data['cliente'] = cleaned_data['cliente']
- form = super(ProtocoloContabilWizard, self).get_form(step, data, files)
- return form
- def get_context_data(self, form, **kwargs):
- print('get_context_data')
- context = super(ProtocoloContabilWizard, self).get_context_data(form=form, **kwargs)
- context.update({'title': 'Assistente de envio de informações contábeis.'})
- # Sempre disponibiliza os dados da etapa anterior na etapa atual.
- if self.steps.prev is not None:
- context.update(self.get_cleaned_data_for_step(self.steps.prev))
- return context
- def render_next_step(self, form, **kwargs):
- print('render_next_step')
- if self.steps.current == '0':
- cleaned_data = form.cleaned_data
- ano = cleaned_data['ano']
- mes = cleaned_data['mes']
- cliente = cleaned_data['cliente']
- try:
- # Faz a checagem para saber se o protocolo do cliente já existe.
- # Caso exista redireciona para o mesmo.
- p = ProtocoloContabil.objects.get(ano=ano,
- mes=mes,
- cliente=cliente)
- url = reverse('admin:protocolo_protocolocontabil_change', args=(p.id,))
- print('render_next_step: %s' % url)
- messages.add_message(self.request, messages.INFO, 'Este protocolo já existe. Você deve atualizá-lo ao invés de adicionar um novo.')
- return HttpResponseRedirect(url)
- except ProtocoloContabil.DoesNotExist:
- pass
- return super(ProtocoloContabilWizard, self).render_next_step(form, **kwargs)
- @login_required
- def protocolo_contabil_wizard(request):
- protocolo_contabil_wizard_view = ProtocoloContabilWizard.as_view(FORMS)
- return protocolo_contabil_wizard_view(request)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement