Skip to content

Instantly share code, notes, and snippets.

Craig Blaszczyk jakul

  • London
Block or report user

Report or block jakul

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
This file has been truncated, but you can view the full file.
$ pipenv install --python `which python3.6`
Creating a virtualenv for this project...
Pipfile: /private/tmp/ppp/Pipfile
Using /Users/craig/.pyenv/shims/python3.6 (3.6.6) to create virtualenv...
⠋Running virtualenv with interpreter /Users/craig/.pyenv/shims/python3.6
Using base prefix '/Users/craig/.pyenv/versions/3.6.6'
New python executable in /Users/craig/.virtualenvs/ppp-VkRNbFgf/bin/python3.6
Also creating executable in /Users/craig/.virtualenvs/ppp-VkRNbFgf/bin/python
jakul /
Created Aug 3, 2017
Description of the main changes between Open API V2 and V3
  • New explicit versioning schema
  • Recommend swagger.json/swagger.yaml are now called openapi.json/openapi.yaml
  • Switch from Github Flavoured Markdown syntax to CommonMark syntax
  • New top-level construct Components holds a set of objects to be reused throught the rest of the API. This allows us to define re-used things in one place and reference them, instead of repeating them. Will be especially useful for error responses, pagination parameters, etc
  • New info.servers construct replaces basePath. This may allow us to combine all of our separate Open API specs into one, mega spec.
  • Ability to specify a path parameter at the top level (i.e. no need to duplicate the definition of {policy_uuid} for the GET, PATCH, PUT and DELETE endpoints)
  • Moving of request BODY parameters into their own part of the path definition
  • Support for different request BODY definitions based on the Content-Type of the request (e.g. we could make one API support both JSON and YAML)
  • Support for different r
jakul / gist:88532fca517f3899b97dc956d661a7b7
Created Jul 4, 2016
AWS CloudFormation template regex wrong
View gist:88532fca517f3899b97dc956d661a7b7
"Outputs": {
"ClioutputApigatewayFirstappSampleApi": {
"Value": {
"Fn::Join": [
"Ref": "FirstappSampleApi"
from facebook.models import *
def get_posts(posts):
for post in posts:
account =
if account is None:
exists = 'multi_share_optimized' in FacebookPost.objects.fetch_page_post(post.page_post_id, account)
print post.page_post_id, exists
if exists:
View gist:a6d8bdb3971cbb4357a7
index-servers =
username: jakul
password: XXXXXXXXXX
View Developting with virtualbox
### Tox
Symlink `.tox` to a folder on the virtual machine to make it run faster / at all
### Symlinks
Boot machine from windows with `vagrant up` in a shell with ** ADMINISTRATOR ** privledges to enable symlinking
Enable symlinks on shared folders by adding the following to `Vagrantfile`
v.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/v-root", "1"]
v.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/src2", "1"]
View gist:aa336801d2373ac208c2
window.addSessions = function() {
nl.Store.sessionsCollection.add({'id': 1, 'practice_id': 1, status: 'posted', date: moment('2014-08-18T11:48:08Z'), date_posted: moment('2014-06-12T10:48:08Z')});
nl.Store.sessionsCollection.add({'id': 2, 'practice_id': 2, status: 'posted', date: moment('2014-08-25T10:48:08Z'), date_posted: moment('2014-06-13T10:48:08Z')});
nl.Store.sessionsCollection.add({'id': 3, 'practice_id': 1, status: 'posted', date: moment('2014-08-19T10:48:08Z'), date_posted: moment('2014-06-11T10:48:08Z')});
nl.Store.sessionsCollection.add({'id': 4, 'practice_id': 1, status: 'posted', date: moment('2014-08-18T10:48:08Z'), date_posted: moment('2014-06-06T10:48:08Z'), partapplications: [{'a': 1}]});
nl.Store.sessionsCollection.add({'id': 5, 'practice_id': 1, status: 'posted', date: moment('2014-08-18T10:48:08Z'), date_posted: moment('2014-06-09T10:48:08Z')});
nl.Store.sessionsCollection.add({'id': 6, 'practice_id': 2, status: 'posted', date: moment(
jakul / gist:e020364c4b984b701f12
Created Nov 13, 2014
update pays pension field
View gist:e020364c4b984b701f12
from jobs.models import *
import datetime
starts_on =,1,1)
# Update all ongoing jobs which don't have pays_pension but should
jobs = Job.objects.filter(status__in=[Job.STATUS_POSTED, Job.STATUS_FILLED, Job.STATUS_STARTED], pays_pension='').exclude(practice__pays_pension='')
for job in jobs:
job.pays_pension = job.practice.pays_pension
View gist:a6d31044044967ab8b71
# A batch function which does the ordering and sends an announcement with (all) the ordered job ids in
# A function receives that announcment and processes the first job from that list
# Each processed job needs to know
# * the number of invites sent for that job today
# * the number of invites sent to each locum today
# While the job doesn't have enough invitations
# While there are locums to try to match
# Sum up the number of sent invites for this locum and hte number of potential invites waiting to be sent and exit if that number is too high
# Try to match the locum to job
# Create entry in mongo if the locum matches
View gist:791b113c08f6c167ce1d
users_to_invite = [1,2,3]
blocked_users= [3,4,5]
blocked_available = users_to_invite.intersection(blocked_users)
if blocked_available != set():
user_to_invite -= blocked_available
for user in blocked_available:
# log messages
You can’t perform that action at this time.