add new mailbox handling tasks
This commit is contained in:
parent
3bdf634703
commit
a285133f75
2 changed files with 57 additions and 0 deletions
|
@ -1,6 +1,9 @@
|
|||
Changelog
|
||||
=========
|
||||
|
||||
* :feature:`-` add new mailbox handling tasks
|
||||
:py:func:`osusers.tasks.create_file_mailbox` and
|
||||
:py:func:`osusers.tasks.delete_file_mailbox`
|
||||
* :support:`-` move celery routers into gvacommon that is in it's own
|
||||
repository to be used by others (gva, gvaldap)
|
||||
* :bug:`-` sftp directories are now owned by root instead of user
|
||||
|
|
|
@ -143,3 +143,57 @@ def delete_file_mail_userdir(username):
|
|||
raise GVAFileException(
|
||||
"could not remove mail base directory of user %s" % username)
|
||||
return mail_directory
|
||||
|
||||
|
||||
@shared_task
|
||||
def create_file_mailbox(username, mailboxname):
|
||||
"""
|
||||
This task creates a new mailbox directory for the given user and mailbox
|
||||
name.
|
||||
|
||||
:param str username: the user name
|
||||
:param str mailboxname: the mailbox name
|
||||
:raises GVAFileException: if the mailbox directory cannot be created
|
||||
:return: the created mailbox directory name
|
||||
:rtype: str
|
||||
|
||||
"""
|
||||
mailbox_directory = os.path.join(
|
||||
_build_mail_directory_name(username), mailboxname)
|
||||
try:
|
||||
subprocess.check_output([
|
||||
SUDO_CMD, INSTALL_CMD, '-o', username, '-g', username,
|
||||
'-m', '0700', '-d', mailbox_directory], stderr=subprocess.STDOUT)
|
||||
except subprocess.CalledProcessError:
|
||||
_logger.exception(
|
||||
'could not create mailbox %s for user %s', mailboxname, username)
|
||||
raise GVAFileException(
|
||||
"could not create mailbox %s for user %s" % (mailboxname, username)
|
||||
)
|
||||
return mailbox_directory
|
||||
|
||||
|
||||
@shared_task
|
||||
def delete_file_mailbox(username, mailboxname):
|
||||
"""
|
||||
This task deletes the given mailbox of the given user.
|
||||
|
||||
:param str username: the user name
|
||||
:param str mailboxname: the mailbox name
|
||||
:raises GVAFileException: if the mailbox directory cannot be deleted
|
||||
:return: the deleted mailbox directory name
|
||||
:rtype: str
|
||||
|
||||
"""
|
||||
mailbox_directory = os.path.join(
|
||||
_build_mail_directory_name(username), mailboxname)
|
||||
try:
|
||||
subprocess.check_output([
|
||||
SUDO_CMD, RM_CMD, '-r', '-f', mailbox_directory],
|
||||
stderr=subprocess.STDOUT)
|
||||
except subprocess.CalledProcessError:
|
||||
_logger.exception(
|
||||
'could not remove mailbox %s of user %s', mailboxname, username)
|
||||
raise GVAFileException(
|
||||
"could not remove mailbox %s of user %s" % (mailboxname, username))
|
||||
return mailbox_directory
|
||||
|
|
Loading…
Reference in a new issue