Esempio n. 1
0
 def _create_mailbox(self, creator, account, data):
     """Create a new Mailbox instance."""
     full_address = data.pop("full_address")
     address, domain_name = email_utils.split_mailbox(full_address)
     domain = get_object_or_404(admin_models.Domain, name=domain_name)
     if not creator.can_access(domain):
         raise serializers.ValidationError(
             {"domain": _("Permission denied.")})
     try:
         core_signals.can_create_object.send(sender=self.__class__,
                                             context=creator,
                                             klass=admin_models.Mailbox)
         core_signals.can_create_object.send(sender=self.__class__,
                                             context=domain,
                                             object_type="mailboxes")
     except lib_exceptions.ModoboaException as inst:
         raise serializers.ValidationError({"domain": force_text(inst)})
     quota = data.pop("quota", None)
     mb = admin_models.Mailbox(user=account,
                               address=address,
                               domain=domain,
                               **data)
     mb.set_quota(quota, creator.has_perm("admin.add_domain"))
     mb.save(creator=creator)
     account.email = full_address
     return mb
    def _migrate_mailboxes(self, domain, options, creator):
        """Migrate mailboxes of a single domain."""
        print "\tMigrating mailboxes"
        old_mboxes = pf_models.Mailbox.objects \
            .using(options["_from"]).filter(domain=domain.name)
        for old_mb in old_mboxes:
            new_user = core_models.User()
            new_user.username = old_mb.username
            new_user.first_name = old_mb.name.partition(' ')[0]
            new_user.last_name = old_mb.name.partition(' ')[2]
            new_user.email = old_mb.username
            new_user.is_active = old_mb.active
            if old_mb.created:
                new_user.date_joined = old_mb.created
            set_account_password(new_user, old_mb.password,
                                 options["passwords_scheme"])
            new_user.save(creator=creator, using=options["_to"])
            new_user.role = "SimpleUsers"

            local_part = split_mailbox(old_mb.username)[0]
            new_mb = admin_models.Mailbox(user=new_user,
                                          address=local_part,
                                          domain=domain)
            self._migrate_dates(new_mb, old_mb)
            new_mb.set_quota(old_mb.quota / 1024000, override_rules=True)
            new_mb.save(creator=creator, using=options["_to"])
Esempio n. 3
0
def migrate_mailboxes(domain, options):
    print "\tMigrating mailboxes"
    old_mboxes = pf_models.Mailbox.objects.using(
        options._from).filter(domain=domain.name)
    for old_mb in old_mboxes:
        new_mb = md_models.Mailbox()
        new_mb.address = old_mb.local_part
        new_mb.domain = domain
        new_mb.dates = migrate_dates(old_mb)
        if old_mb.quota:
            new_mb.quota = old_mb.quota / 1024000

        new_mb.path = "%s/" % old_mb.local_part
        if options.rename_dirs:
            oldpath = os.path.join(options.mboxes_path, domain.name,
                                   old_mb.maildir)
            newpath = os.path.join(options.mboxes_path, domain.name,
                                   new_mb.path)
            code, output = exec_cmd("mv %s %s" % (oldpath, newpath))
            if code:
                print "Error: cannot rename mailbox directory\n%s" % output
                sys.exit(1)

        new_mb.save(name=old_mb.name,
                    password=old_mb.password,
                    using=options.to)
Esempio n. 4
0
 def _create_mailbox(self, creator, account, data):
     """Create a new Mailbox instance."""
     full_address = data.pop("full_address")
     quota = data.pop("quota", None)
     mb = admin_models.Mailbox(
         user=account, address=self.address, domain=self.domain, **data)
     mb.set_quota(quota, creator.has_perm("admin.add_domain"))
     default_msg_limit = param_tools.get_global_parameter(
         "default_mailbox_message_limit")
     if default_msg_limit is not None:
         mb.message_limit = default_msg_limit
     mb.save(creator=creator)
     account.email = full_address
     return mb
Esempio n. 5
0
 def _create_mailbox(self, creator, account, data):
     """Create a new Mailbox instance."""
     full_address = data.pop("full_address")
     address, domain_name = email_utils.split_mailbox(full_address)
     domain = get_object_or_404(admin_models.Domain, name=domain_name)
     if not creator.can_access(domain):
         raise serializers.ValidationError(
             {"domain": _("Permission denied.")})
     mb = admin_models.Mailbox(user=account,
                               address=address,
                               domain=domain,
                               **data)
     mb.set_quota(data.get("quota"), creator.has_perm("admin.add_domain"))
     mb.save(creator=creator)
     account.email = full_address
     return mb