To setup your computer to work with *.test domains, e.g. project.test, awesome.test and so on, without having to add to your hosts file each time.
- Homebrew
- Mountain Lion -> High Sierra
| from django.utils.text import gettext_lazy as _ | |
| from rest_framework import serializers | |
| from rest_framework_simplejwt.tokens import RefreshToken, TokenError | |
| class RefreshTokenSerializer(serializers.Serializer): | |
| refresh = serializers.CharField() | |
| default_error_messages = { | |
| 'bad_token': _('Token is invalid or expired') | |
| } |
| server { | |
| listen 80; | |
| server_name localhost; | |
| root /Users/YOUR_USERNAME/Sites; | |
| access_log /Library/Logs/default.access.log main; | |
| location / { | |
| include /usr/local/etc/nginx/conf.d/php-fpm; | |
| } |
| /* Useful celery config. | |
| app = Celery('tasks', | |
| broker='redis://localhost:6379', | |
| backend='redis://localhost:6379') | |
| app.conf.update( | |
| CELERY_TASK_RESULT_EXPIRES=3600, | |
| CELERY_QUEUES=( | |
| Queue('default', routing_key='tasks.#'), |
| web: run-program gunicorn arena.wsgi | |
| celery_beat: run-program celery -A arena beat -l info | |
| celery1: run-program celery -A arena worker -Q default -l info --purge -n default_worker | |
| celery2: run-program celery -A arena worker -Q feeds -l info --purge -n feeds_worker |
| from rest_framework.views import exception_handler | |
| def custom_exception_handler(exc): | |
| """ | |
| Custom exception handler for Django Rest Framework that adds | |
| the `status_code` to the response and renames the `detail` key to `error`. | |
| """ | |
| response = exception_handler(exc) |
To setup your computer to work with *.test domains, e.g. project.test, awesome.test and so on, without having to add to your hosts file each time.
| from collections import namedtuple | |
| def convert(dictionary): | |
| return namedtuple('GenericDict', dictionary.keys())(**dictionary) | |
| """ | |
| >>> d = dictionary(a=1, b='b', c=[3]) | |
| >>> named = convert(d) | |
| >>> named.a == d.a | |
| True | |
| >>> named.b == d.b |
| # Sort a list of dictionary objects by a key - case sensitive | |
| from operator import itemgetter | |
| mylist = sorted(mylist, key=itemgetter('name')) | |
| # Sort a list of dictionary objects by a key - case insensitive | |
| mylist = sorted(mylist, key=lambda k: k['name'].lower()) |