Skip to content

Instantly share code, notes, and snippets.

Avatar

Alan Hamlett alanhamlett

View GitHub Profile
@alanhamlett
alanhamlett / alembic_env.py
Last active Sep 6, 2018
Copy of alembic/env.py from wakatime.com allowing usage of --autogenerate flag when creating new schema migrations
View alembic_env.py
from __future__ import with_statement
from alembic import context
from alembic.util.compat import configparser
from sqlalchemy import engine_from_config, pool
from logging.config import fileConfig
import os
import re
import sys
basedir = os.path.abspath(os.path.dirname(__file__) + '/../')
@alanhamlett
alanhamlett / ajax_setup.js
Last active Apr 25, 2020
Sets the X-CSRFToken header for every jQuery ajax non-GET request to make CSRF protection easy. This fixes the example from Django docs here: https://docs.djangoproject.com/en/dev/ref/contrib/csrf/#ajax
View ajax_setup.js
$.ajaxSetup({
beforeSend: function(xhr, settings) {
if (settings.type == 'POST' || settings.type == 'PUT' || settings.type == 'DELETE') {
function getCookie(name) {
var cookieValue = null;
if (document.cookie && document.cookie != '') {
var cookies = document.cookie.split(';');
for (var i = 0; i < cookies.length; i++) {
var cookie = jQuery.trim(cookies[i]);
// Does this cookie string begin with the name we want?
@alanhamlett
alanhamlett / api.py
Last active Sep 22, 2020
Serialize SQLAlchemy Model to dictionary (for JSON output) and update Model from dictionary attributes.
View api.py
import uuid
import wtforms_json
from sqlalchemy import not_
from sqlalchemy.dialects.postgresql import UUID
from wtforms import Form
from wtforms.fields import FormField, FieldList
from wtforms.validators import Length
from flask import current_app as app
from flask import request, json, jsonify, abort
View Flask-Login-Example.py
# -*- coding: utf-8 -*-
"""
More info:
http://flask.pocoo.org/docs/patterns/wtforms/
http://pythonhosted.org/Flask-SQLAlchemy/
https://flask-login.readthedocs.org/en/latest/
"""
from flask import current_app, request, render_template, redirect, url_for
from myapp.models import User
@alanhamlett
alanhamlett / amqp.py
Last active Jan 3, 2018
send an error email when a Celery worker raises an unhandled exception
View amqp.py
# -*- coding: utf-8 -*-
"""
wakatime.amqp
~~~~~~~~~~~~~
Setup for Celery distributed task queue.
"""
import socket
@alanhamlett
alanhamlett / responsive.less
Last active Sep 30, 2020
Responsive helper classes for Bootstrap style margins, padding, aligning, and displaying per screen size
View responsive.less
/* responsive.less
* ~~~~~~~~~~~~~~~
*
* Responsive helper classes for Bootstrap style margins, padding, aligning, and displaying per screen size.
* Works along with Bootstrap3.
*/
//== Media queries breakpoints from Bootstrap3
// Extra small screen / phone
@alanhamlett
alanhamlett / models.py
Created Sep 22, 2014
django model manager example
View models.py
from django.contrib.auth.models import AbstractBaseUser, PermissionsMixin, BaseUserManager
from django.db import models, transaction
from django.utils import timezone
class Manager(models.Manager):
""" Use this class to define custom methods on models.
"""
def get_query_set(self):
View test_oauth.py
#!/usr/bin/env python
import base64
import requests
ACCESS_TOKEN = "XXX"
APP_SECRET = "XXX"
# get some JSON, authenticating with url args
r = requests.get('https://wakatime.com/api/v1/users/current/stats/complete', params={'access_token': ACCESS_TOKEN})
@alanhamlett
alanhamlett / UpdateHandler.java
Created Dec 8, 2014
Auto update class for a NetBeans IDE plugin
View UpdateHandler.java
/*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
*
* Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
*
* Oracle and Java are registered trademarks of Oracle and/or its affiliates.
* Other names may be trademarks of their respective owners.
*
* The contents of this file are subject to the terms of either the GNU
* General Public License Version 2 only ("GPL") or the Common
View keybase.md

Keybase proof

I hereby claim:

  • I am alanhamlett on github.
  • I am alanhamlett (https://keybase.io/alanhamlett) on keybase.
  • I have a public key whose fingerprint is 2A17 98FE 2E12 3F7C BCDB E05F 76C4 315D 71A9 FECC

To claim this, I am signing this object:

You can’t perform that action at this time.