Skip to content

Instantly share code, notes, and snippets.

@FZambia
Created March 17, 2013 13:00
Show Gist options
  • Save FZambia/5181394 to your computer and use it in GitHub Desktop.
Save FZambia/5181394 to your computer and use it in GitHub Desktop.
when we need methods groupped together
# coding: utf-8
from datetime import datetime
try:
import simplejson as json
except ImportError:
import json
datetime_json_handler = lambda obj: obj.isoformat() if isinstance(obj, datetime) else None
class ModelManager(object):
def __init__(self):
self.registered = {}
def register(self, model):
assert isinstance(model, Model)
self.registered[model.__class__.__name__.lower()] = model
def __getattr__(self, item):
model = self.registered.get(item.lower(), None)
if not model:
raise AttributeError("model %s not registered" % item.capitalize())
return model
class Model(object):
def to_json(self, data):
return json.dumps(data, default=datetime_json_handler)
class Project(Model):
pass
class Category(Model):
pass
class Source(Model):
pass
class Gist(Model):
pass
class Event(Model):
pass
models = ModelManager()
models.register(Project())
models.register(Category())
models.register(Source())
models.register(Gist())
models.register(Event())
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment