Hi Steve,

Certainly sounds like the processor isn't being run. Have you confirmed
that e.g. by inserting some print statements or using a debugger?

Is the app your processor is defined in definitely in INSTALLED_APPS?
page_processors.autodiscover won't work otherwise.

BTW if you don't use a debugger, I'd recommend it. I use PyCharm which
makes it really easy to insert a breakpoint and follow the code as it
executes, but you can also use pdb to do it more manually. You could try
putting a breakpoint at your @processor_for(GeolSitesList) line to see if
it's being executed and when, and one in PageMiddleware.process_view() to
see which processors are registered and being executed.

Cheers,
Alex

On Wed, Feb 3, 2016 at 6:44 AM, Steve Harwin <[email protected]>
wrote:

> Thanks Chris,
>
> The empty string results from the page processor not being called as far
> as I can tell. I have a view that is basically the same as this page
> processor and it works.
>
> Cheers,
> Steve
>
>
> On Wednesday, January 27, 2016 at 6:42:06 AM UTC+11,
> [email protected] wrote:
>>
>> Hi Steve,
>>
>> I haven't looked into your problem to deeply and am far from an expert.
>> But: Are you sure the pageprocessor is not being called or is the
>> pageprocessor not returning the correct result? The error code you posted
>> says "Expected table or queryset, not 'str'.". Couldn't it be the
>> pageprocessor is return an empty string?
>>
>> Chris
>>
>> Am Freitag, 22. Januar 2016 05:27:15 UTC+1 schrieb Steve Harwin:
>>>
>>> Hi,
>>>
>>> I am not sure if my method for displaying a table of model data isthe
>>> best way to do it, but i essentially followed the examples in the docs and
>>> on this forum... unfortunately my page processor does not seem to be
>>> working. Here is the code:
>>> In models.py:
>>> class GeolSitesList(Page):
>>>     '''
>>>     A page to list GeolSites
>>>     '''
>>>
>>>     class Meta:
>>>         verbose_name = _("Sites List")
>>>         verbose_name_plural = _("Sites Lists")
>>> In tables.py:
>>> from ausgeolapp.models import *
>>> import django_tables2 as tables
>>> from django.utils.safestring import mark_safe
>>> from django.utils.html import escape
>>>
>>>
>>> class geolSitesTable(tables.Table):
>>>     class Meta:
>>>         model = geolsites
>>>         exclude = ("geom", )
>>>         attrs = {'class': 'SitesTable'}
>>>     def render_site(self, value):
>>>         return mark_safe(escape(value)+'<br><img id="sitethumb"
>>> width="300" src="http://ausgeol.utas.edu.au/data/public/AusGeolSites/'+
>>> escape(value)+'/'+escape(value)+'_thumb.jpg">')
>>> In page_processors.py:
>>> from mezzanine.pages.page_processors import processor_for
>>>
>>>
>>> from django.db import models
>>> from models import GeolSitesList
>>> from django.http import HttpResponse
>>> from django.template import loader
>>> from ausgeolapp.models import *
>>> from ausgeolapp.tables import geolSitesTable
>>> import django_tables2 as tables
>>>
>>>
>>> @processor_for(GeolSitesList)
>>> def geolSites_List(request, page):
>>>     sitelist = geolsites.objects.all()
>>>     sitelisttable = geolSitesTable(sitelist)
>>>     sitelisttable.paginate(page=request.GET.get('page', 1), per_page=25)
>>>     return {"sitelisttable": sitelisttable}
>>> I also tried: @processor_for("sites")
>>> In geolsiteslist.html
>>> {% extends "pages/page.html" %}
>>>
>>>
>>> {% load mezzanine_tags staticfiles %}
>>> {% block extra_assets %}
>>>  <link rel="stylesheet" href="{%  static 'css\ausgeol-tables.css' %}"
>>> type="text/css" />
>>> {% endblock %}
>>> {% load django_tables2 %}
>>> {% block main %}
>>>
>>>
>>> {% render_table sitelisttable %}
>>> {% endblock %}
>>> I get the "Expected table or queryset, not 'str'." error because the 
>>> sitelisttable
>>> is empty... the context is not being added because the page processor is
>>> not being called. After hunting for suggestions I added the following to
>>> urls.py:
>>> from mezzanine.pages import page_processors
>>>
>>>
>>> page_processors.autodiscover()
>>> and also tried adding this to my url patterns but it made no difference
>>> and I would have thought it was not needed since I am adding a
>>> GeolSitesList page via mezzanine admin (the page is called 'sites'):
>>> url("^sites/$", "mezzanine.pages.views.page", {"slug": "sites"},  name=
>>> "GeolSitesList"),
>>>
>>> and I tried this as well
>>> url("^sites/$", "mezzanine.pages.views.page", {"slug": "sites"},  name=
>>> "sites"),
>>>
>>> I am not sure what else to try... please can someone point me to my
>>> mistake. I am using Python 3.3, Postgresql 9.4 (PostGIS 2), Django 1.8.6,
>>> Mezzanine 4.0.1, and the latest django-tables2.
>>> Thanks,
>>> Steve
>>>
>>>
>>> --
> You received this message because you are subscribed to the Google Groups
> "Mezzanine Users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Mezzanine Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to