def get_context(self): # TODO: here we should use the context to resolve the meta object # instead of hitting the database again # print RequestContext(self.request) if ( isinstance(self.request, str) or not self.request.user.has_perm("seoutils.add_meta") or not self.request.user.has_perm("seoutils.change_meta") or not self.request.user.has_perm("seoutils.delete_meta") ): return "" meta = get_meta_for_request(self.request) try: url_name = resolve(self.request.META["PATH_INFO"]).url_name except Resolver404: return "" if meta: url = reverse("admin:seoutils_meta_change", args=[meta.pk]) else: url = reverse("admin:seoutils_meta_add") + "?inject=id_path_info&value=" + url_name return self.button( id="frontadmin-meta", url=url, classname="frontadmin-change-object", label="Meta", title="Edit Metas for this page", )
def test_named_url(self): mt = Meta.objects.create(**self.mock_meta('test-home')) rs = get_meta_for_request(DummyRequest(path_info='/')) self.failUnless(isinstance(rs, Meta)) self.failUnlessEqual(rs.title, 'Test title') self.failUnlessEqual(rs.desc, 'Test desc') self.failUnlessEqual(rs.keywords, 'Test keywords')
def test_fallbacks_positive(self): m1 = Meta.objects.create(**self.mock_meta('test-home')) m2 = Meta.objects.create(**self.mock_meta('test-contact', title=None, desc=None, keywords=None)) rs = get_meta_for_request(DummyRequest(path_info='/contact/')) self.failUnless(isinstance(rs, Meta)) self.failUnlessEqual(rs.title, 'Test title') self.failUnlessEqual(rs.desc, 'Test desc') self.failUnlessEqual(rs.keywords, 'Test keywords')
def render(self, context): rs = False request = self.request.resolve(context) context[self.context_var] = get_meta_for_request(request) return ''
def test_unconfigured(self): self.failUnlessEqual(None, get_meta_for_request(DummyRequest(path_info='/')))
def meta(request): meta = get_meta_for_request(request) if meta: return { 'meta': meta } else: return {}