|
21 | 21 | import re
|
22 | 22 |
|
23 | 23 | from django.contrib.gis.db import models
|
24 |
| -from django.contrib.gis.db.models.query import GeoQuerySet |
25 | 24 | from django.db.models.fields.related import ManyToManyField
|
26 | 25 | from django.utils.six import StringIO, text_type, PY3
|
27 | 26 |
|
28 |
| -from multigtfs.compat import get_blank_value, write_text_rows |
| 27 | +from multigtfs.compat import ( |
| 28 | + get_blank_value, write_text_rows, Manager, QuerySet) |
29 | 29 |
|
30 | 30 | logger = getLogger(__name__)
|
31 | 31 | re_point = re.compile(r'(?P<name>point)\[(?P<index>\d)\]')
|
|
34 | 34 | CSV_BOM = BOM_UTF8.decode('utf-8') if PY3 else BOM_UTF8
|
35 | 35 |
|
36 | 36 |
|
37 |
| -class BaseQuerySet(GeoQuerySet): |
| 37 | +class BaseQuerySet(QuerySet): |
38 | 38 | def populated_column_map(self):
|
39 | 39 | '''Return the _column_map without unused optional fields'''
|
40 | 40 | column_map = []
|
@@ -63,7 +63,7 @@ def populated_column_map(self):
|
63 | 63 | return column_map
|
64 | 64 |
|
65 | 65 |
|
66 |
| -class BaseManager(models.GeoManager): |
| 66 | +class BaseManager(Manager): |
67 | 67 | def get_queryset(self):
|
68 | 68 | '''Return the custom queryset.'''
|
69 | 69 | return BaseQuerySet(self.model)
|
@@ -141,22 +141,23 @@ def get_value_or_default(value):
|
141 | 141 | def instance_convert(field, feed, rel_name):
|
142 | 142 | def get_instance(value):
|
143 | 143 | if value.strip():
|
144 |
| - key1 = "{}:{}".format(field.rel.to.__name__, rel_name) |
| 144 | + related = field.related_model |
| 145 | + key1 = "{}:{}".format(related.__name__, rel_name) |
145 | 146 | key2 = text_type(value)
|
146 | 147 |
|
147 | 148 | # Load existing objects
|
148 | 149 | if key1 not in cache:
|
149 |
| - pairs = field.rel.to.objects.filter( |
150 |
| - **{field.rel.to._rel_to_feed: feed}).values_list( |
| 150 | + pairs = related.objects.filter( |
| 151 | + **{related._rel_to_feed: feed}).values_list( |
151 | 152 | rel_name, 'id')
|
152 | 153 | cache[key1] = dict((text_type(x), i) for x, i in pairs)
|
153 | 154 |
|
154 | 155 | # Create new?
|
155 | 156 | if key2 not in cache[key1]:
|
156 | 157 | kwargs = {
|
157 |
| - field.rel.to._rel_to_feed: feed, |
| 158 | + related._rel_to_feed: feed, |
158 | 159 | rel_name: value}
|
159 |
| - cache[key1][key2] = field.rel.to.objects.create( |
| 160 | + cache[key1][key2] = related.objects.create( |
160 | 161 | **kwargs).id
|
161 | 162 | return cache[key1][key2]
|
162 | 163 | else:
|
@@ -199,7 +200,7 @@ def get_instance(value):
|
199 | 200 | converter = bool_convert
|
200 | 201 | elif isinstance(field, models.CharField):
|
201 | 202 | converter = char_convert
|
202 |
| - elif field.rel: |
| 203 | + elif field.is_relation: |
203 | 204 | converter = instance_convert(field, feed, rel_name)
|
204 | 205 | assert not isinstance(field, models.ManyToManyField)
|
205 | 206 | elif field.null:
|
@@ -350,7 +351,7 @@ def export_txt(cls, feed):
|
350 | 351 | if '__' in field_name:
|
351 | 352 | local_field_name, subfield_name = field_name.split('__', 1)
|
352 | 353 | field = cls._meta.get_field(local_field_name)
|
353 |
| - field_type = field.rel.to |
| 354 | + field_type = field.related_model |
354 | 355 | model_name = field_type.__name__
|
355 | 356 | if model_name in model_to_field_name:
|
356 | 357 | # Already loaded this model under a different field name
|
|
0 commit comments