Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Python - Gerar protocolo

Olá galera, já fiz o curso de python Estou montando uma aplicação através do Django(estou na ultima aula do curso) E nessa aplicação quero gerar um Atendimento e que esse atendimento tenha o preenchimento automático em um formato determinado(segundos, minutos, hora, dia, mês, ano).

Aqui vai a classe Atendimento(ainda não está passada pro formato models do django):

from datetime import *

class Atendimento(object):

    def __init__(self, operador='', solicitante='', telefone_solicitante='', placa='', frota='', motivo='', protocolo='', data=''):
        self.operador = operador
        self.solicitante = solicitante
        self.telefone_solicitante = telefone_solicitante
        self.placa = placa
        self.frota = frota
        self.motivo = motivo
        self.protocolo = protocolo
        self.data = data

Pensei em criar uma def como essa:

    def gerar_protocolo(self):
        a = datetime.today()
        b = a.strftime('%M%S%d%m%Y')
        return b

A pergunta é, qual a melhor forma de implementar essa função com o django?

Por exemplo: Terei uma pagina HTML que o Operador irá preencher todas as informações do Atendimento quero que o protocolo seja preenchido e mostrado de forma automática como um input display readonly.

Como posso chamar a função na pagina HTML nesse input?

3 respostas

Oi Paulo, vou me arriscar aqui, dado que eu não conheço o django. De todo jeito, acho que o problema não é o Django em si :). Minha sugestão: crie o formulário com os campos necessários e aí o usuário vai preencher e apertar um submit da vida.

No lado do servidor, quando vc for criar o objeto relativo aos inputs, já chame a lógica de geração do protocolo no construtor (init) da sua classe e guarde o valor num atributo.

Isso vai ficar salvo no banco de dados e tudo mais... Aí, quando vc for exibir as informações do atendimento, é só referenciar um método que vai retornar o protocolo... vc pode, inclusive, colocar a informação num span, já que não é editável nem nada.

Espero ter ajudado.. Caso não tenha sido suficiente, vamos esperar por um especialista.

Alberto, antes de nada obrigado pela resposta. Eu tive a ideia de criar na View(o Controller de outros frameworks) ao invés de criar na classe o método, dessa forma quando vou passar os dados no formulário eu chamo este método e ele preenche o campo pra mim, ainda não acabei a aplicação e não tive tempo de testar, vou deixar aberto por enquanto, assim que testar posto o resultado.

Para efeito de aprendizado segue a função:

def gerar_protocolo(request):
    a = datetime.today()
    b = a.strftime('%d%m%Y%H%M%S%')
    return b
solução!

Como eu disse, iria retornar quando tivesse a resposta. E ela foi bem diferente do que eu estava pensando. Depois de ler muito pela internet e estudar bastante a documentação, a melhor e mais simples forma de passar o protocolo automaticamente na geração do formulário era usar o ModelForm pra gerar o formulário e na classe atribuir dessa forma:

protocolo = models.DateTimeField(default=datetime.today().strftime('%d%m%Y%H%M%S'))