Skip to content

Instantly share code, notes, and snippets.

View mariocesar's full-sized avatar

Mario-César mariocesar

View GitHub Profile
@mariocesar
mariocesar / update_permissions.py
Created October 24, 2012 14:24
Django: Sync new permissions for specified apps with the database, or all apps if no args are specified
from django.core.management.base import BaseCommand
from django.db.models import get_models, get_app
from django.contrib.auth.management import create_permissions
class Command(BaseCommand):
args = '<app app ...>'
help = 'Sync new permissions for specified apps with the database, or all apps if no args are specified'
def handle(self, *args, **options):
@mariocesar
mariocesar / middleware.py
Last active November 5, 2015 01:32
Django Middleware to serve a root if no file is found then serve the django, this intended to be use with the $tryfile option in nginx.
from os import path
from django.conf import settings
from django.http import Http404
from django.views import static
class TryStatic:
def __init__(self):
self.root = settings.PUBLIC_ROOT
self.index_file = 'index.html'
@mariocesar
mariocesar / urls.py
Last active November 23, 2015 20:53
Common Django URL's setup
from django.conf.urls import include, url
from django.conf import settings
from django.contrib import admin
urlpatterns = [
url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
url(r'^admin/', include(admin.site.urls)),
url(r'^accounts/', include('django.contrib.auth.urls')),
]
@mariocesar
mariocesar / calc_ansl.py
Last active December 11, 2015 18:09
Formula para el calculo del Aporte Nacional Solidario Laboral, un aporte obligatorio en Bolivia, para usar como una regla salarial en OpenERP (hr.salary.rule)
"""
Formula para el calculo del Aporte Nacional Solidario Laboral
Esta es la explicación legal del calculo de la formula:
* 10% de la diferencia del total ganado solidario menos Bs. 35.000 de diferencia positiva
* 5% de la diferencia del total ganado solidario menos Bs. 25.000 de diferencia positiva
* 1% de la diferencia del total ganado solidario menos Bs. 13.000 de diferencia positiva
"""
@mariocesar
mariocesar / matchMedia.js
Last active December 11, 2015 22:08
matchMedia polyfill for testing media queries in JS / both matchMedia and matchMedia.addListener in one script
/*! matchMedia() polyfill - Test a CSS media type/query in JS. Authors & copyright (c) 2012: Scott Jehl, Paul Irish, Nicholas Zakas.
Dual MIT/BSD license https://github.com/paulirish/matchMedia.js */
window.matchMedia = window.matchMedia || (function( doc, undefined ) {
"use strict";
var bool,
docElem = doc.documentElement,
refNode = docElem.firstElementChild || docElem.firstChild,
// fakeBody required for <FF4 when executed in <head>
@mariocesar
mariocesar / wsgi.py
Last active December 11, 2015 22:18
Django wsgi patch. Every time it starts updates two files. changeset.txt with the current mercurial changeset, wsgistart_info.txt with the host and date of start
import os
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "crowddeals.settings")
def touch_wsgistart_info():
from mercurial import hg, ui
import time
@mariocesar
mariocesar / models.py
Last active December 12, 2015 00:29
Conveniently register model methods as constraints, that will check before saving the model
from functools import wraps
from django.db import models
from django.core.exceptions import ValidationError
class ConstraintModel(models.Model):
class Meta:
abstract = True
def _fill_constraints_register(self):
@mariocesar
mariocesar / ticket_function.sql
Last active December 12, 2015 00:48
PostgreSQL, ticketing system to use numbered sequences
-- returns and update the next value for a named ticket.
CREATE OR REPLACE FUNCTION get_ticket(ticket_name varchar(50)) RETURNS INTEGER AS $$
DECLARE
ticket INTEGER; --
BEGIN
IF EXISTS (SELECT * FROM ticketing_ticket WHERE name = ticket_name FOR UPDATE) THEN
UPDATE ticketing_ticket SET currval = currval + incval
WHERE name = ticket_name RETURNING currval INTO ticket; --
RETURN ticket; --
@mariocesar
mariocesar / grub.txt
Last active December 12, 2015 05:58
Boot multiple live-cds from a USB Stick
## Boot multiple live-cds from a USB
##
# First install grub on the usb, for example:
#
# $ sudo grub-install --no-floppy --force --root-directory=/media/E310-C779 /dev/sdc1
# Get some of the isos you want to boot
#
# $ ls
@mariocesar
mariocesar / storage.py
Last active December 12, 2015 08:58
Django custom storage backend that applies optimizations for png and jpg images
from django.contrib.staticfiles.storage import CachedFilesMixin, StaticFilesStorage
from pipeline.storage import PipelineMixin
def coroutine(func):
def start(*args, **kwargs):
cr = func(*args, **kwargs)
cr.next()
return cr
return start