mirror of
https://github.com/eitchtee/WYGIWYH.git
synced 2026-11-13 12:23:44 +01:00
feat(export): include bank sync services and account links in export and restore
This commit is contained in:
1 parent
77ee56f7a3
commit
25a2326cf6
3 files changed
+64
No files matched your search
@@ -73,6 +73,13 @@ class ExportForm(forms.Form):
|
||||
label=_("Automatic Exchange Rates"),
|
||||
initial=False,
|
||||
)
|
||||
bank_sync = forms.BooleanField(
|
||||
required=False,
|
||||
widget=forms.CheckboxInput(),
|
||||
label=_("Bank Sync"),
|
||||
help_text=_("Includes the providers' API keys"),
|
||||
initial=False,
|
||||
)
|
||||
rules = forms.BooleanField(
|
||||
required=False,
|
||||
widget=forms.CheckboxInput(),
|
||||
@@ -110,6 +117,7 @@ class ExportForm(forms.Form):
|
||||
"recurring_transactions",
|
||||
"exchange_rates_services",
|
||||
"exchange_rates",
|
||||
"bank_sync",
|
||||
"rules",
|
||||
"dca",
|
||||
"import_profiles",
|
||||
@@ -140,6 +148,12 @@ class RestoreForm(forms.Form):
|
||||
required=False, label=_("Automatic Exchange Rates")
|
||||
)
|
||||
exchange_rates = forms.FileField(required=False, label=_("Exchange Rates"))
|
||||
bank_sync_services = forms.FileField(
|
||||
required=False, label=_("Bank Sync Services")
|
||||
)
|
||||
bank_sync_accounts = forms.FileField(
|
||||
required=False, label=_("Bank Sync Accounts")
|
||||
)
|
||||
transaction_rules = forms.FileField(required=False, label=_("Transaction rules"))
|
||||
transaction_rules_actions = forms.FileField(
|
||||
required=False, label=_("Edit transaction action")
|
||||
@@ -171,6 +185,8 @@ class RestoreForm(forms.Form):
|
||||
"recurring_transactions",
|
||||
"automatic_exchange_rates",
|
||||
"exchange_rates",
|
||||
"bank_sync_services",
|
||||
"bank_sync_accounts",
|
||||
"transaction_rules",
|
||||
"transaction_rules_actions",
|
||||
"transaction_rules_update_or_create",
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
from import_export import fields, resources, widgets
|
||||
|
||||
from apps.accounts.models import Account
|
||||
from apps.bank_sync.models import BankSyncAccount, BankSyncService
|
||||
|
||||
|
||||
class _AnyOwnerWidget(widgets.ForeignKeyWidget):
|
||||
"""By id, across every user.
|
||||
|
||||
The default managers only see the restoring user's rows, and names can clash
|
||||
between users. Ids survive a restore.
|
||||
"""
|
||||
|
||||
def get_queryset(self, value, row, *args, **kwargs):
|
||||
return self.model._base_manager.all()
|
||||
|
||||
|
||||
class BankSyncServiceResource(resources.ModelResource):
|
||||
class Meta:
|
||||
model = BankSyncService
|
||||
|
||||
def get_queryset(self):
|
||||
return BankSyncService._base_manager.all()
|
||||
|
||||
|
||||
class BankSyncAccountResource(resources.ModelResource):
|
||||
service = fields.Field(
|
||||
attribute="service",
|
||||
column_name="service",
|
||||
widget=_AnyOwnerWidget(BankSyncService),
|
||||
)
|
||||
account = fields.Field(
|
||||
attribute="account",
|
||||
column_name="account",
|
||||
widget=_AnyOwnerWidget(Account),
|
||||
)
|
||||
|
||||
class Meta:
|
||||
model = BankSyncAccount
|
||||
@@ -15,6 +15,10 @@ from tablib import Dataset
|
||||
from apps.common.decorators.htmx import only_htmx
|
||||
from apps.export_app.forms import ExportForm, RestoreForm
|
||||
from apps.export_app.resources.accounts import AccountResource
|
||||
from apps.export_app.resources.bank_sync import (
|
||||
BankSyncAccountResource,
|
||||
BankSyncServiceResource,
|
||||
)
|
||||
from apps.export_app.resources.currencies import (
|
||||
CurrencyResource,
|
||||
ExchangeRateResource,
|
||||
@@ -119,6 +123,9 @@ def export_form(request):
|
||||
)
|
||||
if export_exchange_rates:
|
||||
exports.append((ExchangeRateResource().export(), "exchange_rates"))
|
||||
if form.cleaned_data.get("bank_sync"):
|
||||
exports.append((BankSyncServiceResource().export(), "bank_sync_services"))
|
||||
exports.append((BankSyncAccountResource().export(), "bank_sync_accounts"))
|
||||
if export_rules:
|
||||
exports.append(
|
||||
(TransactionRuleResource().export(), "transaction_rules")
|
||||
@@ -235,6 +242,8 @@ def process_imports(request, cleaned_data):
|
||||
("installment_plans", InstallmentPlanResource),
|
||||
("recurring_transactions", RecurringTransactionResource),
|
||||
("transactions", TransactionResource),
|
||||
("bank_sync_services", BankSyncServiceResource),
|
||||
("bank_sync_accounts", BankSyncAccountResource),
|
||||
("dca_strategies", DCAStrategyResource),
|
||||
("dca_entries", DCAEntryResource),
|
||||
("import_profiles", ImportProfileResource),
|
||||
|
||||
Reference in new issue
Block a user