summarylogtreecommitdiffstats
path: root/fiximport-model_tools.patch
blob: ad6c11351672979c213675893932fc4ef82f5f6e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
diff -aur SwampDragon-0.4.2.2.o/swampdragon/serializers/serializer_tools.py SwampDragon-0.4.2.2/swampdragon/serializers/serializer_tools.py
--- SwampDragon-0.4.2.2.o/swampdragon/serializers/serializer_tools.py	2015-05-05 14:22:16.000000000 -0700
+++ SwampDragon-0.4.2.2/swampdragon/serializers/serializer_tools.py	2016-03-09 17:55:20.098130877 -0800
@@ -1,7 +1,21 @@
 from collections import namedtuple
-from django.db.models.fields.related import ForeignKey, ReverseSingleRelatedObjectDescriptor, \
-    ManyRelatedObjectsDescriptor, ReverseManyRelatedObjectsDescriptor, ForeignRelatedObjectsDescriptor, \
-    SingleRelatedObjectDescriptor
+from django.db.models.fields.related import ForeignKey
+try:
+    # bis 1.8.x
+    from django.db.models.fields.related import ReverseSingleRelatedObjectDescriptor
+    from django.db.models.fields.related import ManyRelatedObjectsDescriptor
+    from django.db.models.fields.related import ReverseManyRelatedObjectsDescriptor
+    from django.db.models.fields.related import ForeignRelatedObjectsDescriptor
+    from django.db.models.fields.related import SingleRelatedObjectDescriptor
+    pre19syntax = True
+except:
+    # ab 1.9.0
+    from django.db.models.fields.related import ForwardManyToOneDescriptor
+    from django.db.models.fields.related import ManyToManyDescriptor
+    from django.db.models.fields.related import ReverseManyToOneDescriptor
+    from django.db.models.fields.related import ReverseOneToOneDescriptor
+    pre19syntax = False
+    
 # from django.db.models.related import RelatedObject
 from django.db.models.fields.related import ForeignObjectRel
 from django.db.models.fields.related import ManyToManyField
@@ -73,11 +87,18 @@
             continue
 
         field_type = getattr(serializer.opts.model, field_name)
-        is_fk = isinstance(field_type, ReverseSingleRelatedObjectDescriptor)
-        is_o2o = isinstance(field_type, SingleRelatedObjectDescriptor)
-        is_reverse_fk = isinstance(field_type, ForeignRelatedObjectsDescriptor)
-        is_m2m = isinstance(field_type, ManyRelatedObjectsDescriptor)
-        is_reverse_m2m = isinstance(field_type, ReverseManyRelatedObjectsDescriptor)
+        if pre19syntax:
+            is_fk = isinstance(field_type, ReverseSingleRelatedObjectDescriptor)
+            is_o2o = isinstance(field_type, SingleRelatedObjectDescriptor)
+            is_reverse_fk = isinstance(field_type, ForeignRelatedObjectsDescriptor)
+            is_m2m = isinstance(field_type, ManyRelatedObjectsDescriptor)
+            is_reverse_m2m = isinstance(field_type, ReverseManyRelatedObjectsDescriptor)
+        else:
+            is_fk = isinstance(field_type, ForwardManyToOneDescriptor)
+            is_o2o = isinstance(field_type, ReverseOneToOneDescriptor)
+            is_reverse_fk = isinstance(field_type, ReverseManyToOneDescriptor)
+            is_m2m = isinstance(field_type, ManyToManyDescriptor) and not field_type.reverse
+            is_reverse_m2m = isinstance(field_type, ManyToManyDescriptor) and field_type.reverse
 
         try:
             val = getattr(serializer.instance, field_name)