Remove polymodel module from repository.
authorPawel Solyga <Pawel.Solyga@gmail.com>
Sat, 22 Nov 2008 22:47:10 +0000
changeset 571 2aad108bc617
parent 570 cbd07fbdc125
child 572 1b3e7280743a
Remove polymodel module from repository. Patch by: Pawel Solyga, Sverre Rabbelier
app/polymodel/LICENSE
app/polymodel/__init__.py
--- a/app/polymodel/LICENSE	Sat Nov 22 22:46:37 2008 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,22 +0,0 @@
-The MIT License
-
-Copyright (c) 2008 Andreas Blixt <andreas@blixt.org>
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-
--- a/app/polymodel/__init__.py	Sat Nov 22 22:46:37 2008 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,124 +0,0 @@
-#
-# Copyright (c) 2008 Andreas Blixt <andreas@blixt.org>
-# Project homepage: <http://code.google.com/p/blixt/>
-#
-# License: MIT license <http://www.opensource.org/licenses/mit-license.php>
-#
-
-"""Data-related Google App Engine extensions.
-"""
-
-from google.appengine.ext import db
-
-import sys
-
-# Add ModelWithFieldAttributes *before* PolyModel, so that everything does
-# not become a "ModelWithFieldAttributes" in the Datastore.
-from soc.models import base
-
-class Error(Exception):
-    """Base of all exceptions in the blixt.data module."""
-    pass
-
-class PolyModel(base.ModelWithFieldAttributes):
-    """An extension to Google App Engine models that improves the support for
-    inheritance.
-
-    Any models extending a model that extends PolyModel will be stored in the
-    datastore as the same kind as the model that extends PolyModel, but with
-    their additional properties. When they are retrieved from the datastore,
-    they will be loaded as the appropiate model class.
-
-    The difference from the Model class is that queries will include models that
-    inherit from the model being queried.
-    """
-    inheritance_line = db.StringListProperty()
-
-    def __init__(self, parent = None, key_name = None, _app = None, **kwds):
-        """Creates a new instance of this polymorphic model.
-
-        Args:
-          parent: Parent instance for this instance or None, indicating a top-
-            level instance.
-          key_name: Name for new model instance.
-          _app: Intentionally undocumented.
-          args: Keyword arguments mapping to properties of model.
-        """
-        if self.__class__ == PolyModel or not isinstance(self, PolyModel):
-            raise Error('Instances of PolyModel must be created through a '
-                        'subclass of PolyModel.')
-
-        line = []
-        for c in self.__class__.__mro__:
-            if c == PolyModel:
-                self.__class__._kind = p
-                break
-            line.append('%s.%s' % (c.__module__, c.__name__))
-            p = c
-
-        kwds['inheritance_line'] = line
-
-        super(PolyModel, self).__init__(parent = parent, key_name = key_name,
-                                        _app = _app, **kwds)
-
-    @classmethod
-    def _kind_type(cls):
-        """Gets the class highest in the model inheritance hierarchy (the class
-        that will be used as the datastore kind.)
-        """
-        p = cls
-
-        for c in cls.__mro__:
-            # The meta-class 'PropertiedClass' calls kind() which leads here.
-            # The variable 'PolyModel' is not assigned until after the meta-
-            # class has finished setting up the class. Therefore, a string
-            # comparison is used instead of a value comparison.
-            if c.__name__ == 'PolyModel': break
-            p = c
-
-        return p
-
-    @classmethod
-    def all(cls):
-        """Returns a query over all instances of this model, as well as the
-        instances of any descendant models, from the datastore.
-
-        Returns:
-          Query that will retrieve all instances from entity collection.
-        """
-        qry = super(PolyModel, cls).all()
-
-        if cls != cls._kind_type():
-            full_name = '%s.%s' % (cls.__module__, cls.__name__)
-            qry.filter('inheritance_line =', full_name)
-
-        return qry
-
-    @classmethod
-    def from_entity(cls, entity):
-        """Converts the entity representation of this model to an instance.
-
-        Converts datastore.Entity instance to an instance of the appropiate
-        class, which can be cls or any descendant thereof.
-
-        Args:
-          entity: Entity loaded directly from datastore.
-
-        Raises:
-          KindError when cls is incorrect model for entity.
-        """
-        if entity.has_key('inheritance_line'):
-            mod_name, cls_name = entity['inheritance_line'][0].rsplit('.', 1)
-            __import__(mod_name)
-            cls = getattr(sys.modules[mod_name], cls_name)
-        return super(PolyModel, cls).from_entity(entity)
-
-    @classmethod
-    def kind(cls):
-        """Returns the datastore kind we use for this model.
-
-        This is the name of the class that is highest up in the inheritance
-        hierarchy of this model.
-        """
-        return cls._kind_type().__name__
-