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.

Reply via email to