def edit(self): try: message = "UNDEFINED" pageinfo = PageInfo.get(self.session, self.request.params['translation_id']) html = self.request.params['translation_html'] pageinfo.content = html self.session.flush() except ValueError: message = self.prepare_response(status=400, message=u'Contenuto non valido') except KeyError: message = self.prepare_response(status=400, message=u'Parametri mancanti') except NoResultFound: message = self.prepare_response(status=404, message=u'Nessuna risorsa trovata') except Exception: self.log.exception('Unexpected error during content update') message = self.prepare_response(status=500, message=u"Errore nell'aggiornamento") else: message = self.prepare_response( status=200, message=u'Contenuto aggiornato correttamente', page=pageinfo) finally: return dict(msg=message)
def page_banners(self): res = dict(success=False) try: name = self.request.params['name'] id_ = self.request.params['nodeinfo_id'] source = self.request.params['file'] page = PageInfo.get(self.session, id_) self.log.debug("Updating banner for page '{}'".format(page.label)) for banner in page.node.banners: banner.delete() page.node.banners = [] page.node.banners.append( Banner(source=source.file, name=name, session=self.session) ) self.session.flush() except Exception: self.session.rollback() message = u"Errore nella rimozione del banner" res['success'] = False res['error'] = self.request.translate(message) self.log.exception("Error removing banner") else: res['success'] = True self.session.commit() self.proxy.invalidate(url=page.url) finally: return res
def test_show_page(self): from aybu.website.views import show_page self.add_test_data_to_db() self.ctx = PageInfo.get(self.session, 3) dummy_rendererer = self.configurator.testing_add_renderer( self.ctx.node.view.fs_view_path) show_page(self.ctx, self.req) dummy_rendererer.assert_(page=self.ctx, request=self.req)
def test_redirect_to_homepage(self): from aybu.website.views import redirect_to_homepage self.add_test_data_to_db() hpage_it = PageInfo.get(self.session, 3) hpage_en = PageInfo.get(self.session, 4) with self.assertRaises(HTTPMovedPermanently) as cm: redirect_to_homepage(self.ctx, self.req) self.assertEqual(cm.exception.location, hpage_en.url) self.req.accept_language = "en-US,en" with self.assertRaises(HTTPMovedPermanently) as cm: redirect_to_homepage(self.ctx, self.req) self.assertEqual(cm.exception.location, hpage_en.url) self.req.accept_language = "it-IT,it" with self.assertRaises(HTTPMovedPermanently) as cm: redirect_to_homepage(self.ctx, self.req) self.assertEqual(cm.exception.location, hpage_it.url) self.session.commit()
def remove_page_banners(self): res = dict(success=False) try: page = PageInfo.get(self.session, self.request.params['nodeinfo_id']) for banner in page.node.banners: banner.delete() self.session.flush() except Exception: self.session.rollback() message = u"Errore nella rimozione del banner" res['success'] = False res['error'] = self.request.translate(message) self.log.exception("Error removing banner") else: res['success'] = True self.session.commit() self.proxy.invalidate(url=page.url) finally: return res