Example #1
0
 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)
Example #2
0
    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')
Example #3
0
 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)
Example #4
0
    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")
Example #5
0
            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)
Example #6
0
            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)