--- /dev/null
+##parameters=b_start=0, key='created', reverse=False
+from Products.CMFCore.utils import getToolByName
+from Products.Plinn.PloneMisc import Batch
+from Products.photoprint.utils import Message as _
+from ZTUtils import make_query
+
+wtool = getToolByName(context, 'portal_workflow')
+mtool = getToolByName(context, 'portal_membership')
+options = {}
+folders = context.contentValues({'portal_type':'Order Folder'})
+options['folders'] = folders
+
+columns = ( {'key': 'created',
+ 'title': _('Date'),
+ 'width': None,
+ 'colspan': None}
+ , {'key': 'customer',
+ 'title': _('Customer'),
+ 'width': None,
+ 'colspan': None}
+ , {'key': 'id',
+ 'title': _('Reference'),
+ 'width': None,
+ 'colspan': None}
+ , {'key': 'quantity',
+ 'title': _('Prints'),
+ 'width': None,
+ 'colspan': None}
+ , {'key': 'amount',
+ 'title': _('Amount'),
+ 'width': None,
+ 'colspan': None }
+ , {'key': 'state',
+ 'title': _('State'),
+ 'width': None,
+ 'colspan': None }
+ )
+
+target = context.absolute_url()
+
+for column in columns :
+ images = []
+ if key == column['key']:
+ if reverse :
+ toggleImg = getattr(context, 'arrowDown.gif')
+ alt = _('descending sort')
+ else :
+ toggleImg = getattr(context, 'arrowUp.gif')
+ alt = _('ascending sort')
+ query = make_query(key=column['key'], reverse = not reverse)
+ images.append( {'src' : toggleImg.absolute_url(), 'alt' : alt} )
+ else :
+ query = make_query(key=column['key'], reverse = reverse)
+
+ column['url'] = '%s?%s' % (target, query)
+ column['images'] = images
+
+options['columns'] = columns
+
+def getReviewState(item) :
+ return wtool.getInfoFor(item, 'review_state', wf_id='order_workflow')
+
+sortFuncs = {'created' : lambda a, b : cmp(a.created(), b.created())
+ ,'customer' : lambda a, b : cmp(a.Creator(), b.Creator())
+ ,'id' : lambda a, b : cmp(a.getId(), b.getId())
+ ,'quantity' : lambda a, b : cmp(a.quantity, b.quantity)
+ ,'amount' : lambda a, b : cmp(a.amountWithFees.getValues()['taxed'], b.amountWithFees.getValues()['taxed'])
+ ,'state' : lambda a, b : cmp(getReviewState(a), getReviewState(b))}
+
+orders = context.contentValues({'portal_type':'Order'})
+step = reverse and -1 or 1
+orders.sort(sortFuncs[key])
+orders = orders[::step]
+options['key'] = key
+options['reverse'] = reverse
+
+def beforeGetItem(item) :
+ info = {}
+ info['url'] = item.absolute_url()
+ info['created'] = item.created()
+ info['reference'] = item.getId()
+ info['quantity'] = item.quantity
+ info['price'] = item.amountWithFees
+ info['state'] = wtool.getInfoFor(item, 'review_state', wf_id='order_workflow')
+ customer = mtool.getMemberById(item.Creator())
+ if customer :
+ info['customer'] = customer.getMemberFullName()
+ else :
+ info['customer'] = item.Creator()
+ return info
+
+orders = Batch(orders, context.default_batch_size, b_start, orphan=0, quantumleap=1, before_getitem=beforeGetItem)
+options['orders'] = orders
+
+return context.order_list_template(**options)