Skip to content

Instantly share code, notes, and snippets.

Neil Lyons nwjlyons

Block or report user

Report or block nwjlyons

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
nwjlyons /
Created Oct 14, 2019
Django Date Path Converter
from datetime import datetime, date
class DateConverter:
regex = '[0-9]{4}-[0-9]{2}-[0-9]{2}'
def to_python(self, value: str):
return datetime.strptime(value, '%Y-%m-%d').date()
def to_url(self, value: date):
from django.http import HttpResponseRedirect, HttpResponsePermanentRedirect
def preload_redirect_middleware(get_response):
def middleware(request):
response = get_response(request)
if isinstance(response, (HttpResponseRedirect, HttpResponsePermanentRedirect)):
nwjlyons /
Last active Jun 18, 2019
Python 2/3 add keyword arg
# python 2
class Person(object):
def __init__(self, name, age): = name
self.age = age
class Employee(Person):
def __init__(self, *args, **kwargs):
self.job_title = kwargs.pop('job_title')
nwjlyons /
Created Sep 18, 2018
Redis v SQL benchmarks
import timeit
from django.core.cache import cache
from django.contrib.auth.models import User
def benchmark_redis(n=1):
for _ in range(n):
nwjlyons /
Last active Jun 26, 2018
Wagtail NonFieldErrors for Blocks
class NonFieldErrors:
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.non_field_errors = []
self.meta.form_template = 'struct.html'
def get_form_context(self, value, prefix='', errors=None):
context = super().get_form_context(value, prefix, errors)
context['non_field_errors'] = self.non_field_errors
return context
nwjlyons / tron.lua
Created Apr 2, 2018
Tron game built for the PICO8 fantasy console
View tron.lua
pico-8 cartridge //
version 16
line_weight = 1
border_colour = 7
up = 2
right = 1
down = 3
left = 0
from django.urls import include, path
from . import views
# Change this
urlpatterns = [
path('<page_slug>-<page_id>/history/', views.history),
path('<page_slug>-<page_id>/edit/', views.edit),
nwjlyons /
Created Jan 17, 2018
Convert a cron file into human readable format.
# Prerequisites
# - npm install -g hcron
import subprocess
cron_input = open('cron.input.txt')
cron_output = open('cron.output.txt', 'w')
for line in cron_input.readlines():
nwjlyons /
Created Dec 6, 2017
Python split generator into sub lists
def chunks(generator, chunk_size):
"""Yield successive chunks from a generator"""
chunk = []
for item in generator:
if len(chunk) >= chunk_size:
yield chunk
chunk = [item]
You can’t perform that action at this time.