Skip to content

Instantly share code, notes, and snippets.

View ikks's full-sized avatar

Igor Támara ikks

View GitHub Profile
@ikks
ikks / payu_helper.py
Created April 1, 2015 19:49
Payu Helpers for python 2.x .
import hashlib
def payu_rounder(value):
u"""value is a unicode, returns the round according to Payu documentation
to be used by confirmationUrl
>>> payu_rounder(u'150.25')
u'150.2'
>>> payu_rounder(u'150.35')
u'150.4'
>>> payu_rounder(u'150.34')
@ikks
ikks / ShipServiceFedex.py
Created March 12, 2015 15:20
Consuming ShipServiceFedex By Hand in Python
import time
import httplib
from datetime import datetime
from collections import OrderedDict
from django.conf import settings
from constance import config
# You can use soap_call(prepare_data())
@ikks
ikks / show_my_spreadsheet.py
Created January 14, 2015 12:11
You have an spreadsheet in Google and need to take a look in the cli, we are covered :)
#!/usr/bin/python2.7
import argparse
import gspread # Pip install it
def print_spreadsheet(email, password, key):
"""print_spreadsheet(email, password, key)
Prints out a Google spreadsheet
"""
@ikks
ikks / remote_csv.py
Created December 10, 2014 17:17
Load a unicode csv file from an url
import unicodecsv # pip install unicodecsv
import urllib2
def loadfile(url, delimiter=","):
"""Loads a file from a URL (a csv one), separated with delimiter
returns an array with the contents of the file.
"""
reader = unicodecsv.reader(
urllib2.urlopen(url),
encoding='utf-8',
@ikks
ikks / xslxml2csv.sh
Created November 1, 2014 23:45
Converts an xls xml table to csv. Usually those files are in iso-88859-1 in a one long line, with this you can convert them to a psv. Requires iconv and sed
iconv -f iso-8859-1 -t utf-8 INPUTFILE | sed 's%^.*<table>%%g;s%</table>%%g;s% x:str%%g' | sed 's%<tr><td>%%g;s%</td><td>%|%g;s%</td></tr>%\n%g' > OUTPUTFILE
@ikks
ikks / xapian-virtualenv.sh
Created October 9, 2014 20:41
Installation of xapian inside a virtualenv
pkgver=1.2.17
mkdir -p $VIRTUAL_ENV/src && cd $VIRTUAL_ENV/src
curl -O http://oligarchy.co.uk/xapian/$pkgver/xapian-core-$pkgver.tar.xz && tar xf xapian-core-$pkgver.tar.xz
curl -O http://oligarchy.co.uk/xapian/$pkgver/xapian-bindings-$pkgver.tar.xz && tar xf xapian-bindings-$pkgver.tar.xz
cd $VIRTUAL_ENV/src/xapian-core-$pkgver
./configure --prefix=$VIRTUAL_ENV && make && make install
export LD_LIBRARY_PATH=$VIRTUAL_ENV/lib
@ikks
ikks / weekly_report.py
Created September 25, 2014 21:27
An approach to have a weekly report
def weekly(query, weeks, initial, final):
u"""Returns a partitioned result grouped by 7 days.
query: Initial query
weeks: Max Number of weeks
initial: initial part of the week
final: end part of the week
You can use like the following:
previous = weekly(
my_query, 8, 'validated_at__gt', 'validated_at__lte',
@ikks
ikks / claiming_mailbox_from_gmail.py
Last active August 29, 2015 14:06
Download headers from a label and filter them
"""With the Gmail API is easy to download all your messages or filter them,
is a good practice to have filters and put them in your own messages, so later you
can get some statistics.
You need to make all the auth dance in order to connect to the API, for development
purposes you'll be ok with the instructions provided by Gmail
https://developers.google.com/gmail/api/v1/reference/users/messages
"""
# Path to the output filename
@ikks
ikks / entities_to_raw.sql
Created August 11, 2014 13:16
Update html entities to raw in postgresql
UPDATE cms_base_page SET content=replace(content, '&Aacute;', 'Á');
UPDATE cms_base_page SET content=replace(content, '&Eacute;', 'É');
UPDATE cms_base_page SET content=replace(content, '&Iacute;', 'Í');
UPDATE cms_base_page SET content=replace(content, '&Oacute;', 'Ó');
UPDATE cms_base_page SET content=replace(content, '&Uacute;', 'Ú');
UPDATE cms_base_page SET content=replace(content, '&Uuml;', 'Ü');
UPDATE cms_base_page SET content=replace(content, '&Ntilde;', 'Ñ');
UPDATE cms_base_page SET content=replace(content, '&aacute;', 'á');
UPDATE cms_base_page SET content=replace(content, '&eacute;', 'é');
UPDATE cms_base_page SET content=replace(content, '&iacute;', 'í');
@ikks
ikks / avoid_fast_click_admin.js
Created August 1, 2014 12:58
Avoid double click for fast clickers in Django admin
// Make sure you have this in a file invoked from the admin templating system
grp.jQuery(function(){
grp.jQuery.fn.preventDoubleSubmission = function() {
grp.jQuery(this).on('submit',function(e){
var the_form = grp.jQuery(this);
if (the_form.data('submitted') === true) {
// Previously submitted - don't submit again
e.preventDefault();
} else {