Update django-sponsors.
[prawokultury.git] / menu / helpers.py
index 2a5df9d..64df72c 100755 (executable)
@@ -25,17 +25,28 @@ class ObjectMenuItem(MenuItem):
     If no url or title is provided, get_absolute_url and __unicode__ are used.
     You can also provide a reverse lookup dictionary, as in {model: field_name}.
     """
-    def __init__(self, obj, url=None, rev_lookups=None, title=None, html_id=None):
+    def __init__(self, obj_lookup, url=None, rev_lookups=None, title=None, html_id=None):
         super(ObjectMenuItem, self).__init__(url=url, title=title, html_id=html_id)
-        self.obj = obj
+        self.obj_lookup = obj_lookup
         self.rev_lookups = rev_lookups
 
+    @property
+    def obj(self):
+        from migdal.models import Entry
+        try:
+            entry = Entry.objects.get(**self.obj_lookup)
+        except Entry.DoesNotExist:
+            return
+        if not entry.published:
+            return None
+        return entry
+
     def get_title(self):
         return self.title or unicode(self.obj)
 
     @property
     def get_url(self):
-        return self.url or self.get_obj().get_absolute_url()
+        return self.url or self.obj.get_absolute_url()
 
     def is_active(self, request, value):
         if value == self.obj: