Dre4m Shell
Server IP : 85.214.239.14  /  Your IP : 18.117.11.13
Web Server : Apache/2.4.62 (Debian)
System : Linux h2886529.stratoserver.net 4.9.0 #1 SMP Tue Jan 9 19:45:01 MSK 2024 x86_64
User : www-data ( 33)
PHP Version : 7.4.18
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
MySQL : OFF  |  cURL : OFF  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : OFF
Directory :  /proc/3/task/3/cwd/srv/modoboa/env/lib/python3.5/site-packages/modoboa_radicale/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME SHELL ]     

Current File : /proc/3/task/3/cwd/srv/modoboa/env/lib/python3.5/site-packages/modoboa_radicale/handlers.py
"""Radicale signals handlers."""

try:
    from secrets import token_hex
except ImportError:
    from os import urandom
    def token_hex(nbytes=None):
        return urandom(nbytes).hex()

from django.db.models import signals
from django.urls import reverse
from django.dispatch import receiver
from django.utils.translation import ugettext as _

from modoboa.core import signals as core_signals

from . import models


PERMISSIONS = [
    ("modoboa_radicale", "usercalendar", "add_usercalendar"),
    ("modoboa_radicale", "usercalendar", "change_usercalendar"),
    ("modoboa_radicale", "usercalendar", "delete_usercalendar"),
    ("modoboa_radicale", "sharedcalendar", "add_sharedcalendar"),
    ("modoboa_radicale", "sharedcalendar", "change_sharedcalendar"),
    ("modoboa_radicale", "sharedcalendar", "delete_sharedcalendar")
]

ROLES_PERMISSIONS = {
    "DomainAdmins": PERMISSIONS,
    "Resellers": PERMISSIONS,
    "SimpleUsers": [
        ("modoboa_radicale", "usercalendar", "add_usercalendar"),
        ("modoboa_radicale", "usercalendar", "change_usercalendar"),
        ("modoboa_radicale", "usercalendar", "delete_usercalendar"),
    ]
}


@receiver(core_signals.extra_role_permissions)
def extra_permissions(sender, role, **kwargs):
    """Extra permissions."""
    return ROLES_PERMISSIONS.get(role, [])


@receiver(core_signals.extra_user_menu_entries)
def top_menu(sender, location, user, **kwargs):
    """Add extra menu entries."""
    if location == "top_menu" and hasattr(user, "mailbox"):
        return [
            {"name": "radicale",
             "label": _("Calendars"),
             "url": reverse("modoboa_radicale:calendar_detail_view")}
        ]
    return []


@receiver(signals.pre_save, sender=models.UserCalendar)
def set_user_calendar_path(sender, instance, **kwargs):
    """Set path at creation."""
    if instance.pk:
        return
    instance._path = "{}/{}".format(
        instance.mailbox.full_address, instance.name)
    if not instance.access_token:
        instance.access_token = token_hex(16)


@receiver(signals.pre_save, sender=models.SharedCalendar)
def set_shared_calendar_path(sender, instance, **kwargs):
    """Set path at creation."""
    if instance.pk:
        return
    instance._path = "{}/{}".format(instance.domain.name, instance.name)
    if not instance.access_token:
        instance.access_token = token_hex(16)

Anon7 - 2022
AnonSec Team