Mercurial > libervia-web
view libervia/pages/photos/new/page_meta.py @ 1457:792a2e902ee9
server: fix inverse URL redirection for root path + allow multiple inverse redirections:
- inverse redirection is now working for root path
- a list can now be used in `url_redirections_dict`: the first item only will be used for
redirection, but all items will be used for inverse redirection.
e.g.: if in `url_redirections_dict` we have `"/": ["/u/some_user/blog",
"/blog/view/some_user_jid@example.org"]`, root will redirect to "/u/some_user/blog", but
both "/u/some_user/blog" and "/blog/view/some_user_jid@example.org" will have an inverse
redirection to the root path
fix 395
author | Goffi <goffi@goffi.org> |
---|---|
date | Wed, 29 Sep 2021 17:39:06 +0200 |
parents | 39719ff4fcad |
children | 106bae41f5c8 |
line wrap: on
line source
#!/usr/bin/env python3 from libervia.server.constants import Const as C from twisted.internet import defer from sat.core.log import getLogger from sat.core.i18n import D_ from sat.core import exceptions from sat_frontends.bridge.bridge_frontend import BridgeException """creation of new events""" name = "photos_new" access = C.PAGES_ACCESS_PROFILE template = "photo/create.html" log = getLogger(__name__) async def on_data_post(self, request): request_data = self.getRData(request) profile = self.getProfile(request) name = self.getPostedData(request, "name").replace('/', '_') albums_path = "/albums" album_path = f"{albums_path}/{name}" if profile is None: self.pageError(request, C.HTTP_BAD_REQUEST) fis_ns = self.host.ns_map["fis"] http_upload_ns = self.host.ns_map["http_upload"] entities_services, __, __ = await self.host.bridgeCall( "discoFindByFeatures", [fis_ns, http_upload_ns], [], False, True, False, False, False, profile ) try: fis_service = next(iter(entities_services)) except StopIteration: raise exceptions.DataError(D_( "You server has no service to create a photo album, please ask your server " "administrator to add one")) try: await self.host.bridgeCall( "FISCreateDir", fis_service, "", albums_path, {"access_model": "open"}, profile ) except BridgeException as e: if e.condition == 'conflict': pass else: log.error(f"Can't create {albums_path} path: {e}") raise e try: await self.host.bridgeCall( "FISCreateDir", fis_service, "", album_path, {"access_model": "whitelist"}, profile ) except BridgeException as e: if e.condition == 'conflict': pass else: log.error(f"Can't create {album_path} path: {e}") raise e await self.host.bridgeCall( "interestsRegisterFileSharing", fis_service, "photos", "", album_path, name, "", profile ) log.info(f"album {name} created") request_data["post_redirect_page"] = self.getPageByName("photos") defer.returnValue(C.POST_NO_CONFIRM)