Removed trailing whitespace in a few files.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@8571 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
15ed5e61c9
commit
b016ea0ace
|
@ -31,7 +31,7 @@ class GeometryField(SpatialBackend.Field):
|
||||||
Indicates whether to create a spatial index. Defaults to True.
|
Indicates whether to create a spatial index. Defaults to True.
|
||||||
Set this instead of 'db_index' for geographic fields since index
|
Set this instead of 'db_index' for geographic fields since index
|
||||||
creation is different for geometry columns.
|
creation is different for geometry columns.
|
||||||
|
|
||||||
dim:
|
dim:
|
||||||
The number of dimensions for this geometry. Defaults to 2.
|
The number of dimensions for this geometry. Defaults to 2.
|
||||||
"""
|
"""
|
||||||
|
@ -39,18 +39,18 @@ class GeometryField(SpatialBackend.Field):
|
||||||
# Setting the index flag with the value of the `spatial_index` keyword.
|
# Setting the index flag with the value of the `spatial_index` keyword.
|
||||||
self._index = spatial_index
|
self._index = spatial_index
|
||||||
|
|
||||||
# Setting the SRID and getting the units. Unit information must be
|
# Setting the SRID and getting the units. Unit information must be
|
||||||
# easily available in the field instance for distance queries.
|
# easily available in the field instance for distance queries.
|
||||||
self._srid = srid
|
self._srid = srid
|
||||||
self._unit, self._unit_name, self._spheroid = get_srid_info(srid)
|
self._unit, self._unit_name, self._spheroid = get_srid_info(srid)
|
||||||
|
|
||||||
# Setting the dimension of the geometry field.
|
# Setting the dimension of the geometry field.
|
||||||
self._dim = dim
|
self._dim = dim
|
||||||
|
|
||||||
# Setting the verbose_name keyword argument with the positional
|
# Setting the verbose_name keyword argument with the positional
|
||||||
# first parameter, so this works like normal fields.
|
# first parameter, so this works like normal fields.
|
||||||
kwargs['verbose_name'] = verbose_name
|
kwargs['verbose_name'] = verbose_name
|
||||||
|
|
||||||
super(GeometryField, self).__init__(**kwargs) # Calling the parent initializtion function
|
super(GeometryField, self).__init__(**kwargs) # Calling the parent initializtion function
|
||||||
|
|
||||||
### Routines specific to GeometryField ###
|
### Routines specific to GeometryField ###
|
||||||
|
@ -64,7 +64,7 @@ class GeometryField(SpatialBackend.Field):
|
||||||
|
|
||||||
def get_distance(self, dist_val, lookup_type):
|
def get_distance(self, dist_val, lookup_type):
|
||||||
"""
|
"""
|
||||||
Returns a distance number in units of the field. For example, if
|
Returns a distance number in units of the field. For example, if
|
||||||
`D(km=1)` was passed in and the units of the field were in meters,
|
`D(km=1)` was passed in and the units of the field were in meters,
|
||||||
then 1000 would be returned.
|
then 1000 would be returned.
|
||||||
"""
|
"""
|
||||||
|
@ -84,10 +84,10 @@ class GeometryField(SpatialBackend.Field):
|
||||||
else:
|
else:
|
||||||
# Assuming the distance is in the units of the field.
|
# Assuming the distance is in the units of the field.
|
||||||
dist_param = dist
|
dist_param = dist
|
||||||
|
|
||||||
if SpatialBackend.postgis and self.geodetic and lookup_type != 'dwithin' and option == 'spheroid':
|
if SpatialBackend.postgis and self.geodetic and lookup_type != 'dwithin' and option == 'spheroid':
|
||||||
# On PostGIS, by default `ST_distance_sphere` is used; but if the
|
# On PostGIS, by default `ST_distance_sphere` is used; but if the
|
||||||
# accuracy of `ST_distance_spheroid` is needed than the spheroid
|
# accuracy of `ST_distance_spheroid` is needed than the spheroid
|
||||||
# needs to be passed to the SQL stored procedure.
|
# needs to be passed to the SQL stored procedure.
|
||||||
return [gqn(self._spheroid), dist_param]
|
return [gqn(self._spheroid), dist_param]
|
||||||
else:
|
else:
|
||||||
|
@ -98,7 +98,7 @@ class GeometryField(SpatialBackend.Field):
|
||||||
Retrieves the geometry, setting the default SRID from the given
|
Retrieves the geometry, setting the default SRID from the given
|
||||||
lookup parameters.
|
lookup parameters.
|
||||||
"""
|
"""
|
||||||
if isinstance(value, (tuple, list)):
|
if isinstance(value, (tuple, list)):
|
||||||
geom = value[0]
|
geom = value[0]
|
||||||
else:
|
else:
|
||||||
geom = value
|
geom = value
|
||||||
|
@ -117,7 +117,7 @@ class GeometryField(SpatialBackend.Field):
|
||||||
|
|
||||||
# Assigning the SRID value.
|
# Assigning the SRID value.
|
||||||
geom.srid = self.get_srid(geom)
|
geom.srid = self.get_srid(geom)
|
||||||
|
|
||||||
return geom
|
return geom
|
||||||
|
|
||||||
def get_srid(self, geom):
|
def get_srid(self, geom):
|
||||||
|
@ -135,12 +135,12 @@ class GeometryField(SpatialBackend.Field):
|
||||||
### Routines overloaded from Field ###
|
### Routines overloaded from Field ###
|
||||||
def contribute_to_class(self, cls, name):
|
def contribute_to_class(self, cls, name):
|
||||||
super(GeometryField, self).contribute_to_class(cls, name)
|
super(GeometryField, self).contribute_to_class(cls, name)
|
||||||
|
|
||||||
# Setup for lazy-instantiated Geometry object.
|
# Setup for lazy-instantiated Geometry object.
|
||||||
setattr(cls, self.attname, GeometryProxy(SpatialBackend.Geometry, self))
|
setattr(cls, self.attname, GeometryProxy(SpatialBackend.Geometry, self))
|
||||||
|
|
||||||
def formfield(self, **kwargs):
|
def formfield(self, **kwargs):
|
||||||
defaults = {'form_class' : forms.GeometryField,
|
defaults = {'form_class' : forms.GeometryField,
|
||||||
'geom_type' : self._geom,
|
'geom_type' : self._geom,
|
||||||
'null' : self.null,
|
'null' : self.null,
|
||||||
}
|
}
|
||||||
|
@ -161,8 +161,8 @@ class GeometryField(SpatialBackend.Field):
|
||||||
# if it is None.
|
# if it is None.
|
||||||
geom = self.get_geometry(value)
|
geom = self.get_geometry(value)
|
||||||
|
|
||||||
# Getting the WHERE clause list and the associated params list. The params
|
# Getting the WHERE clause list and the associated params list. The params
|
||||||
# list is populated with the Adaptor wrapping the Geometry for the
|
# list is populated with the Adaptor wrapping the Geometry for the
|
||||||
# backend. The WHERE clause list contains the placeholder for the adaptor
|
# backend. The WHERE clause list contains the placeholder for the adaptor
|
||||||
# (e.g. any transformation SQL).
|
# (e.g. any transformation SQL).
|
||||||
where = [self.get_placeholder(geom)]
|
where = [self.get_placeholder(geom)]
|
||||||
|
|
|
@ -44,7 +44,7 @@ def add_lazy_relation(cls, field, relation, operation):
|
||||||
If the other model hasn't yet been loaded -- almost a given if you're using
|
If the other model hasn't yet been loaded -- almost a given if you're using
|
||||||
lazy relationships -- then the relation won't be set up until the
|
lazy relationships -- then the relation won't be set up until the
|
||||||
class_prepared signal fires at the end of model initialization.
|
class_prepared signal fires at the end of model initialization.
|
||||||
|
|
||||||
operation is the work that must be performed once the relation can be resolved.
|
operation is the work that must be performed once the relation can be resolved.
|
||||||
"""
|
"""
|
||||||
# Check for recursive relations
|
# Check for recursive relations
|
||||||
|
@ -378,7 +378,7 @@ def create_many_related_manager(superclass, through=False):
|
||||||
def get_query_set(self):
|
def get_query_set(self):
|
||||||
return superclass.get_query_set(self)._next_is_sticky().filter(**(self.core_filters))
|
return superclass.get_query_set(self)._next_is_sticky().filter(**(self.core_filters))
|
||||||
|
|
||||||
# If the ManyToMany relation has an intermediary model,
|
# If the ManyToMany relation has an intermediary model,
|
||||||
# the add and remove methods do not exist.
|
# the add and remove methods do not exist.
|
||||||
if through is None:
|
if through is None:
|
||||||
def add(self, *objs):
|
def add(self, *objs):
|
||||||
|
@ -773,7 +773,7 @@ class ManyToManyField(RelatedField, Field):
|
||||||
limit_choices_to=kwargs.pop('limit_choices_to', None),
|
limit_choices_to=kwargs.pop('limit_choices_to', None),
|
||||||
symmetrical=kwargs.pop('symmetrical', True),
|
symmetrical=kwargs.pop('symmetrical', True),
|
||||||
through=kwargs.pop('through', None))
|
through=kwargs.pop('through', None))
|
||||||
|
|
||||||
self.db_table = kwargs.pop('db_table', None)
|
self.db_table = kwargs.pop('db_table', None)
|
||||||
if kwargs['rel'].through is not None:
|
if kwargs['rel'].through is not None:
|
||||||
self.creates_table = False
|
self.creates_table = False
|
||||||
|
@ -817,7 +817,7 @@ class ManyToManyField(RelatedField, Field):
|
||||||
self._m2m_column_name_cache = 'from_' + related.model._meta.object_name.lower() + '_id'
|
self._m2m_column_name_cache = 'from_' + related.model._meta.object_name.lower() + '_id'
|
||||||
else:
|
else:
|
||||||
self._m2m_column_name_cache = related.model._meta.object_name.lower() + '_id'
|
self._m2m_column_name_cache = related.model._meta.object_name.lower() + '_id'
|
||||||
|
|
||||||
# Return the newly cached value
|
# Return the newly cached value
|
||||||
return self._m2m_column_name_cache
|
return self._m2m_column_name_cache
|
||||||
|
|
||||||
|
@ -831,8 +831,8 @@ class ManyToManyField(RelatedField, Field):
|
||||||
for f in self.rel.through_model._meta.fields:
|
for f in self.rel.through_model._meta.fields:
|
||||||
if hasattr(f,'rel') and f.rel and f.rel.to == related.parent_model:
|
if hasattr(f,'rel') and f.rel and f.rel.to == related.parent_model:
|
||||||
if related.model == related.parent_model:
|
if related.model == related.parent_model:
|
||||||
# If this is an m2m-intermediate to self,
|
# If this is an m2m-intermediate to self,
|
||||||
# the first foreign key you find will be
|
# the first foreign key you find will be
|
||||||
# the source column. Keep searching for
|
# the source column. Keep searching for
|
||||||
# the second foreign key.
|
# the second foreign key.
|
||||||
if found:
|
if found:
|
||||||
|
@ -884,13 +884,13 @@ class ManyToManyField(RelatedField, Field):
|
||||||
return new_data
|
return new_data
|
||||||
|
|
||||||
def contribute_to_class(self, cls, name):
|
def contribute_to_class(self, cls, name):
|
||||||
super(ManyToManyField, self).contribute_to_class(cls, name)
|
super(ManyToManyField, self).contribute_to_class(cls, name)
|
||||||
# Add the descriptor for the m2m relation
|
# Add the descriptor for the m2m relation
|
||||||
setattr(cls, self.name, ReverseManyRelatedObjectsDescriptor(self))
|
setattr(cls, self.name, ReverseManyRelatedObjectsDescriptor(self))
|
||||||
|
|
||||||
# Set up the accessor for the m2m table name for the relation
|
# Set up the accessor for the m2m table name for the relation
|
||||||
self.m2m_db_table = curry(self._get_m2m_db_table, cls._meta)
|
self.m2m_db_table = curry(self._get_m2m_db_table, cls._meta)
|
||||||
|
|
||||||
# Populate some necessary rel arguments so that cross-app relations
|
# Populate some necessary rel arguments so that cross-app relations
|
||||||
# work correctly.
|
# work correctly.
|
||||||
if isinstance(self.rel.through, basestring):
|
if isinstance(self.rel.through, basestring):
|
||||||
|
@ -900,7 +900,7 @@ class ManyToManyField(RelatedField, Field):
|
||||||
elif self.rel.through:
|
elif self.rel.through:
|
||||||
self.rel.through_model = self.rel.through
|
self.rel.through_model = self.rel.through
|
||||||
self.rel.through = self.rel.through._meta.object_name
|
self.rel.through = self.rel.through._meta.object_name
|
||||||
|
|
||||||
if isinstance(self.rel.to, basestring):
|
if isinstance(self.rel.to, basestring):
|
||||||
target = self.rel.to
|
target = self.rel.to
|
||||||
else:
|
else:
|
||||||
|
|
|
@ -7,7 +7,7 @@ class Person(models.Model):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
ordering = ('name',)
|
ordering = ('name',)
|
||||||
|
|
||||||
def __unicode__(self):
|
def __unicode__(self):
|
||||||
return self.name
|
return self.name
|
||||||
|
|
||||||
|
@ -19,7 +19,7 @@ class Group(models.Model):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
ordering = ('name',)
|
ordering = ('name',)
|
||||||
|
|
||||||
def __unicode__(self):
|
def __unicode__(self):
|
||||||
return self.name
|
return self.name
|
||||||
|
|
||||||
|
@ -31,7 +31,7 @@ class Membership(models.Model):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
ordering = ('date_joined', 'invite_reason', 'group')
|
ordering = ('date_joined', 'invite_reason', 'group')
|
||||||
|
|
||||||
def __unicode__(self):
|
def __unicode__(self):
|
||||||
return "%s is a member of %s" % (self.person.name, self.group.name)
|
return "%s is a member of %s" % (self.person.name, self.group.name)
|
||||||
|
|
||||||
|
@ -40,10 +40,10 @@ class CustomMembership(models.Model):
|
||||||
group = models.ForeignKey(Group)
|
group = models.ForeignKey(Group)
|
||||||
weird_fk = models.ForeignKey(Membership, null=True)
|
weird_fk = models.ForeignKey(Membership, null=True)
|
||||||
date_joined = models.DateTimeField(default=datetime.now)
|
date_joined = models.DateTimeField(default=datetime.now)
|
||||||
|
|
||||||
def __unicode__(self):
|
def __unicode__(self):
|
||||||
return "%s is a member of %s" % (self.person.name, self.group.name)
|
return "%s is a member of %s" % (self.person.name, self.group.name)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
db_table = "test_table"
|
db_table = "test_table"
|
||||||
|
|
||||||
|
@ -55,7 +55,7 @@ class TestNoDefaultsOrNulls(models.Model):
|
||||||
class PersonSelfRefM2M(models.Model):
|
class PersonSelfRefM2M(models.Model):
|
||||||
name = models.CharField(max_length=5)
|
name = models.CharField(max_length=5)
|
||||||
friends = models.ManyToManyField('self', through="Friendship", symmetrical=False)
|
friends = models.ManyToManyField('self', through="Friendship", symmetrical=False)
|
||||||
|
|
||||||
def __unicode__(self):
|
def __unicode__(self):
|
||||||
return self.name
|
return self.name
|
||||||
|
|
||||||
|
@ -98,7 +98,7 @@ __test__ = {'API_TESTS':"""
|
||||||
>>> jim.group_set.all()
|
>>> jim.group_set.all()
|
||||||
[<Group: Rock>, <Group: Roll>]
|
[<Group: Rock>, <Group: Roll>]
|
||||||
|
|
||||||
# Querying the intermediary model works like normal.
|
# Querying the intermediary model works like normal.
|
||||||
# In this case we get Jane's membership to Rock.
|
# In this case we get Jane's membership to Rock.
|
||||||
>>> m = Membership.objects.get(person=jane, group=rock)
|
>>> m = Membership.objects.get(person=jane, group=rock)
|
||||||
>>> m
|
>>> m
|
||||||
|
@ -122,7 +122,7 @@ __test__ = {'API_TESTS':"""
|
||||||
|
|
||||||
### Forward Descriptors Tests ###
|
### Forward Descriptors Tests ###
|
||||||
|
|
||||||
# Due to complications with adding via an intermediary model,
|
# Due to complications with adding via an intermediary model,
|
||||||
# the add method is not provided.
|
# the add method is not provided.
|
||||||
>>> rock.members.add(bob)
|
>>> rock.members.add(bob)
|
||||||
Traceback (most recent call last):
|
Traceback (most recent call last):
|
||||||
|
@ -173,7 +173,7 @@ AttributeError: Cannot set values on a ManyToManyField which specifies an interm
|
||||||
|
|
||||||
### Reverse Descriptors Tests ###
|
### Reverse Descriptors Tests ###
|
||||||
|
|
||||||
# Due to complications with adding via an intermediary model,
|
# Due to complications with adding via an intermediary model,
|
||||||
# the add method is not provided.
|
# the add method is not provided.
|
||||||
>>> bob.group_set.add(rock)
|
>>> bob.group_set.add(rock)
|
||||||
Traceback (most recent call last):
|
Traceback (most recent call last):
|
||||||
|
@ -287,7 +287,7 @@ AttributeError: Cannot set values on a ManyToManyField which specifies an interm
|
||||||
|
|
||||||
### QUERY TESTS ###
|
### QUERY TESTS ###
|
||||||
|
|
||||||
# We can query for the related model by using its attribute name (members, in
|
# We can query for the related model by using its attribute name (members, in
|
||||||
# this case).
|
# this case).
|
||||||
>>> Group.objects.filter(members__name='Bob')
|
>>> Group.objects.filter(members__name='Bob')
|
||||||
[<Group: Roll>]
|
[<Group: Roll>]
|
||||||
|
@ -315,19 +315,19 @@ AttributeError: Cannot set values on a ManyToManyField which specifies an interm
|
||||||
>>> Group.objects.filter(membership__date_joined__gt=datetime(2005, 1, 1), membership__person =jane)
|
>>> Group.objects.filter(membership__date_joined__gt=datetime(2005, 1, 1), membership__person =jane)
|
||||||
[<Group: Rock>]
|
[<Group: Rock>]
|
||||||
|
|
||||||
# Queries also work in the reverse direction: Now let's see all of the people
|
# Queries also work in the reverse direction: Now let's see all of the people
|
||||||
# that have joined Rock since 1 Jan 2005:
|
# that have joined Rock since 1 Jan 2005:
|
||||||
>>> Person.objects.filter(membership__date_joined__gt=datetime(2005, 1, 1), membership__group=rock)
|
>>> Person.objects.filter(membership__date_joined__gt=datetime(2005, 1, 1), membership__group=rock)
|
||||||
[<Person: Jane>, <Person: Jim>]
|
[<Person: Jane>, <Person: Jim>]
|
||||||
|
|
||||||
# Conceivably, queries through membership could return correct, but non-unique
|
# Conceivably, queries through membership could return correct, but non-unique
|
||||||
# querysets. To demonstrate this, we query for all people who have joined a
|
# querysets. To demonstrate this, we query for all people who have joined a
|
||||||
# group after 2004:
|
# group after 2004:
|
||||||
>>> Person.objects.filter(membership__date_joined__gt=datetime(2004, 1, 1))
|
>>> Person.objects.filter(membership__date_joined__gt=datetime(2004, 1, 1))
|
||||||
[<Person: Jane>, <Person: Jim>, <Person: Jim>]
|
[<Person: Jane>, <Person: Jim>, <Person: Jim>]
|
||||||
|
|
||||||
# Jim showed up twice, because he joined two groups ('Rock', and 'Roll'):
|
# Jim showed up twice, because he joined two groups ('Rock', and 'Roll'):
|
||||||
>>> [(m.person.name, m.group.name) for m in
|
>>> [(m.person.name, m.group.name) for m in
|
||||||
... Membership.objects.filter(date_joined__gt=datetime(2004, 1, 1))]
|
... Membership.objects.filter(date_joined__gt=datetime(2004, 1, 1))]
|
||||||
[(u'Jane', u'Rock'), (u'Jim', u'Rock'), (u'Jim', u'Roll')]
|
[(u'Jane', u'Rock'), (u'Jim', u'Rock'), (u'Jim', u'Roll')]
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue