Mercurial > libervia-web
diff libervia/web/pages/photos/new/page_meta.py @ 1518:eb00d593801d
refactoring: rename `libervia` to `libervia.web` + update imports following backend changes
author | Goffi <goffi@goffi.org> |
---|---|
date | Fri, 02 Jun 2023 16:49:28 +0200 |
parents | libervia/pages/photos/new/page_meta.py@106bae41f5c8 |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libervia/web/pages/photos/new/page_meta.py Fri Jun 02 16:49:28 2023 +0200 @@ -0,0 +1,90 @@ +#!/usr/bin/env python3 + +from libervia.web.server.constants import Const as C +from twisted.internet import defer +from libervia.backend.core.log import getLogger +from libervia.backend.core.i18n import D_ +from libervia.backend.core import exceptions +from libervia.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.get_r_data(request) + profile = self.get_profile(request) + name = self.get_posted_data(request, "name").replace('/', '_') + albums_path = "/albums" + album_path = f"{albums_path}/{name}" + if profile is None: + self.page_error(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.bridge_call( + "disco_find_by_features", + [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.bridge_call( + "fis_create_dir", + 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.bridge_call( + "fis_create_dir", + 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.bridge_call( + "interests_file_sharing_register", + fis_service, + "photos", + "", + album_path, + name, + "", + profile + ) + log.info(f"album {name} created") + request_data["post_redirect_page"] = self.get_page_by_name("photos") + defer.returnValue(C.POST_NO_CONFIRM)