Skip to content

Instantly share code, notes, and snippets.

@nwjlyons
nwjlyons / blocks.py
Last active June 26, 2018 16:02
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
nwjlyons / tron.lua
Created April 2, 2018 19:55
Tron game built for the PICO8 fantasy console
pico-8 cartridge // http://www.pico-8.com
version 16
__lua__
line_weight = 1
border_colour = 7
up = 2
right = 1
down = 3
left = 0
@nwjlyons
nwjlyons / django-nested-urls-example.py
Last active March 29, 2018 17:14
Django 2.0 nested URLs
# https://docs.djangoproject.com/en/2.0/topics/http/urls/#including-other-urlconfs
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
nwjlyons / cron_to_human.py
Created January 17, 2018 17:35
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
nwjlyons / chunks.py
Created December 6, 2017 10:26
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]
else:
chunk.append(item)
@nwjlyons
nwjlyons / echo.go
Created September 28, 2017 13:14
Print HTTP request to stdout
package main
import (
"net"
"os"
"log"
"fmt"
"io"
)
@nwjlyons
nwjlyons / email.sh
Last active November 6, 2023 21:12
Send plain and html email via telnet.
telnet 0.0.0.0 1025
Trying 0.0.0.0...
Connected to 0.0.0.0.
Escape character is '^]'.
220 mailhog.example ESMTP MailHog
helo localhost
250 Hello localhost
mail from: <neil@example.com>
250 Sender neil@example.com ok
rcpt to: <lisa@example.com>
@nwjlyons
nwjlyons / lc.sh
Last active September 20, 2016 10:46
Sort local branches by line count.
#!/usr/bin/env bash
git branch | while read BRANCH ; do
git checkout $BRANCH &> /dev/null;
LINE_COUNT=`wc -l $(git ls-files | grep "\(.html\|.py\)$") | tail -n 1`
echo "$LINE_COUNT $BRANCH"
done | sort -r
@nwjlyons
nwjlyons / runserver_quiet.py
Last active September 14, 2016 10:09
Don't log if path starts with /static/
from django.core.servers.basehttp import WSGIRequestHandler
# Grab the original log_message method.
_log_message = WSGIRequestHandler.log_message
def log_message(self, *args):
# Don't log if path starts with /static/
if self.path.startswith("/static/"):
return
else:
javascript:(function() {
var adjectives = [
"Autumn", "Hidden", "Bitter", "Misty", "Silent", "Empty", "Dry", "Dark", "Summer", "Icy",
"Delicate", "Quiet", "White", "Cool", "Spring", "Winter", "Patient", "Twilight", "Dawn",
"Crimson", "Wispy", "Weathered", "Blue", "Billowing", "Broken", "Cold", "Damp", "Falling",
"Frosty", "Green", "Long", "Late", "Lingering", "Bold", "Little", "Morning", "Muddy", "Old",
"Red", "Rough", "Still", "Small", "Sparkling", "Wandering", "Withered", "Wild", "Black",
"Young", "Holy", "Solitary", "Fragrant", "Aged", "Snowy", "Proud", "Floral", "Restless",
"Divine", "Polished", "Ancient", "Purple", "Lively", "Nameless"];
var nouns = [