Exemplo n.º 1
0
def q_insert_block(
    block_id,
    size,
    created_on,
    organization=None,
    organization_id=None,
    realm=None,
    realm_id=None,
    author=None,
    author_id=None,
):
    assert organization is not None or organization_id is not None
    assert realm is not None or realm_id is not None
    assert author is not None or author_id is not None

    _q_organization = (
        organization if organization is not None else q_organization_internal_id(organization_id)
    )
    _q_realm = (
        realm
        if realm is not None
        else q_realm_internal_id(organization=_q_organization, realm_id=realm_id)
    )
    _q_author = (
        author
        if author is not None
        else q_device_internal_id(organization=_q_organization, device_id=author_id)
    )

    return (
        Query.into(t_block)
        .columns("organization", "block_id", "realm", "author", "size", "created_on")
        .insert(_q_organization, block_id, _q_realm, _q_author, size, created_on)
    )
Exemplo n.º 2
0
def q_insert_user_invitation(
    user_id, created_on, organization=None, organization_id=None, creator=None, creator_id=None
):
    assert organization is not None or organization_id is not None
    assert creator is not None or creator_id is not None

    _q_organization = (
        organization if organization is not None else q_organization_internal_id(organization_id)
    )
    _q_creator = (
        creator
        if creator is not None
        else q_device_internal_id(organization=_q_organization, device_id=creator_id)
    )

    return (
        Query.into(t_user_invitation)
        .columns("organization", "creator", "user_id", "created_on")
        .insert(_q_organization, _q_creator, user_id, created_on)
        # .on_conflict(Raw("organization, user_id"))
        .on_conflict(t_user_invitation.organization)
        .do_update("organization", "excluded.organization")
        # .do_update("creator", "excluded.creator")
        # .do_update("created_on", "excluded.created_on")
    )
Exemplo n.º 3
0
    t_user,
    q_organization_internal_id,
    q_user_internal_id,
    q_device_internal_id,
)

_q_get_user_devices = (Query.from_(t_device).select(
    t_device.device_id).where(t_device.user_ == q_user_internal_id(
        organization_id=Parameter("$1"), user_id=Parameter("$2"))).get_sql())

_q_insert_user = (Query.into(t_user).columns(
    "organization", "user_id", "is_admin", "user_certificate",
    "user_certifier", "created_on").insert(
        q_organization_internal_id(Parameter("$1")),
        Parameter("$2"),
        Parameter("$3"),
        Parameter("$4"),
        q_device_internal_id(organization_id=Parameter("$1"),
                             device_id=Parameter("$5")),
        Parameter("$6"),
    ).get_sql())

_q_insert_device = (Query.into(t_device).columns(
    "organization", "user_", "device_id", "device_certificate",
    "device_certifier", "created_on").insert(
        q_organization_internal_id(Parameter("$1")),
        q_user_internal_id(organization_id=Parameter("$1"),
                           user_id=Parameter("$2")),
        Parameter("$3"),
        Parameter("$4"),
        q_device_internal_id(organization_id=Parameter("$1"),
Exemplo n.º 4
0
from parsec.backend.postgresql.utils import Query
from parsec.backend.postgresql.tables import (
    t_message,
    q_user_internal_id,
    q_device_internal_id,
    q_device,
    q_organization_internal_id,
)

_q_insert_message = (Query.into(t_message).columns(
    "organization", "recipient", "timestamp", "index", "sender",
    "body").insert(
        q_organization_internal_id(Parameter("$1")),
        q_user_internal_id(organization_id=Parameter("$1"),
                           user_id=Parameter("$2")),
        Parameter("$3"),
        Query.from_(t_message).select(fn.Count("*") + 1).where(
            t_message.recipient == q_user_internal_id(
                organization_id=Parameter("$1"), user_id=Parameter("$2"))),
        q_device_internal_id(organization_id=Parameter("$1"),
                             device_id=Parameter("$4")),
        Parameter("$5"),
    ).returning("index").get_sql())

_q_get_messages = (Query.from_(t_message).select(
    q_device(_id=t_message.sender).select("device_id"), t_message.timestamp,
    t_message.body).where(t_message.recipient == q_user_internal_id(
        organization_id=Parameter("$1"), user_id=Parameter("$2"))).orderby(
            "_id", order=Order.asc).offset(Parameter("$3")).get_sql())


async def send_message(conn, organization_id, sender, recipient, timestamp,
Exemplo n.º 5
0
_q_get_block_write_right_and_unicity = Query.select(
    q_user_can_write_vlob(
        user=q_user_internal_id(organization_id=Parameter("$1"), user_id=Parameter("$2")),
        realm=q_realm_internal_id(organization_id=Parameter("$1"), realm_id=Parameter("$3")),
    ),
    fn_exists(q_block(organization_id=Parameter("$1"), block_id=Parameter("$4"))),
).get_sql()


_q_insert_block = (
    Query.into(t_block)
    .columns("organization", "block_id", "realm", "author", "size", "created_on")
    .insert(
        q_organization_internal_id(Parameter("$1")),
        Parameter("$2"),
        q_realm_internal_id(organization_id=Parameter("$1"), realm_id=Parameter("$3")),
        q_device_internal_id(organization_id=Parameter("$1"), device_id=Parameter("$4")),
        Parameter("$5"),
        Parameter("$6"),
    )
    .get_sql()
)


async def _check_realm(conn, organization_id, realm_id):
    try:
        rep = await get_realm_status(conn, organization_id, realm_id)

    except RealmNotFoundError as exc:
        raise BlockNotFoundError(*exc.args) from exc
Exemplo n.º 6
0
    q_device_internal_id,
)

_q_get_user_devices = (Query.from_(t_device).select(
    t_device.device_id).where(t_device.user_ == q_user_internal_id(
        organization_id=Parameter("$1"), user_id=Parameter("$2"))).get_sql())

_q_get_not_revoked_users_for_human = (Query.from_(t_user).select(
    t_user.user_id).where((t_user.human == q_human_internal_id(
        organization_id=Parameter("$1"), email=Parameter("$2")))
                          & (t_user.revoked_on.isnull()
                             | t_user.revoked_on > Parameter("$3"))).get_sql())

_q_insert_human_if_not_exists = (Query.into(t_human).columns(
    "organization", "email",
    "label").insert(q_organization_internal_id(Parameter("$1")),
                    Parameter("$2"),
                    Parameter("$3")).on_conflict().do_nothing().get_sql())

_q_insert_user = (Query.into(t_user).columns(
    "organization",
    "user_id",
    "profile",
    "user_certificate",
    "redacted_user_certificate",
    "user_certifier",
    "created_on",
).insert(
    q_organization_internal_id(Parameter("$1")),
    Parameter("$2"),
    Parameter("$3"),
Exemplo n.º 7
0
    OrganizationFirstUserCreationError,
)
from parsec.backend.postgresql.handler import PGHandler
from parsec.backend.postgresql.utils import Query
from parsec.backend.postgresql.tables import (
    t_organization,
    q_organization,
    q_organization_internal_id,
    t_user,
    t_vlob_atom,
    t_block,
)
from parsec.backend.postgresql.user_queries.create import _create_user

_q_insert_organization = ((Query.into(t_organization).columns(
    "organization_id", "bootstrap_token", "expiration_date").insert(
        Parameter("$1"), Parameter("$2"), Parameter("$3")).get_sql()) + """
ON CONFLICT (organization_id) DO
    UPDATE SET
        bootstrap_token = EXCLUDED.bootstrap_token,
        expiration_date = EXCLUDED.expiration_date
    WHERE organization.root_verify_key is NULL
""")

_q_get_organization = (q_organization(Parameter("$1")).select(
    "bootstrap_token", "root_verify_key", "expiration_date").get_sql())

_q_bootstrap_organization = (Query.update(t_organization).where(
    (t_organization.organization_id == Parameter("$1"))
    & (t_organization.bootstrap_token == Parameter("$2"))
    & (t_organization.root_verify_key.isnull())).set(
Exemplo n.º 8
0
    .select(t_user.user_id)
    .where(
        (
            t_user.human
            == q_human_internal_id(organization_id=Parameter("$1"), email=Parameter("$2"))
        )
        & (t_user.revoked_on.isnull() | t_user.revoked_on > Parameter("$3"))
    )
    .get_sql()
)


_q_insert_human_if_not_exists = (
    Query.into(t_human)
    .columns("organization", "email", "label")
    .insert(q_organization_internal_id(Parameter("$1")), Parameter("$2"), Parameter("$3"))
    .on_conflict()
    .do_nothing()
    .get_sql()
)


_q_insert_user = (
    Query.into(t_user)
    .columns(
        "organization", "user_id", "is_admin", "user_certificate", "user_certifier", "created_on"
    )
    .insert(
        q_organization_internal_id(Parameter("$1")),
        Parameter("$2"),
        Parameter("$3"),
        Parameter("$4"),