def getAuthenticated(self, user, logoutUrl): key = self.request.get('key') model = db.get(key) pageBody = model.customView if self.request.get('printLink'): modelClassName = model.__class__.__name__ parent = self.request.get('parent') pageBody = \ u"""<div class="ManagementTableNav"> <input type="button" value="Print" onclick="printCustomModel('%(modelClassName)s','%(key)s');return false;" > <input type="button" value="Done" onclick="MODEL_TOGGLES['modelToggle%(modelClassName)s%(parent)s'].toggle(0,null,null);" > </div> %(pageBody)s """ % locals() elif self.request.get('print'): # Autoprinting is stupid, and has timing issues with the pagination script. #pageBody = \ #u"""<script>Event.observe( window, 'load', window.print );</script>%(pageBody)s""" % locals() pageBody = self.renderManagementTemplate( locals(), 'Page.html') self.response.out.write(pageBody)
def buildListHTML(self, pageNumber, propertyName, parent): modelClass, modelClassName = self.modelClass, self.modelClassName modelClassDisplayName = modelClass.getPrettyClassName() if propertyName and parent: gql = 'WHERE %s = :1 ORDER BY %s' % (propertyName, modelClass.NAME_PROPERTY) #logging.debug(gql + '(' + parent + ')') models = (propertyName and modelClass.gql( gql, db.get(parent))) or modelClass.get() else: models = modelClass.all() paginator = ObjectPaginator(models, 10, orphans=2) if paginator.pages < pageNumber: pageNumber = paginator.pages pageNumber0 = pageNumber - 1 models = paginator.get_page(pageNumber0) firstOnPage, lastOnPage, numModels = \ paginator.first_on_page(pageNumber0), paginator.last_on_page(pageNumber0), paginator.hits hasPreviousPage, hasNextPage = \ paginator.has_previous_page(pageNumber0), paginator.has_next_page(pageNumber0) previousPage, nextPage = pageNumber - 1, pageNumber + 1 listItems = [] for model in models: modelToListItemHTML = \ lambda model, s=self, p=parent, pn=propertyName: s.modelToListItemHTML(model,p,pn) cacheKey = 'listItemHTML' + parent self.modelClass.setEntityCacheFunctionForKey( modelToListItemHTML, cacheKey) listItems.append(model.getEntityCache(cacheKey)) listItems = '\n'.join(listItems) return self.renderManagementTemplate(locals(), 'List.html')
def getAuthenticated(self, user, logoutUrl): key = self.request.get("key") model = db.get(key) pageBody = model.customView if self.request.get("printLink"): modelClassName = model.__class__.__name__ parent = self.request.get("parent") pageBody = ( u"""<div class="ManagementTableNav"> <input type="button" value="Print" onclick="printCustomModel('%(modelClassName)s','%(key)s');return false;" > <input type="button" value="Done" onclick="MODEL_TOGGLES['modelToggle%(modelClassName)s%(parent)s'].toggle(0,null,null);" > </div> %(pageBody)s """ % locals() ) elif self.request.get("print"): # Autoprinting is stupid, and has timing issues with the pagination script. # pageBody = \ # u"""<script>Event.observe( window, 'load', window.print );</script>%(pageBody)s""" % locals() pageBody = self.renderManagementTemplate(locals(), "Page.html") self.response.out.write(pageBody)
def buildListHTML(self, pageNumber, propertyName, parent): modelClass, modelClassName = self.modelClass, self.modelClassName modelClassDisplayName = modelClass.getPrettyClassName() if propertyName and parent: gql = "WHERE %s = :1 ORDER BY %s" % (propertyName, modelClass.NAME_PROPERTY) # logging.debug(gql + '(' + parent + ')') models = (propertyName and modelClass.gql(gql, db.get(parent))) or modelClass.get() else: models = modelClass.all() paginator = ObjectPaginator(models, 10, orphans=2) if paginator.pages < pageNumber: pageNumber = paginator.pages pageNumber0 = pageNumber - 1 models = paginator.get_page(pageNumber0) firstOnPage, lastOnPage, numModels = ( paginator.first_on_page(pageNumber0), paginator.last_on_page(pageNumber0), paginator.hits, ) hasPreviousPage, hasNextPage = paginator.has_previous_page(pageNumber0), paginator.has_next_page(pageNumber0) previousPage, nextPage = pageNumber - 1, pageNumber + 1 listItems = [] for model in models: modelToListItemHTML = lambda model, s=self, p=parent, pn=propertyName: s.modelToListItemHTML(model, p, pn) cacheKey = "listItemHTML" + parent self.modelClass.setEntityCacheFunctionForKey(modelToListItemHTML, cacheKey) listItems.append(model.getEntityCache(cacheKey)) listItems = "\n".join(listItems) return self.renderManagementTemplate(locals(), "List.html")
def postAuthenticated(self, user, logoutUrl): # Are we editing or creating? key = self.request.get('_key') model = (key and self.MI.modelClass.get(key)) or None # If the data is bad, redisplay the editing form. data = self.MI.formClass(self.request.POST, getattr(self.request, 'FILES', None), instance=model) if not data.is_valid(): form = data logging.debug('invalid data in ' + str(self.request.POST)) return self.show(user, logoutUrl, form=form, model=model, togglePage=((key and 2) or 1), fullPage=0) # Save the object. #logging.info('valid data in '+str(self.request.POST)) newObject = data.save(commit=False) prop, parent = self.request.get('prop'), self.request.get( 'parent') if prop and parent: setattr(newObject, prop, db.get(parent)) if self.request.get('_action') != 'Cancel': newObject.put() if self.request.get('_action') == 'Save and Continue': return self.show(user, logoutUrl, form=data, model=newObject, togglePage=1, fullPage=0, reloadOnCancel=1) if self.request.get('customview'): self.response.out.write(newObject.customView) return modelClassName = newObject.__class__.__name__ pageWithModel = self.MI.getModelPageNumber(newObject) targetUrl = self.redirectToList(pageWithModel, returnUrl=1) retHtml = \ """ <div id="tempRedirector"><img src="/images/DivLoadingSpinner.gif"></div> <script> var targetDiv = $('tempRedirector').parentNode.parentNode.parentNode; getUrlIntoDiv('%(targetUrl)s', targetDiv, [ function() { initModelToggle( '%(modelClassName)s', '%(parent)s', 0 ); } ], {cacheUrl:1,refreshUrl:1} ); </script> """ % locals() self.response.out.write(retHtml)
def postAuthenticated(self, user, logoutUrl): # Are we editing or creating? key = self.request.get("_key") model = (key and self.MI.modelClass.get(key)) or None # If the data is bad, redisplay the editing form. data = self.MI.formClass(self.request.POST, getattr(self.request, "FILES", None), instance=model) if not data.is_valid(): form = data logging.debug("invalid data in " + str(self.request.POST)) return self.show(user, logoutUrl, form=form, model=model, togglePage=((key and 2) or 1), fullPage=0) # Save the object. # logging.info('valid data in '+str(self.request.POST)) newObject = data.save(commit=False) prop, parent = self.request.get("prop"), self.request.get("parent") if prop and parent: setattr(newObject, prop, db.get(parent)) if self.request.get("_action") != "Cancel": newObject.put() if self.request.get("_action") == "Save and Continue": return self.show( user, logoutUrl, form=data, model=newObject, togglePage=1, fullPage=0, reloadOnCancel=1 ) if self.request.get("customview"): self.response.out.write(newObject.customView) return modelClassName = newObject.__class__.__name__ pageWithModel = self.MI.getModelPageNumber(newObject) targetUrl = self.redirectToList(pageWithModel, returnUrl=1) retHtml = ( """ <div id="tempRedirector"><img src="/images/DivLoadingSpinner.gif"></div> <script> var targetDiv = $('tempRedirector').parentNode.parentNode.parentNode; getUrlIntoDiv('%(targetUrl)s', targetDiv, [ function() { initModelToggle( '%(modelClassName)s', '%(parent)s', 0 ); } ], {cacheUrl:1,refreshUrl:1} ); </script> """ % locals() ) self.response.out.write(retHtml)