Skip to content

Instantly share code, notes, and snippets.

@jsatt
jsatt / paginate.py
Created December 30, 2013 16:07
A more powerful Django queryset paginator. Sets up common boilerplate for pagination, including page number validity checking. It also provides a range of "neighbor" page numbers and find what page a specific object is on. `object_list` can be a queryset or iterable of objects, (not just Django models). Setting `page_range` arg will adjust numbe…
from django.core.paginator import Paginator, InvalidPage, EmptyPage
def paginate(request, object_list, limit=10, page_range=10, object_pk=None):
paginator = Paginator(object_list, limit)
page = None
if object_pk:
if hasattr(object_list, 'values_list') and callable(
object_list.values_list):
object_list = list(object_list.values_list('pk', flat=True))
@jsatt
jsatt / gist:b6fcbd40a8330996449a
Last active April 28, 2016 16:25
Fudge Mock Magic Method
mo = fudge.Fake().expects_call()
mf = mo.returns_fake()
mf.expects_call('read').returns('test')
setattr(fudge.Fake, '__enter__', fudge.Fake().is_callable().returns(mf))
setattr(fudge.Fake, '__exit__', fudge.Fake().is_callable())
# https://github.com/jsatt/mock/blob/master/mock.py#L1867
@jsatt
jsatt / enumerated_enum.py
Last active September 12, 2017 19:40
A Python 3 Enum subclasses which allows for defining other attributes to the members.
from enum import Enum, EnumMeta
class EnumeratedEnumMeta(EnumMeta):
def __new__(metacls, *args):
enum_class = super().__new__(metacls, *args)
enum_class._value2member_map_ = {m.value: m for v, m in enum_class._value2member_map_.items()}
return enum_class
class LabeledEnum(Enum, metaclass=EnumeratedEnumMeta):
@jsatt
jsatt / gist:400adcc7a82a70f99187
Created November 9, 2015 22:29
see all events on a qt widget
+ def __init__(self, *args, **kwargs):
+ super().__init__(*args, **kwargs)
+ self.platformWindow().installEventFilter(self)
+
+ def eventFilter(self, obj, event):
+ print(event.type(), obj)
+ return super().eventFilter(obj, event)
@jsatt
jsatt / examples.py
Created March 6, 2016 03:23
AWS Signing v4
### example calls
def post_key(path, **kwargs):
'''
post_key('testing/', data=json.dumps({"blah": 123}))
'''
endpoint = '{}{}'.format(ENDPOINT, path)
req = requests.Request('POST', endpoint, **kwargs)
sign_request(req)
return make_request(req)
@jsatt
jsatt / proto-test.js
Created June 17, 2016 14:55
Understanding js prototyping
res = function(){
mr = function(obj){
this.testing = obj
// or _.extend(this, obj) or Object.assign(this, obj) to extend this
};
mr.prototype.tester = function(){
return this.testing.test
};
return mr
}
@jsatt
jsatt / settings.py
Last active August 25, 2016 21:18
Test unmanaged models
TEST_RUNNER = b'test_runner.CustomRunner'
@jsatt
jsatt / policies.json
Created September 14, 2016 00:50
AWS IAM Policy examples
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iam:ListUsers"
],
"Resource": "arn:aws:iam::*:*"
},
@jsatt
jsatt / examples.md
Last active January 19, 2017 15:21
GPG examples
@jsatt
jsatt / get_or_none.py
Created July 23, 2018 14:25
django get_or_none
from django.db.models import Model, Manager, QuerySet
def get_or_none(model, *args, **kwargs):
if issubclass(model, Model):
qs = model._default_manager.all()
elif isinstance(model, Manager):
qs = model.all()
manager = model
model = manager.model