Skip to content

Commit

Permalink
datasource initial work
Browse files Browse the repository at this point in the history
  • Loading branch information
xen committed Nov 11, 2012
1 parent 8ae49c1 commit f1cd246
Show file tree
Hide file tree
Showing 5 changed files with 106 additions and 14 deletions.
28 changes: 28 additions & 0 deletions MANIFEST
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# file GENERATED by distutils, do NOT edit
README.rst
setup.py
formgear/__init__.py
formgear/controllers.py
formgear/ds.py
formgear/exceptions.py
formgear/fields.py
formgear/forms.py
formgear/loader.py
formgear/models.py
formgear/mongo.py
formgear/registry.py
formgear/utils.py
formgear/widgets.py
formgear/templates/form.html
formgear/templates/form_old.html
formgear/templates/widgets/base_widget.html
formgear/templates/widgets/boolean.html
formgear/templates/widgets/checkbox.html
formgear/templates/widgets/email.html
formgear/templates/widgets/markdown.html
formgear/templates/widgets/password.html
formgear/templates/widgets/pricerange.html
formgear/templates/widgets/select.html
formgear/templates/widgets/string.html
formgear/templates/widgets/text.html
formgear/templates/widgets/timerange.html
26 changes: 26 additions & 0 deletions formgear/ds/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
__all__ = ['ConnectionError', 'connect', 'register_connection',
'DEFAULT_DATASOURCE_NAME']

DEFAULT_DATASOURCE_NAME = 'default'

class ConnectionError(Exception):
pass


_datasources = {}

def register_datasource(ds, connection, alias=DEFAULT_DATASOURCE_NAME, **kwargs):
global _connection_settings
ds_connection = ds(connection=connection, **kwargs)
_connection_settings[alias] = ds_connection

def disconnect(alias=DEFAULT_DATASOURCE_NAME):
global _datasources

if alias in _datasources:
get_connection(alias=alias).disconnect()
del _datasources[alias]

def get_datasource(alias=DEFAULT_DATASOURCE_NAME, reconnect=False):
global _datasources
return _datasources[alias]
21 changes: 8 additions & 13 deletions formgear/ds.py → formgear/ds/base.py
Original file line number Diff line number Diff line change
@@ -1,32 +1,29 @@
# -*- coding: utf-8 -*-
#

class BaseDatasource(object):
class BaseDS(object):
""" Data source interface
"""

def __init__(self, conn):
self.conn = conn

def put(self):
def save(self, id):
raise NotImplemented

def get(self):
def get(self, id):
raise NotImplemented

def get_by_id(self):
def delete(self, id):
raise NotImplemented

def delete(self):
def save_multi(self, ids=[]):
raise NotImplemented

def put_multi(self):
def get_multi(self, ids=[]):
raise NotImplemented

def get_multi(self):
raise NotImplemented

def del_multi(self):
def delete_multi(self, ids=[]):
raise NotImplemented

def query(self):
Expand All @@ -35,8 +32,6 @@ def query(self):
def count(self):
raise NotImplemented

def commit(self):
def disconnect(self):
raise NotImplemented

def rollback(self):
raise NotImplemented
44 changes: 44 additions & 0 deletions formgear/ds/mongo.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# -*- coding: utf-8 -*-
#
from .base import BaseDS

class MongoDS(BaseDS):
""" Mongodb Data Source
"""

def __init__(self, connection, collection):
self.conn = connection
self.collection = db[collection]

def save(self, id):
_id = _id or data.get('_id')
if not (_id is None):
self.collection.update({"_id": _id}, data, upsert=True, safe=True)
return _id
else:
return self.collection.insert(data)

def get(self, id):
return self.collection.find({"_id": _id})

def delete(self, id):
self.collection.remove({"_id": _id})

def save_multi(self, ids=[]):
pass

def get_multi(self, ids=[]):
pass

def delete_multi(self, ids=[]):
pass

def find(collection, **kw):
return self.collection.find(kw)

def count(self, **kw):
return self.collection.count(kw)

def disconnect(self):
self.conn.disconnect()

1 change: 0 additions & 1 deletion formgear/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
from __future__ import print_function
import os
import yaml
import mongo

from formgear.fields import FieldsRegistry
from formgear.widgets import WidgetRegistry
Expand Down

0 comments on commit f1cd246

Please sign in to comment.