wip-Development

working on tests next
No, it's bad no matter what it's named. It uses an if to split and on the fail returns a special value... that is then used as a sentinel in an if. That is always bad in Python (doubles the conditionals in a flow for no real reason). If it were returning a non-sentinel data structure that made everything flow naturally, that might be different, but it isn't. form.validate's at least debatable, though the more apt structure would be to separate user/admin retrieval (by pushing it inside the form) from logging in. We should also be using Flask-Login instead of managing auth ourselves, which gets rid of some of the issues.