app/soc/logic/models/base.py
changeset 565 b0c5d58f9d3e
parent 543 280a1ac6bcc1
child 592 be98a2f5d8a2
--- a/app/soc/logic/models/base.py	Sat Nov 22 20:54:42 2008 +0000
+++ b/app/soc/logic/models/base.py	Sat Nov 22 21:15:21 2008 +0000
@@ -295,135 +295,6 @@
 
     return query.fetch(limit, offset)
 
-  def buildTypedQueryString(self):
-    """Returns a GQL query string compatible with PolyModel.
-    """
-    return ''.join(self._buildTypedQueryParts())
-
-  def _buildTypedQueryParts(self):
-    if self._base_model:
-      return [
-          'SELECT * FROM ', self._base_model.__name__,
-          " WHERE inheritance_line = '", self.getFullModelClassName(), "'"]
-    
-    return ['SELECT * FROM ', self._model.__name__]
-
-  def buildOrderedQueryString(self, order_by=None):
-    """Returns a an ordered GQL query string compatible with PolyModel.
-  
-    Args:
-      order_by: optional field name by which to order the query results;
-        default is None, in which case no ORDER BY clause is placed in
-        the query string
-    """
-    return ''.join(self._buildOrderedQueryParts(order_by=order_by))
-
-  def _buildOrderedQueryParts(self, order_by=None):
-    query_str_parts = self._buildTypedQueryParts()
-
-    if order_by:
-      query_str_parts.extend([' ORDER BY ', order_by])
-
-    return query_str_parts
-
-  def getEntitiesForLimitAndOffset(self, limit, offset=0, order_by=None):
-    """Returns entities for given offset and limit or None if not found.
-    
-    Args:
-      limit: max amount of entities to return
-      offset: optional offset in entities list which defines first entity to
-        return; default is zero (first entity)
-    """
-    query_string = self.buildOrderedQueryString(order_by=order_by)
-    query = db.GqlQuery(query_string)
-
-    return query.fetch(limit, offset)
-
-  def getNearestEntities(self, fields_to_try):
-    """Get entities just before and just after the described entity.
-    
-    Args:
-      fields_to_try: ordered list of key/value pairs that "describe"
-        the desired entity (which may not necessarily exist), where key is
-        the name of the field, and value is an instance of that field
-        used in the comparison; if value is None, that field is skipped
-
-    Returns:
-      a two-tuple: ([nearest_entities], 'field_name')
-    
-      nearest_entities: list of entities being those just before and just
-        after the (possibly non-existent) entity identified by the first
-        of the supplied (non-None) fields
-          OR
-        possibly None if query had no results for the supplied field
-        that was used.
-    """
-    # SELECT * FROM base_class WHERE inheritance_line = 'derived_class'
-    typed_query_parts = self._buildTypedQueryParts()
-  
-    if self._base_model:
-      typed_query_parts.append(' AND %s > :1')
-    else:
-      typed_query_parts.append(' WHERE %s > :1')
-
-    typed_query_fmt = ''.join(typed_query_parts)
-
-    for field, value in fields_to_try:
-      if value is None:
-        # skip this not-supplied field
-        continue
-
-      query = db.GqlQuery(typed_query_fmt % field, value)
-      return query.fetch(1), field
-
-    # all fields exhausted, and all had None values
-    return (None, None)
-
-  def findNearestEntitiesOffset(width, fields_to_try):
-    """Finds offset of beginning of a range of entities around the nearest.
-  
-    Args:
-      width: the width of the "found" window around the nearest User found
-      fields_to_try:  see getNearestEntities()
-    
-    Returns:
-      an offset into the list of entities that is width/2 less than the
-      offset of the first entity returned by getNearestEntities(), or zero
-      if that offset would be less than zero
-        OR
-      None if there are no nearest entities or the offset of the beginning of
-      the range cannot be found for some reason 
-    """
-    # find entity "nearest" to supplied fields
-    nearest_entities, field = self.getNearestEntities(fields_to_try)
-  
-    if not nearest_entities:
-      # no "nearest" entity, so indicate that with None
-      return None
-
-    nearest_entity = nearest_entities[0]
-
-    # start search for beginning of nearest Users range at offset zero
-    offset = 0
-    entities = self.getEntitiesForLimitAndOffset(width, offset=offset)
-  
-    while True:
-      for entity in entities:
-        if getattr(nearest_entity, field) == getattr(entity, field):
-          # nearest User found in current search range, so return a range start
-          return max(0, (offset - (width/2)))
-
-        offset = offset + 1
-
-      # nearest User was not in the current search range, so fetch the next set
-      entities = self.getEntitiesForLimitAndOffset(width, offset=offset)
-
-      if not entities:
-        # nearest User never found, so indicate that with None
-        break
-
-    return None
-
   def updateModelProperties(self, model, model_properties):
     """Update existing model entity using supplied model properties.