Falsehoods programmers believe about time and time zones
This article has a lot of great lessons learned about timezones: Falsehoods programmers believe about time and time zones (archived)
This article has a lot of great lessons learned about timezones: Falsehoods programmers believe about time and time zones (archived)
If your changes to a JSON, JSONB, or HSTORE field aren’t saving after you commit, then you need to wrap your field in the MutableDict shown here: http://docs.sqlalchemy.org/en/latest/dialects/postgresql.html#sqlalchemy.dialects.postgresql.HSTORE
This error happened because I mistyped “db.column” instead of “db.Column” when I was creating my database model using SQLAlchemy.
This might be your problem if db.create_all() isn’t creating all the columns you expected.
Postgres has a couple of column types for semi-structured data, and Flask-Admin didn’t have a good way to edit them. I added support for both.
For HSTORE (Postgres key-value pairs), I reused the existing InlineFieldList and InlineFormField with a few changes (#1158). Instead of editing a raw string, you get a row of key/value inputs you can add to and remove from.
class ServerView(ModelView):
form_columns = ['name', 'metadata'] # metadata is an HSTORE column
For JSON columns, there was already a JSONField in the GeoAlchemy backend. I moved it into flask_admin/form/fields.py so both backends could use it, and made it handle non-ASCII characters and show a clear error on malformed JSON instead of blowing up (#1245).
Great article about the problems with using PHP for long running processes: software-gunslinger.tumblr.com/post/48215406921/php-is-meant-to-die-continued
Describes the main reason why I started using Python for long-running jobs.
When others are deploying a project for you, it’s easy for mistakes to be made when secrets must be updated in environmental variables. Ansible-vault takes a different approach and encrypts the secrets - allowing you to store the secrets in your repo.
To encrypt a file: ansible-vault encrypt secrets.py
To decrypt a file: ansible-vault decrypt secrets.py
More documentation is available here: https://docs.ansible.com/projects/ansible/latest/vault_guide/vault_encrypting_content.html
http://timothycrosley.github.io/isort/
I saw it in the django coding style documentation: https://docs.djangoproject.com/en/1.9/internals/contributing/writing-code/coding-style/
To make an entire project’s imports easier to read, all you need to do is:
pip install isortisort -rc .There’s also a sublime plugin for it here: https://github.com/thijsdezoete/sublime-text-isort-plugin#install
Ever committed something and needed to make changes later? Just rebase and squash it, right? Or maybe git reset --soft HEAD~1 and commit again?
There’s an even better solution: git commit --amend -C HEAD
It will add the combine your commit with your last commit. If you already pushed, you will need to force push your change.
I’ve wasted a lot of time running python setup.py install before testing my changes to flask-admin. It turns out you can pip install a project as “editable”, which points the install toward your local directory instead of copying where the rest of your python modules are.
To install a project as editable, navigate to the repo and run pip install -e ..
https://pip.pypa.io/en/stable/reference/pip_install/#editable-installs
This document describes how to drop into pdb when your Python nose tests fail: http://nose.readthedocs.org/en/latest/plugins/debug.html
It just requires running nosetests --pdb.
Very helpful if you’re debugging why a test failed.