Beispiel #1
0
            def postAuthenticated(self, user, logoutUrl):
                key = self.request.get("_key")
                model = (key and self.MI.modelClass.get(key)) or None
                showProp = self.request.get("showProp", None)
                propNames = self.request.get("prop", None, allow_multiple=True)
                if not (model and showProp and propNames):
                    self.response.out.write("ERROR! model or property missing")
                    return

                for blobName in ("imageData", "dnd4eData"):
                    if blobName in propNames:
                        propNames.remove(blobName)
                        imageData = self.request.get(blobName)
                        try:
                            theImage = images.Image(imageData)
                            theImage.resize(width=323)
                            imageData = theImage.execute_transforms()
                        except images.Error:
                            imageData = None

                        if imageData:
                            model.imageData = db.Blob(imageData)
                            model.put()

                        # If that was the only property, we're done.
                        if not propNames:
                            if imageData:
                                self.response.out.write('<div class="Response" style="display:none;">')
                                super(SavePropHandler, self).postAuthenticated(user, logoutUrl)
                                self.response.out.write("</div>")
                            else:
                                logging.debug("invalid imageData for SaveProp in " + str(self.request.POST))
                                data = djangoforms.autoFormForProperties(self.MI.modelClass, [blobName])(instance=model)
                                self.response.out.write('<font color="red">Invalid image file</font>')
                                self.response.out.write(self.getEditPropForm(data, model, showProp, [blobName]))
                                return

                # If the user input was bad, redisplay the edit form.
                data = djangoforms.autoFormForProperties(self.MI.modelClass, propNames)(
                    self.request.POST, instance=model
                )
                if not data.is_valid():
                    logging.debug("invalid data for SaveProp in " + str(self.request.POST))
                    self.response.out.write(self.getEditPropForm(data, model, showProp, propNames))
                    return
                # else:
                # logging.debug('valid data for SaveProp in ' + str(self.request.POST))

                # Otherwise, save and display the new property value in a div that js will
                # pluck from.  We do it this way so the content is invisible instead of flashing
                # in the modalbox briefly.
                if self.request.get("_action") != "Cancel":
                    model = data.save()
                self.response.out.write('<div class="Response" style="display:none;">')
                super(SavePropHandler, self).postAuthenticated(user, logoutUrl)
                self.response.out.write("</div>")
Beispiel #2
0
            def getAuthenticated(self, user, logoutUrl):
                key = self.request.get("_key")
                if key == "NEW":
                    defaultDict = self.MI.modelClass.defaultDict(toJavascript=0)
                    model = self.MI.modelClass(**defaultDict)
                    model.put()
                else:
                    model = (key and self.MI.modelClass.get(key)) or None
                showProp = self.request.get("showProp", None)
                propNames = self.request.get("prop", None, allow_multiple=True)
                if not (model and showProp and propNames):
                    self.response.out.write("ERROR! model or property missing")
                    return

                form = djangoforms.autoFormForProperties(self.MI.modelClass, propNames)(instance=model)
                self.response.out.write(self.getEditPropForm(form, model, showProp, propNames))
Beispiel #3
0
            def getAuthenticated(self, user, logoutUrl):
                key = self.request.get('_key')
                if key == 'NEW':
                    defaultDict = self.MI.modelClass.defaultDict(
                        toJavascript=0)
                    model = self.MI.modelClass(**defaultDict)
                    model.put()
                else:
                    model = (key and self.MI.modelClass.get(key)) or None
                showProp = self.request.get('showProp', None)
                propNames = self.request.get('prop', None, allow_multiple=True)
                if not (model and showProp and propNames):
                    self.response.out.write('ERROR! model or property missing')
                    return

                form = djangoforms.autoFormForProperties(
                    self.MI.modelClass, propNames)(instance=model)
                self.response.out.write(
                    self.getEditPropForm(form, model, showProp, propNames))
Beispiel #4
0
            def postAuthenticated(self, user, logoutUrl):
                key = self.request.get('_key')
                model = (key and self.MI.modelClass.get(key)) or None
                showProp = self.request.get('showProp', None)
                propNames = self.request.get('prop', None, allow_multiple=True)
                if not (model and showProp and propNames):
                    self.response.out.write('ERROR! model or property missing')
                    return

                for blobName in ('imageData', 'dnd4eData'):
                    if blobName in propNames:
                        propNames.remove(blobName)
                        imageData = self.request.get(blobName)
                        try:
                            theImage = images.Image(imageData)
                            theImage.resize(width=323)
                            imageData = theImage.execute_transforms()
                        except images.Error:
                            imageData = None

                        if imageData:
                            model.imageData = db.Blob(imageData)
                            model.put()

                        # If that was the only property, we're done.
                        if not propNames:
                            if imageData:
                                self.response.out.write(
                                    '<div class="Response" style="display:none;">'
                                )
                                super(SavePropHandler,
                                      self).postAuthenticated(user, logoutUrl)
                                self.response.out.write('</div>')
                            else:
                                logging.debug(
                                    'invalid imageData for SaveProp in ' +
                                    str(self.request.POST))
                                data = djangoforms.autoFormForProperties(
                                    self.MI.modelClass,
                                    [blobName])(instance=model)
                                self.response.out.write(
                                    '<font color="red">Invalid image file</font>'
                                )
                                self.response.out.write(
                                    self.getEditPropForm(
                                        data, model, showProp, [blobName]))
                                return

                # If the user input was bad, redisplay the edit form.
                data = djangoforms.autoFormForProperties(
                    self.MI.modelClass, propNames)(self.request.POST,
                                                   instance=model)
                if not data.is_valid():
                    logging.debug('invalid data for SaveProp in ' +
                                  str(self.request.POST))
                    self.response.out.write(
                        self.getEditPropForm(data, model, showProp, propNames))
                    return
                #else:
                #logging.debug('valid data for SaveProp in ' + str(self.request.POST))

                # Otherwise, save and display the new property value in a div that js will
                # pluck from.  We do it this way so the content is invisible instead of flashing
                # in the modalbox briefly.
                if self.request.get('_action') != 'Cancel':
                    model = data.save()
                self.response.out.write(
                    '<div class="Response" style="display:none;">')
                super(SavePropHandler, self).postAuthenticated(user, logoutUrl)
                self.response.out.write('</div>')