Skip to content

Instantly share code, notes, and snippets.


Karthik Ravindra karthikbgl

  • New York, NY
View GitHub Profile
karthikbgl /
Last active Aug 29, 2015
Django ModelAdmin "Save as New"
class MyModelAdminForm(forms.ModelForm):
To add the option 'Save as New', by default does not work for reverse
ManyToMany/ForeignKey fields. In other words, does not copy over the
reverse attributes. A simple workaround to make this happen is:
update the cleaned_data and returning it in the context.
Something like this:
def clean(self, *args, **kwargs):
cd = self.cleaned_data
karthikbgl /
Last active Aug 29, 2015
Sunsigns models and create view using django
CAPRICORN = 'Capricorn'
AQUARIUS = 'Aquarius'
PISCES = 'Pisces'
ARIES = 'Aries'
TAURUS = 'Taurus'
GEMINI = 'Gemini'
CANCER = 'Cancer'
LEO = 'Leo'
karthikbgl /
Last active Aug 29, 2015
Editing south migrations to run custom sql
# -*- coding: utf-8 -*-
import datetime
from south.db import db
from south.v2 import DataMigration
from django.db import models
class Migration(DataMigration):
def forwards(self, orm):
This is an example of functools.partials
Typical usage is when you have a function that needs multiple parameters,
of which one is a constant, you can use a partial.
Return only the values in an iterable which match the regex 'c.t' where . is a single character.
['cat', 'cut', 'abc', 'def']
karthikbgl / seconds_to_string
Created Oct 23, 2014
Time elapsed in seconds
View seconds_to_string
def secondsToStr(t):
This snippet converts the time elapsed in
seconds to HH:MM:SS.mmm
>>> secondsToStr(123456)
karthikbgl /
Created Jun 25, 2015
Override the standard 500 error page to display the stack trace if certain conditions are met. The advantage of overriding the server error handler is, it keeps everything else intact - example all the error emails, etc.
from django.views.debug import technical_500_response
from django.views.defaults import server_error
def server_error_handler(request):
ip_address = request.META.get("HTTP_X_FORWARDED_FOR", request.META.get("REMOTE_ADDR"))
if ip_address in settings.ALLOWED_IPS_FOR_DEBUG_SCREEN: #or request.user.is_staff
return technical_500_response(request, *sys.exc_info())
return server_error(request)
karthikbgl / console_log_ie_fix.js
Last active Aug 29, 2015
console.log messages in code are bad for Internet Explorer <= 9. This plugin would avoid the application from crashing when console.log messages are present in the javascript code.
View console_log_ie_fix.js
;(function () {
// console.log statements cause issues in Internet Explorer <= 9.
// This piece of code prevents the application to fail
// Source for console:
var fns = [
import fractions
def smallest_multiple( n):
return reduce(lambda x, y: x*y/fractions.gcd(x, y), range(2, n+1))
karthikbgl /
Created Oct 24, 2015
All possible combinations of substrings
import itertools
def yieldSubset(s):
return sorted(list(set([''.join(c) for i in range(len(s)+1) for c in itertools.combinations(s, i) if c])))
karthikbgl / regex_matcher.js
Last active Jul 22, 2017
Regex pattern matches using jquery
View regex_matcher.js
(function($) {
$.fn.regexFinder = function(text) {
Phone number formats
var cc_re = /(?:4[0-9]{12}(?:[0-9]{3})?|[25][1-7][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})/g;
var date_re = /\d{2}\/\d{4}/g;