mirror of
https://github.com/simple-login/app.git
synced 2024-09-29 21:21:29 +02:00
Export and import mailbox info with alias
This commit is contained in:
parent
3c8ec8fcf2
commit
1915c8d09d
@ -53,9 +53,10 @@ def export_aliases():
|
|||||||
"""
|
"""
|
||||||
user = g.user
|
user = g.user
|
||||||
|
|
||||||
data = [["alias", "note", "enabled"]]
|
data = [["alias", "note", "enabled", "mailboxes"]]
|
||||||
for alias in Alias.filter_by(user_id=user.id).all(): # type: Alias
|
for alias in Alias.filter_by(user_id=user.id).all(): # type: Alias
|
||||||
data.append([alias.email, alias.note, alias.enabled])
|
mailboxes = " ".join([mailbox.email for mailbox in alias.mailboxes])
|
||||||
|
data.append([alias.email, alias.note, alias.enabled, mailboxes])
|
||||||
|
|
||||||
si = StringIO()
|
si = StringIO()
|
||||||
cw = csv.writer(si)
|
cw = csv.writer(si)
|
||||||
|
@ -10,6 +10,7 @@
|
|||||||
<h1 class="h3">Alias Batch Import</h1>
|
<h1 class="h3">Alias Batch Import</h1>
|
||||||
<div class="alert alert-primary">
|
<div class="alert alert-primary">
|
||||||
Only aliases created with <b>your verified domains</b> can be imported.<br>
|
Only aliases created with <b>your verified domains</b> can be imported.<br>
|
||||||
|
If mailboxes are set for an alias, they will only be linked if they already exist.<br>
|
||||||
Please make sure to use the csv template file.
|
Please make sure to use the csv template file.
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -31,6 +31,8 @@ from app.models import (
|
|||||||
DeletedAlias,
|
DeletedAlias,
|
||||||
DomainDeletedAlias,
|
DomainDeletedAlias,
|
||||||
CustomDomain,
|
CustomDomain,
|
||||||
|
Mailbox,
|
||||||
|
AliasMailbox,
|
||||||
)
|
)
|
||||||
from server import create_app
|
from server import create_app
|
||||||
|
|
||||||
@ -152,17 +154,42 @@ def handle_batch_import(batch_import: BatchImport):
|
|||||||
LOG.d("alias already used %s", full_alias)
|
LOG.d("alias already used %s", full_alias)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
mailboxes = []
|
||||||
|
|
||||||
|
if "mailboxes" in row:
|
||||||
|
for mailbox_email in row["mailboxes"].split():
|
||||||
|
mailbox_email = sanitize_email(mailbox_email)
|
||||||
|
mailbox = Mailbox.get_by(email=mailbox_email)
|
||||||
|
|
||||||
|
if not mailbox or not mailbox.verified or mailbox.user_id != user.id:
|
||||||
|
LOG.d("mailbox %s can't be used %s", mailbox, user)
|
||||||
|
continue
|
||||||
|
|
||||||
|
mailboxes.append(mailbox.id)
|
||||||
|
|
||||||
|
if len(mailboxes) == 0:
|
||||||
|
mailboxes = [user.default_mailbox_id]
|
||||||
|
|
||||||
alias = Alias.create(
|
alias = Alias.create(
|
||||||
user_id=user.id,
|
user_id=user.id,
|
||||||
email=full_alias,
|
email=full_alias,
|
||||||
note=note,
|
note=note,
|
||||||
mailbox_id=user.default_mailbox_id,
|
mailbox_id=mailboxes[0],
|
||||||
custom_domain_id=custom_domain.id,
|
custom_domain_id=custom_domain.id,
|
||||||
batch_import_id=batch_import.id,
|
batch_import_id=batch_import.id,
|
||||||
)
|
)
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
|
db.session.flush()
|
||||||
LOG.d("Create %s", alias)
|
LOG.d("Create %s", alias)
|
||||||
|
|
||||||
|
for i in range(1, len(mailboxes)):
|
||||||
|
alias_mailbox = AliasMailbox.create(
|
||||||
|
alias_id=alias.id,
|
||||||
|
mailbox_id=mailboxes[i],
|
||||||
|
)
|
||||||
|
db.session.commit()
|
||||||
|
LOG.d("Create %s", alias_mailbox)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
while True:
|
while True:
|
||||||
|
6
static/batch_import_template.csv
vendored
6
static/batch_import_template.csv
vendored
@ -1,3 +1,3 @@
|
|||||||
"alias","note"
|
"alias","note","mailboxes"
|
||||||
"ebay@my-domain.com","Used on eBay"
|
"ebay@my-domain.com","Used on eBay","destination@my-destionation-domain.com"
|
||||||
"facebook@my-domain.com","Used on Facebook, Instagram."
|
"facebook@my-domain.com","Used on Facebook, Instagram.","destination1@my-destionation-domain.com destination2@my-destination-domain.com"
|
|
Loading…
Reference in New Issue
Block a user