view libervia/pages/events/new/page_meta.py @ 1245:079e8eb6e327

server (tasks): refactoring: - moved `TasksManager` to `server.tasks.manager` - tasks modules now must have a `Task` class which will be instanciated by TasksManager - `server.tasks.task` has a basis for `Task` class - `Task.prepare` can now be asynchronous - `importlib` is now used to import tasks, instead of exec - tasks are now parsed/run after pages are imported - `server.BackendReady` is now a coroutine - type hinting for Task attributes
author Goffi <goffi@goffi.org>
date Sat, 25 Apr 2020 16:08:55 +0200
parents f511f8fbbf8a
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.tools.common import date_utils

"""creation of new events"""

name = "event_new"
access = C.PAGES_ACCESS_PROFILE
template = "event/create.html"
log = getLogger(__name__)


@defer.inlineCallbacks
def on_data_post(self, request):
    request_data = self.getRData(request)
    profile = self.getProfile(request)
    title, location, body, date, main_img, bg_img = self.getPostedData(
        request, ("name", "location", "body", "date", "main_image", "bg_image")
    )
    timestamp = date_utils.date_parse(date)
    data = {"name": title, "description": body, "location": location}

    for value, var in ((main_img, "image"), (bg_img, "background-image")):
        value = value.strip()
        if not value:
            continue
        if not value.startswith("http"):
            self.pageError(request, C.HTTP_BAD_REQUEST)
        data[var] = value
    data["register"] = C.BOOL_TRUE
    node = yield self.host.bridgeCall("eventCreate", timestamp, data, "", "", "", profile)
    log.info("Event node created at {node}".format(node=node))

    request_data["post_redirect_page"] = (self.getPageByName("event_admin"), "@", node)
    defer.returnValue(C.POST_NO_CONFIRM)