dunossauro / todo_list_flask_brython

um todo-list/kanban implementado com python fullstack
http://todo-brython.herokuapp.com
GNU General Public License v3.0
42 stars 13 forks source link

Tarefas não estavam sendo canceladas #37

Closed Andre-Sacilotti closed 3 years ago

Andre-Sacilotti commented 3 years ago

Depois de rodar em produção, essa parte do codigo:

if new_state in states:
        task.state = new_state
        current_app.db.session.commit()

Retornou o seguinte erro:

psycopg2.errors.StringDataRightTruncation: value too long for type character varying(5)

Ele estava tendo problema em dar o update no banco de dados, pra "canceled" que tem 8 caracteres, já que o limite definido é 5 caracteres.

state = db.Column(db.String(5), nullable=False)

E depois de aumentar pra 15, funcionou.

state = db.Column(db.String(15), nullable=False)
dunossauro commented 3 years ago

Fala querido, obrigado pelo PR :heart: :heart:

Deixa eu te contar. Pra fazer o deploy dele eu vou ter que gerar uma nova migração.

Eu não vejo problemas em aceitar o PR assim e gerar nova migração.

Mas eu queria saber se você gostaria de gerar a mesma e inserir nesse mesmo PR. Caso queira eu deixo em aberto e você faz a migration, caso não tenha interesse em fazer isso, eu mesmo posso gerar.

AHHHHHHHHHHHH, deixa eu te contar uma coisa. Se puder ajustar sua config do git da sua máquina antes de enviar um novo, pq aí você vai aparecer como novo contribuidor, se não vai ficar seu user =/

Se precisar de ajuda com alguma coisa, me chama no telegram, vou ter prazer em ajudar <3 <3

Andre-Sacilotti commented 3 years ago

Oii du, brigado pelas dicas, creio que consegui configurar meu git <3

Acho que foi a migração agora.

dunossauro commented 3 years ago

Fiz o review da migração. Porém, você está criando o banco de dados novamente.

Você poderia usar esse esquema para mudar somente a coluna desejada.

def upgrade():
    with op.batch_alter_table('todo', schema=None) as batch_op:
        batch_op.alter_column(
            'state',
            existing_type=sa.VARCHAR(length=5),
            type_=sa.String(length=15),
            existing_nullable=False
        )

def downgrade():
    with op.batch_alter_table('todo', schema=None) as batch_op:
        batch_op.alter_column(
            'state',
            existing_type=sa.String(length=15),
            type_=sa.VARCHAR(length=5),
            existing_nullable=False
        )

Você vai ter que alterar o script do alembic para autogerar esse migração: http://blog.code4hire.com/2017/06/setting-up-alembic-to-detect-the-column-length-change/

O exemplo foi tirado daqui: https://blog.miguelgrinberg.com/post/fixing-alter-table-errors-with-flask-migrate-and-sqlite

Estamos escrevendo isso durante a live, no 28 mins 2 secs

Expliquei tudo lá, se quiser dar uma olhada.