mirror of
https://github.com/eitchtee/WYGIWYH.git
synced 2026-02-25 08:54:52 +01:00
Compare commits
5 Commits
0.17.0
...
feat/bette
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
64b32316ca | ||
|
|
efe020efb3 | ||
|
|
8c133f92ce | ||
|
|
f3c9d8faea | ||
|
|
8f5204a17b |
@@ -82,22 +82,16 @@ class AccountForm(forms.ModelForm):
|
||||
self.fields["group"].queryset = AccountGroup.objects.all()
|
||||
|
||||
if self.instance.id:
|
||||
self.fields["currency"].queryset = Currency.objects.filter(
|
||||
Q(is_archived=False) | Q(accounts=self.instance.id),
|
||||
)
|
||||
|
||||
self.fields["exchange_currency"].queryset = Currency.objects.filter(
|
||||
qs = Currency.objects.filter(
|
||||
Q(is_archived=False) | Q(accounts=self.instance.id)
|
||||
)
|
||||
).distinct()
|
||||
self.fields["currency"].queryset = qs
|
||||
self.fields["exchange_currency"].queryset = qs
|
||||
|
||||
else:
|
||||
self.fields["currency"].queryset = Currency.objects.filter(
|
||||
Q(is_archived=False),
|
||||
)
|
||||
|
||||
self.fields["exchange_currency"].queryset = Currency.objects.filter(
|
||||
Q(is_archived=False)
|
||||
)
|
||||
qs = Currency.objects.filter(Q(is_archived=False))
|
||||
self.fields["currency"].queryset = qs
|
||||
self.fields["exchange_currency"].queryset = qs
|
||||
|
||||
self.helper = FormHelper()
|
||||
self.helper.form_tag = False
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import decimal
|
||||
import logging
|
||||
import traceback
|
||||
from copy import deepcopy
|
||||
from datetime import datetime, date
|
||||
from decimal import Decimal
|
||||
from itertools import chain
|
||||
@@ -33,14 +34,25 @@ logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class DryRunResults:
|
||||
def __init__(self):
|
||||
def __init__(self, dry_run: bool):
|
||||
self.results = []
|
||||
self.dry_run = dry_run
|
||||
|
||||
def header(self, header: str, action):
|
||||
if not self.dry_run:
|
||||
return
|
||||
|
||||
result = {"type": "header", "header_type": header, "action": action}
|
||||
self.results.append(result)
|
||||
|
||||
def triggering_transaction(self, instance):
|
||||
if not self.dry_run:
|
||||
return
|
||||
if isinstance(instance, Transaction):
|
||||
instance = instance.deepcopy()
|
||||
elif isinstance(instance, dict):
|
||||
instance = deepcopy(instance)
|
||||
|
||||
result = {
|
||||
"type": "triggering_transaction",
|
||||
"transaction": instance,
|
||||
@@ -50,9 +62,16 @@ class DryRunResults:
|
||||
def edit_transaction(
|
||||
self, instance, action, old_value, new_value, field, tags, entities
|
||||
):
|
||||
if not self.dry_run:
|
||||
return
|
||||
if isinstance(instance, Transaction):
|
||||
instance = instance.deepcopy()
|
||||
elif isinstance(instance, dict):
|
||||
instance = deepcopy(instance)
|
||||
|
||||
result = {
|
||||
"type": "edit_transaction",
|
||||
"transaction": instance.deepcopy(),
|
||||
"transaction": instance,
|
||||
"action": action,
|
||||
"old_value": old_value,
|
||||
"new_value": new_value,
|
||||
@@ -72,6 +91,14 @@ class DryRunResults:
|
||||
start_instance=None,
|
||||
end_instance=None,
|
||||
):
|
||||
if not self.dry_run:
|
||||
return
|
||||
|
||||
if isinstance(end_instance, Transaction):
|
||||
start_instance = end_instance.deepcopy()
|
||||
elif isinstance(end_instance, dict):
|
||||
start_instance = deepcopy(end_instance)
|
||||
|
||||
result = {
|
||||
"type": "update_or_create_transaction",
|
||||
"start_transaction": start_instance,
|
||||
@@ -85,6 +112,9 @@ class DryRunResults:
|
||||
self.results.append(result)
|
||||
|
||||
def error(self, error, level: Literal["error", "warning", "info"] = "error"):
|
||||
if not self.dry_run:
|
||||
return
|
||||
|
||||
result = {
|
||||
"type": "error",
|
||||
"error": error,
|
||||
@@ -247,7 +277,10 @@ def check_for_transaction_rules(
|
||||
if searched_transactions.exists():
|
||||
transaction = searched_transactions.first()
|
||||
existing = True
|
||||
starting_instance = transaction.deepcopy()
|
||||
|
||||
if dry_run:
|
||||
starting_instance = transaction.deepcopy()
|
||||
|
||||
_log("Found at least one matching transaction, using latest:")
|
||||
_log("{}".format(pformat(model_to_dict(transaction))))
|
||||
else:
|
||||
@@ -376,7 +409,7 @@ def check_for_transaction_rules(
|
||||
|
||||
dry_run_results.update_or_create_transaction(
|
||||
start_instance=starting_instance,
|
||||
end_instance=transaction.deepcopy(),
|
||||
end_instance=transaction,
|
||||
updated=existing,
|
||||
action=processed_action,
|
||||
query=search_query,
|
||||
@@ -473,7 +506,7 @@ def check_for_transaction_rules(
|
||||
)
|
||||
|
||||
dry_run_results.edit_transaction(
|
||||
instance=transaction.deepcopy(),
|
||||
instance=transaction,
|
||||
action=processed_action,
|
||||
old_value=original_value,
|
||||
new_value=new_value,
|
||||
@@ -489,7 +522,7 @@ def check_for_transaction_rules(
|
||||
user = get_user_model().objects.get(id=user_id)
|
||||
write_current_user(user)
|
||||
logs = [] if dry_run else None
|
||||
dry_run_results = DryRunResults()
|
||||
dry_run_results = DryRunResults(dry_run=dry_run)
|
||||
|
||||
if dry_run and not rule_id:
|
||||
raise Exception("Cannot dry run without a rule id")
|
||||
@@ -507,7 +540,7 @@ def check_for_transaction_rules(
|
||||
# Regular transaction processing for creates and updates
|
||||
instance = Transaction.objects.get(id=instance_id)
|
||||
|
||||
dry_run_results.triggering_transaction(instance.deepcopy())
|
||||
dry_run_results.triggering_transaction(instance)
|
||||
|
||||
functions = {
|
||||
"relativedelta": relativedelta,
|
||||
|
||||
@@ -15,6 +15,11 @@ class TransactionsGetter:
|
||||
def __init__(self, **filters):
|
||||
self.__queryset = Transaction.objects.filter(**filters)
|
||||
|
||||
def exclude(self, **exclude_filters):
|
||||
self.__queryset = self.__queryset.exclude(**exclude_filters)
|
||||
|
||||
return self
|
||||
|
||||
@property
|
||||
def sum(self):
|
||||
return self.__queryset.aggregate(
|
||||
|
||||
Reference in New Issue
Block a user