Commit a2366f85 authored by Serge S. Koval's avatar Serge S. Koval

Renamed sqlalchemy and peewee contrib packages

parent 16fa57f2
# -*- coding: utf-8 -*-
"""
flask.ext.admin._backwards
~~~~~~~~~~~~~~~~~~~~~~~~~~
Backward compatibility helpers.
"""
import sys
import warnings
def get_property(obj, name, old_name, default=None):
"""
Check if old property name exists and if it does - show warning message
and return value.
Otherwise, return new property value
:param name:
New property name
:param old_name:
Old property name
:param default:
Default value
"""
if hasattr(obj, old_name):
warnings.warn('Property %s is obsolete, please use %s instead' %
(old_name, name), stacklevel=2)
return getattr(obj, old_name)
return getattr(obj, name, default)
class ObsoleteAttr(object):
def __init__(self, new_name, old_name, default):
self.new_name = new_name
self.old_name = old_name
self.cache = '_cache_' + new_name
self.default = default
def __get__(self, obj, objtype=None):
if obj is None:
return self
# Check if we have new cached value
if hasattr(obj, self.cache):
return getattr(obj, self.cache)
# Check if there's old attribute
if hasattr(obj, self.old_name):
warnings.warn('Property %s is obsolete, please use %s instead' %
(self.old_name, self.new_name), stacklevel=2)
return getattr(obj, self.old_name)
# Return default otherwise
return self.default
def __set__(self, obj, value):
setattr(obj, self.cache, value)
class ImportRedirect(object):
def __init__(self, prefix, target):
self.prefix = prefix
self.target = target
def find_module(self, fullname, path=None):
if fullname.startswith(self.prefix):
return self
def load_module(self, fullname):
if fullname in sys.modules:
return sys.modules[fullname]
path = self.target + fullname[len(self.prefix):]
__import__(path)
module = sys.modules[fullname] = sys.modules[path]
return module
def import_redirect(old, new):
sys.meta_path.append(ImportRedirect(old, new))
try:
import peewee
import wtfpeewee
except ImportError:
raise Exception('Please install peewee and wtf-peewee packages in order to use peewee integration')
from .view import ModelView
try:
import peewee
import wtfpeewee
except ImportError:
raise Exception('Please install peewee and wtf-peewee packages in order to use peewee integration')
def setup():
import warnings
warnings.warn('Flask-Admin peewee integration module was renamed as flask.ext.admin.contrib.peewee, please use it instead.')
from .view import ModelView
from flask.ext.admin._backwards import import_redirect
import_redirect(__name__, 'flask_admin.contrib.peewee')
setup()
del setup
from ..peewee.view import ModelView
from .view import ModelView
......@@ -3,9 +3,9 @@ from sqlalchemy import Boolean, Column
from flask.ext.admin import form
from flask.ext.admin.form import Select2Field
from flask.ext.admin.tools import get_property
from flask.ext.admin.model.form import (converts, ModelConverterBase,
InlineFormAdmin, InlineModelConverterBase)
from flask.ext.admin._backwards import get_property
from .validators import Unique
from .fields import QuerySelectField, QuerySelectMultipleField, InlineModelFormList
......
......@@ -8,10 +8,10 @@ from sqlalchemy import or_, Column, func
from flask import flash
from flask.ext.admin._compat import string_types
from flask.ext.admin.tools import ObsoleteAttr
from flask.ext.admin.babel import gettext, ngettext, lazy_gettext
from flask.ext.admin.model import BaseModelView
from flask.ext.admin.actions import action
from flask.ext.admin._backwards import ObsoleteAttr
from flask.ext.admin.contrib.sqlamodel import form, filters, tools
from .typefmt import DEFAULT_FORMATTERS
......
from .view import ModelView
def setup():
import warnings
warnings.warn('Flask-Admin sqlalchemy integration module was renamed as flask.ext.admin.contrib.sqla, please use it instead.')
from flask.ext.admin._backwards import import_redirect
import_redirect(__name__, 'flask_admin.contrib.sqla')
setup()
del setup
from ..sqla.view import ModelView
......@@ -7,10 +7,11 @@ from jinja2 import contextfunction
from flask.ext.admin.babel import gettext
from flask.ext.admin.base import BaseView, expose
from flask.ext.admin.tools import rec_getattr, ObsoleteAttr
from flask.ext.admin.model import filters, typefmt
from flask.ext.admin.actions import ActionsMixin
from flask.ext.admin.helpers import get_form_data, validate_form_on_submit
from flask.ext.admin.tools import rec_getattr
from flask.ext.admin._backwards import ObsoleteAttr
class BaseModelView(BaseView, ActionsMixin):
......
......@@ -97,53 +97,3 @@ def get_dict_attr(obj, attr, default=None):
return obj.__dict__[attr]
return default
def get_property(obj, name, old_name, default=None):
"""
Check if old property name exists and if it does - show warning message
and return value.
Otherwise, return new property value
:param name:
New property name
:param old_name:
Old property name
:param default:
Default value
"""
if hasattr(obj, old_name):
warnings.warn('Property %s is obsolete, please use %s instead' %
(old_name, name), stacklevel=2)
return getattr(obj, old_name)
return getattr(obj, name, default)
class ObsoleteAttr(object):
def __init__(self, new_name, old_name, default):
self.new_name = new_name
self.old_name = old_name
self.cache = '_cache_' + new_name
self.default = default
def __get__(self, obj, objtype=None):
if obj is None:
return self
# Check if we have new cached value
if hasattr(obj, self.cache):
return getattr(obj, self.cache)
# Check if there's old attribute
if hasattr(obj, self.old_name):
warnings.warn('Property %s is obsolete, please use %s instead' %
(self.old_name, self.new_name), stacklevel=2)
return getattr(obj, self.old_name)
# Return default otherwise
return self.default
def __set__(self, obj, value):
setattr(obj, self.cache, value)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment