Esempio n. 1
0
 def update_associations(self):
     """ Parse content and fill relationships: files, images, links.
     """
     soup = self.soup
     soup = associate_images(soup, self)
     soup = associate_files(soup, self)
     soup = associate_pages(soup, self)
     soup = remove_target_attributes(soup)
     self.content = unicode(soup)
Esempio n. 2
0
    def update(self):

        response = copy.deepcopy(self._response)
        response.pop('dataset')
        response.pop('dataset_len')
        response.pop('metaData')
        response.pop('message')
        response['errors'] = {}

        try:
            setting = json.loads(self.request.params['dataset'])

        except KeyError as e:
            log.exception('Unable to load JSON request.')
            setting = dict(name=self.request.params.get('name'),
                           value=self.request.params.get('value'))

        except (TypeError, ValueError) as e:
            self.session.rollback()
            log.exception('Bad request.')
            response['success'] = False
            response['errors']['exception'] = e
            self.request.response.status = 400

        try:
            value = setting['value']
            setting = Setting.get(self.session, setting['name'])

            if setting.type.raw_type == 'bool' and value == 'on':
                value = 'True'

            elif setting.type.raw_type == 'bool':
                value = 'False'

            elif setting.type.raw_type == 'html':
                # add smartquotes to prevent bsoup from translating smart-quotes
                # and other windows-specific characters
                soup = BeautifulSoup(value, smartQuotesTo=None)
                soup = remove_target_attributes(soup)
                value = unicode(soup)

            setting.value = value
            self.session.flush()
            self.proxy.invalidate(pages=True)

        except (NoResultFound, TypeError) as e:
            log.exception('No setting found.')
            self.session.rollback()
            response['success'] = False
            response['errors']['exception'] = str(e)
            self.request.response.status = 400

        except Exception as e:
            log.exception('Cannot update the setting')
            self.session.rollback()
            response['success'] = False
            response['errors']['exception'] = str(e)
            self.request.response.status = 500

        else:
            response['success'] = True
            self.request.response.status = 200
            self.session.commit()

        return response