Skip to content

Instantly share code, notes, and snippets.

View toxinu's full-sized avatar

Geoffrey toxinu

View GitHub Profile
@toxinu
toxinu / __init__py
Created September 24, 2020 01:35
blog/websocket-with-flask-and-gevent
import os
from flask import Flask
from websocket import handle_websocket
app = Flask(__name__)
app.secret_key = os.urandom(24)
app.debug = True
def my_app(environ, start_response):
@toxinu
toxinu / requirements.txt
Created September 24, 2020 01:35
blog/websocket-with-flask-and-gevent
flask
gevent
gevent-websocket
@toxinu
toxinu / bash.sh
Created September 24, 2020 01:34
blog/websocket-with-flask-and-gevent
.
├── runserver.py
├── requirements.txt
└── app
   ├── __init__.py
├── views.py
├── websocket.py
├── static
│   └── ...
└── templates
@toxinu
toxinu / bash.sh
Created September 24, 2020 01:33
blog/first-thing-to-do-after-ubuntu-fresh-install
sudo apt-get remove unity-lens-shopping
sudo apt-get remove unity-scope-video-remote
sudo apt-get remove unity-scope-musicstores
sudo su -
echo 'OFFERS_URI="https://localhost:0/"' >> /etc/environment
@toxinu
toxinu / resources.py
Created September 24, 2020 01:29
blog/restless-for-building-python-restful-api
from restless.dj import DjangoResource
from restless.preparers import FieldsPreparer
from .mixins import APIPaginatorMixin
class CountryResource(APIPaginatorMixin, DjangoResource):
preparer = FieldsPreparer(fields={
'id': 'id',
'name': 'name'})
def get_queryset(self):
@toxinu
toxinu / mixins.py
Created September 24, 2020 01:28
blog/restless-for-building-python-restful-api
from django.core.paginator import Paginator
class APIPaginatorMixin:
per_page = 25
def get_queryset(self):
raise NotImplementedError()
def wrap_list_response(self, data):
return {
@toxinu
toxinu / urls.py
Created September 24, 2020 01:28
blog/restless-for-building-python-restful-api
[...]
url(r'^api/countries/', include(CountryResource.urls())),
url(r'^api/pizzas/', include(PizzaResource.urls())),
[...]
@toxinu
toxinu / resources.py
Created September 24, 2020 01:27
blog/restless-for-building-python-restful-api
from restless.dj import DjangoResource
from restless.preparers import FieldsPreparer
class CountryResource(DjangoResource):
preparer = FieldsPreparer(fields={
'id': 'id',
'name': 'name'})
class PizzaResource(DjangoResource):
preparer = FieldsPreparer(fields={
@toxinu
toxinu / models.py
Created September 24, 2020 01:27
blog/restless-for-building-python-restful-api
class Country(models.Model):
name = models.CharField(max_length=2)
class Pizza(models.Model):
name = models.CharField(max_length=255)
country = models.ForeignKey(Country)
@toxinu
toxinu / class.py
Created September 24, 2020 01:26
blog/filtering-and-ordering-with-restless
class APIOrderingMixin:
allowed_fields_ordering = []
ordering_field = 'order_by'
def ordering(self, queryset):
order_by = self.request.GET.get(self.ordering_field)
if not order_by:
return queryset
if order_by.split('-')[-1] in self.allowed_fields_ordering: