Ticket #1548: patch.txt

File patch.txt, 1.4 KB (added by ned@…, 18 years ago)

The patch!

Line 
1--- __init__.py (revision 3393)
2+++ __init__.py (revision 3414)
3@@ -1174,14 +1174,24 @@
4 def method_get_related(method_name, rel_mod, rel_field, self, **kwargs):
5 if self._meta.has_related_links and rel_mod.Klass._meta.module_name == 'relatedlinks':
6 kwargs['object_id__exact'] = getattr(self, rel_field.rel.field_name)
7 else:
8 kwargs['%s__%s__exact' % (rel_field.name, rel_field.rel.to.pk.name)] = getattr(self, rel_field.rel.get_related_field().attname)
9 kwargs.update(rel_field.rel.lookup_overrides)
10- return getattr(rel_mod, method_name)(**kwargs)
11-
12+ ### Tabblo change
13+ related = getattr(rel_mod, method_name)(**kwargs)
14+ # Pre-cache the self object, for following links back.
15+ if isinstance(related, list):
16+ cache_name = rel_field.get_cache_name()
17+ for obj in related:
18+ setattr(obj, cache_name, self)
19+ elif hasattr(related, 'get_%s' % rel_field.name):
20+ setattr(related, rel_field.get_cache_name(), self)
21+ return related
22+ ### End Tabblo change
23+
24 # Handles adding related objects.
25 # Example: Poll.add_choice()
26 def method_add_related(rel_obj, rel_mod, rel_field, self, *args, **kwargs):
27 init_kwargs = dict(zip([f.attname for f in rel_obj.fields if f != rel_field and not isinstance(f, AutoField)], args))
28 init_kwargs.update(kwargs)
29 for f in rel_obj.fields:
Back to Top