Dre4m Shell
Server IP : 85.214.239.14  /  Your IP : 18.220.74.157
Web Server : Apache/2.4.61 (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 :  /srv/modoboa/env/lib64/python3.5/site-packages/modoboa/relaydomains/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME SHELL ]     

Current File : /srv/modoboa/env/lib64/python3.5/site-packages/modoboa/relaydomains/forms.py
"""Postfix relay domains extension forms."""

from django.db.models.signals import pre_save, post_save

from modoboa.lib.form_utils import WizardStep
from modoboa.transport import forms as tr_forms, models as tr_models


class DisableSignals(object):
    """Context manager to disable signals."""

    def __init__(self):
        self.stashed_signals = {}
        self.disabled_signals = [pre_save, post_save]

    def __enter__(self):
        for signal in self.disabled_signals:
            self.disconnect(signal)

    def __exit__(self, exc_type, exc_val, exc_tb):
        for signal in list(self.stashed_signals.keys()):
            self.reconnect(signal)

    def disconnect(self, signal):
        self.stashed_signals[signal] = signal.receivers
        signal.receivers = []

    def reconnect(self, signal):
        signal.receivers = self.stashed_signals.get(signal, [])
        del self.stashed_signals[signal]


class RelayDomainWizardStep(WizardStep):
    """A custom wizard step."""

    def check_access(self, wizard):
        """Check if domain is a relay domain."""
        return wizard.steps[0].form.cleaned_data["type"] == "relaydomain"


class RelayDomainFormGeneral(tr_forms.TransportForm):
    """A form to display transport."""

    class Meta:
        model = tr_models.Transport
        exclude = [
            "creation", "pattern", "next_hop", "enabled",
            "_settings"
        ]

    def save(self, *args, **kwargs):
        """Custom save method."""
        domain = kwargs.pop("domain", None)
        if domain.type != "relaydomain":
            # We don't want to recreate the transport we just deleted it
            # (post_save signal).
            return None
        instance = super(RelayDomainFormGeneral, self).save()
        instance.pattern = domain.name
        instance.save()
        if not domain.transport:
            domain.transport = instance
            with DisableSignals():
                domain.save(update_fields=["transport"])
        return instance

Anon7 - 2022
AnonSec Team