def query(self, attribute, **kwargs): if 'filter' in kwargs: attrCompareFilter = ArgsUtils.get('filter', None, kwargs) attrExistsFilter = False else: attrCompareFilter = None attrExistsFilter = ArgsUtils.get('exists', True, kwargs) localOnly = ArgsUtils.get('localOnly', False, kwargs) out = [] #--- FILTER # Filter the pages according to the specified kwargs and the initialization above for page in self._pages: #--- EXISTS FILTER ---# if attrExistsFilter: if page.has(attribute, localOnly=localOnly): out.append(page) continue #--- COMPARE FILTER ---# value = page.get(attribute, defaultValue=ArgsUtils.get('defaultValue', None, kwargs)) if value == attrCompareFilter: out.append(page) #--- SORTING ---# reverseSort = ArgsUtils.get('reverse', False, kwargs) if ArgsUtils.get('dateSort', False, kwargs): return PageProcessUtils.sortPagesByDate(out, reverse=reverseSort)
def getPagesInFolder(self, folder, dateSort =False, reverse =False, limit =0): res = [] folder = folder.replace('\\', '/').strip().strip('/').split('/') path = FileUtils.createPath(self._site.targetWebRootPath, *folder, isDir=True) for page in self._pages: if page.targetPath.startswith(path): res.append(page) if dateSort: res = PageProcessUtils.sortPagesByDate(pages=res, reverse=reverse) if len(res) > limit > 0: res = res[:limit] return res