Skip to content

Commit

Permalink
Hello version 0.0.9!
Browse files Browse the repository at this point in the history
  • Loading branch information
uralbash committed Jun 11, 2015
1 parent 4b62521 commit 12cbee8
Show file tree
Hide file tree
Showing 6 changed files with 46 additions and 50 deletions.
5 changes: 5 additions & 0 deletions CHANGES.rst
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
0.0.9 (2015-06-11)
==================

- fix settings['pyramid_sacrud.models'] with one table in list

0.0.8 (2015-06-04)
==================

Expand Down
3 changes: 3 additions & 0 deletions pyramid_sacrud/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,9 @@
Includeme of SACRUD
"""

CONFIG_MODELS = 'pyramid_sacrud.models'
CONFIG_DASHBOARD_ROW_LEN = 'pyramid_sacrud.dashboard_row_len'


def includeme(config):
config.include('.includes')
Expand Down
45 changes: 24 additions & 21 deletions pyramid_sacrud/common/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,14 @@
Any helpers for Pyramid
"""
import itertools
from collections import OrderedDict

import colander
import sqlalchemy

from sacrud.common import get_attrname_by_colname, get_columns

from .. import CONFIG_MODELS


def preprocessing_value(value):
if value is colander.null:
Expand Down Expand Up @@ -78,19 +80,28 @@ def set_jinja2_silent_none(config): # pragma: no cover
jinja2_env.finalize = _silent_none


def get_settings_param(request, name):
settings = request.registry.settings
return settings.get(name, {})
def get_settings_param(settings, name):
if not isinstance(settings, dict):
settings = settings.registry.settings
param = settings.get(name)
if isinstance(param, str):
return import_from_string(param)
return param


def get_obj_from_settings(request, name):
settings = request
if not isinstance(request, dict):
settings = request.registry.settings
position_model = settings.get(name)
if isinstance(position_model, str):
return import_from_string(position_model)
return position_model
def get_models_from_settings(settings):
models = get_settings_param(settings, CONFIG_MODELS)
if not models:
return OrderedDict()
try:
for key, value in models:
break
except ValueError:
models = (models, )
return OrderedDict(
[(key, value) if hasattr(value, '__iter__') else (key, [value, ])
for key, value in models]
)


def sacrud_env(fun):
Expand All @@ -116,8 +127,7 @@ def wrapped(self, *args, **kwargs):
def get_table(tname, request):
""" Return table by table name from pyramid_sacrud.models in settings.
"""
pyramid_sacrud_models = get_settings_param(request,
'pyramid_sacrud.models')
pyramid_sacrud_models = get_models_from_settings(request)
try:
models = dict(pyramid_sacrud_models)
except ValueError:
Expand All @@ -139,10 +149,3 @@ def get_table_verbose_name(table):
elif hasattr(table, '__tablename__'):
return table.__tablename__
return table.name


def update_difference_object(obj, key, value):
if isinstance(obj, dict):
obj.update({key: value})
else:
setattr(obj, key, value)
30 changes: 9 additions & 21 deletions pyramid_sacrud/tests/test_common.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,14 @@

import colander
from pyramid import testing

from pyramid_sacrud.breadcrumbs import breadcrumbs, get_crumb
from pyramid_sacrud.common import (get_obj_from_settings, get_table,
from pyramid_sacrud.common import (get_settings_param, get_table,
get_table_verbose_name, import_from_string,
preprocessing_value,
update_difference_object)
from pyramid_sacrud.security import (PYRAMID_SACRUD_CREATE,
PYRAMID_SACRUD_HOME, PYRAMID_SACRUD_LIST,
PYRAMID_SACRUD_UPDATE)
preprocessing_value)
from pyramid_sacrud.security import (
PYRAMID_SACRUD_CREATE, PYRAMID_SACRUD_HOME,
PYRAMID_SACRUD_LIST, PYRAMID_SACRUD_UPDATE
)

from .models.auth import User
from .test_views import _TransactionalFixture
Expand Down Expand Up @@ -103,15 +102,15 @@ def test_get_obj_from_settings(self):
config = testing.setUp(request=request)
config.registry.settings['foo.User'] =\
'pyramid_sacrud.tests.models.auth:User'
obj = get_obj_from_settings(request, 'foo.User')
obj = get_settings_param(request, 'foo.User')
self.assertEqual(obj, User)

config.registry.settings['foo.User'] = User
obj = get_obj_from_settings(request, 'foo.User')
obj = get_settings_param(request, 'foo.User')
self.assertEqual(obj, User)

config.registry.settings['foo.User'] = 'bad string'
obj = get_obj_from_settings(request, 'foo.User')
obj = get_settings_param(request, 'foo.User')
self.assertEqual(obj, None)

def test_import_from_string(self):
Expand All @@ -122,17 +121,6 @@ def test_import_from_string(self):
User,
import_from_string(User))

def test_update_difference_object(self):
class Foo:
pass
obj = Foo()
update_difference_object(obj, "foo", "bar")
self.assertEqual(obj.foo, "bar")

obj = {}
update_difference_object(obj, "foo", "bar")
self.assertEqual(obj["foo"], "bar")

def test_get_table(self):
request = testing.DummyRequest()
self._init_pyramid_sacrud_settings(request)
Expand Down
11 changes: 4 additions & 7 deletions pyramid_sacrud/views/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,11 @@
"""
Views for Pyramid frontend
"""
from collections import OrderedDict

from pyramid.events import BeforeRender, subscriber
from pyramid.view import view_config

from ..common import get_settings_param
from .. import CONFIG_DASHBOARD_ROW_LEN
from ..common import get_models_from_settings, get_settings_param
from ..security import (PYRAMID_SACRUD_CREATE, PYRAMID_SACRUD_DELETE,
PYRAMID_SACRUD_HOME, PYRAMID_SACRUD_LIST,
PYRAMID_SACRUD_UPDATE)
Expand All @@ -34,9 +33,7 @@ def add_global(event):
route_name=PYRAMID_SACRUD_HOME,
permission=PYRAMID_SACRUD_HOME)
def sa_home(request):
tables = OrderedDict(get_settings_param(
request, 'pyramid_sacrud.models'))
dashboard_row_len = get_settings_param(
request, 'pyramid_sacrud.dashboard_row_len')
tables = get_models_from_settings(request)
dashboard_row_len = get_settings_param(request, CONFIG_DASHBOARD_ROW_LEN)
return {'dashboard_row_len': int(dashboard_row_len or 3),
'tables': tables}
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ def read(name):

setup(
name='pyramid_sacrud',
version="0.0.8",
version="0.0.9",
url='http://github.com/ITCase/pyramid_sacrud/',
author='Svintsov Dmitry',
author_email='sacrud@uralbash.ru',
Expand Down

0 comments on commit 12cbee8

Please sign in to comment.