monopyly 1.4.2__py3-none-any.whl → 1.4.3__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- monopyly/__init__.py +0 -2
- monopyly/_version.py +2 -2
- monopyly/auth/routes.py +3 -1
- monopyly/cli/run.py +12 -2
- monopyly/config/default_settings.py +1 -0
- monopyly/config/settings.py +0 -1
- monopyly/static/css/style.css +3 -2
- monopyly/static/js/define-filter.js +2 -2
- monopyly/static/js/expand-transaction.js +3 -17
- monopyly/static/js/modules/expand-transaction.js +104 -39
- monopyly/static/js/modules/update-display-ajax.js +15 -8
- monopyly/static/js/update-transactions-display.js +52 -45
- {monopyly-1.4.2.dist-info → monopyly-1.4.3.dist-info}/METADATA +3 -3
- {monopyly-1.4.2.dist-info → monopyly-1.4.3.dist-info}/RECORD +18 -18
- {monopyly-1.4.2.dist-info → monopyly-1.4.3.dist-info}/WHEEL +0 -0
- {monopyly-1.4.2.dist-info → monopyly-1.4.3.dist-info}/entry_points.txt +0 -0
- {monopyly-1.4.2.dist-info → monopyly-1.4.3.dist-info}/licenses/COPYING +0 -0
- {monopyly-1.4.2.dist-info → monopyly-1.4.3.dist-info}/licenses/LICENSE +0 -0
monopyly/__init__.py
CHANGED
monopyly/_version.py
CHANGED
monopyly/auth/routes.py
CHANGED
|
@@ -26,7 +26,9 @@ def register():
|
|
|
26
26
|
# Get username and passwords from the form
|
|
27
27
|
username, password = get_username_and_password(request.form)
|
|
28
28
|
# Check for errors in the accessed information
|
|
29
|
-
if not
|
|
29
|
+
if not current_app.config["REGISTRATION"]:
|
|
30
|
+
error = "The app is not currently accepting new registrations."
|
|
31
|
+
elif not username:
|
|
30
32
|
error = "Username is required."
|
|
31
33
|
elif not password:
|
|
32
34
|
error = "Password is required."
|
monopyly/cli/run.py
CHANGED
|
@@ -12,6 +12,7 @@ from pathlib import Path
|
|
|
12
12
|
from threading import Event
|
|
13
13
|
|
|
14
14
|
from flask import current_app
|
|
15
|
+
from rich.console import Console
|
|
15
16
|
|
|
16
17
|
from .apps import DevelopmentApplication, LocalApplication, ProductionApplication
|
|
17
18
|
|
|
@@ -47,11 +48,14 @@ def parse_arguments():
|
|
|
47
48
|
parser.add_argument(
|
|
48
49
|
"--browser",
|
|
49
50
|
action="store_true",
|
|
50
|
-
help=
|
|
51
|
+
help=(
|
|
52
|
+
"a flag indicating if a new browser window should be opened (development "
|
|
53
|
+
"and local modes only)"
|
|
54
|
+
),
|
|
51
55
|
)
|
|
52
56
|
parser.add_argument(
|
|
53
57
|
"mode",
|
|
54
|
-
help="the runtime mode for the app
|
|
58
|
+
help="the runtime mode for the app",
|
|
55
59
|
choices=["development", "local", "production"],
|
|
56
60
|
)
|
|
57
61
|
return parser.parse_args()
|
|
@@ -65,6 +69,7 @@ class Launcher:
|
|
|
65
69
|
"local": LocalApplication,
|
|
66
70
|
"production": ProductionApplication,
|
|
67
71
|
}
|
|
72
|
+
_console = Console()
|
|
68
73
|
_exit = Event()
|
|
69
74
|
command = ["flask"]
|
|
70
75
|
|
|
@@ -77,15 +82,20 @@ class Launcher:
|
|
|
77
82
|
def initialize_database(self):
|
|
78
83
|
"""Run the database initializer."""
|
|
79
84
|
instruction = self.command + ["init-db"]
|
|
85
|
+
self._console.print("[deep_sky_blue1]Initializing the database...")
|
|
80
86
|
subprocess.run(instruction)
|
|
87
|
+
print("\n")
|
|
81
88
|
|
|
82
89
|
def backup_database(self):
|
|
83
90
|
"""Back up the app database."""
|
|
91
|
+
self._console.print("[deep_sky_blue1]Backing up the database...")
|
|
84
92
|
instruction = self.command + ["back-up-db"]
|
|
85
93
|
subprocess.run(instruction)
|
|
94
|
+
print("\n")
|
|
86
95
|
|
|
87
96
|
def launch(self):
|
|
88
97
|
"""Launch the Monopyly application."""
|
|
98
|
+
self._console.print("[deep_sky_blue1]Running the Monopyly application...\n")
|
|
89
99
|
self.app.run()
|
|
90
100
|
|
|
91
101
|
def open_browser(self, delay=0):
|
|
@@ -10,6 +10,7 @@ class Config:
|
|
|
10
10
|
"""A base configuration object with some default settings."""
|
|
11
11
|
|
|
12
12
|
config_filepaths = [DEFAULT_CONFIG_PATH]
|
|
13
|
+
REGISTRATION = True
|
|
13
14
|
|
|
14
15
|
def __init__(self, db_path=None):
|
|
15
16
|
# Read parameters from the configuration files in order of specificity
|
monopyly/config/settings.py
CHANGED
monopyly/static/css/style.css
CHANGED
|
@@ -252,9 +252,9 @@ aside.sidebar {
|
|
|
252
252
|
|
|
253
253
|
.screenshot {
|
|
254
254
|
width: 100%; /* override the markdown default */
|
|
255
|
-
|
|
255
|
+
margin: 20px 0;
|
|
256
256
|
border: 1px solid #f3f3f3;
|
|
257
|
-
|
|
257
|
+
box-shadow: 3px 3px 5px #bbbbbb;
|
|
258
258
|
}
|
|
259
259
|
|
|
260
260
|
.grouping {
|
|
@@ -1208,6 +1208,7 @@ form .autocomplete-box .item.active {
|
|
|
1208
1208
|
.transactions-table .expanded .setting .date {
|
|
1209
1209
|
display: flex;
|
|
1210
1210
|
flex-direction: column;
|
|
1211
|
+
justify-content: center;
|
|
1211
1212
|
align-items: center;
|
|
1212
1213
|
flex: 2;
|
|
1213
1214
|
padding-top: 3px;
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
|
|
12
12
|
// Identify the card filters
|
|
13
13
|
const $filterContainer = $('#card-filter');
|
|
14
|
-
|
|
14
|
+
|
|
15
15
|
// Label inactive cards when they are hovered over
|
|
16
16
|
const inactiveCardFilters = $filterContainer.find('.inactive.card');
|
|
17
17
|
let defaultText;
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
$this.text(defaultText);
|
|
32
32
|
}
|
|
33
33
|
);
|
|
34
|
-
|
|
34
|
+
|
|
35
35
|
// Change the filter status on click
|
|
36
36
|
const $filters = $filterContainer.find('.card');
|
|
37
37
|
$filters.on('click', function() {
|
|
@@ -9,24 +9,10 @@
|
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
11
|
import {
|
|
12
|
-
|
|
13
|
-
} from './modules/
|
|
14
|
-
import { toggleTransactionRow } from './modules/expand-transaction.js';
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
function displaySubtransactions($transaction) {
|
|
18
|
-
|
|
19
|
-
// Execute an AJAX request to get transaction/subtransaction information
|
|
20
|
-
const endpoint = EXPAND_TRANSACTION_ENDPOINT;
|
|
21
|
-
const rawData = $transaction.data("transaction-id");
|
|
22
|
-
const $container = $transaction.find('.subtransaction-container');
|
|
23
|
-
replaceDisplayContentsAjaxRequest(endpoint, rawData, $container);
|
|
24
|
-
|
|
25
|
-
}
|
|
12
|
+
TransactionToggleManager, displaySubtransactions
|
|
13
|
+
} from './modules/expand-transaction.js';
|
|
26
14
|
|
|
27
15
|
|
|
28
16
|
(function() {
|
|
29
|
-
|
|
30
|
-
toggleTransactionRow(displaySubtransactions);
|
|
31
|
-
|
|
17
|
+
const toggleManager = new TransactionToggleManager(displaySubtransactions)
|
|
32
18
|
})();
|
|
@@ -11,53 +11,118 @@
|
|
|
11
11
|
* '.transaction' element as its only argument.
|
|
12
12
|
*/
|
|
13
13
|
|
|
14
|
+
import {
|
|
15
|
+
replaceDisplayContentsAjaxRequest
|
|
16
|
+
} from './update-display-ajax.js';
|
|
14
17
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
18
|
+
|
|
19
|
+
class TransactionToggleManager {
|
|
20
|
+
/**
|
|
21
|
+
* Create the object to toggle transactions.
|
|
22
|
+
*
|
|
23
|
+
* @param {function} callback - A callback function to execute when toggling
|
|
24
|
+
* a button to get more info.
|
|
25
|
+
*/
|
|
26
|
+
constructor(callback = null) {
|
|
27
|
+
// Identify the plus/minus icons
|
|
28
|
+
this.$iconsMoreInfoButtons = $('.transaction .more.button');
|
|
29
|
+
this.$iconsLessInfoButtons = $('.transaction .less.button');
|
|
30
|
+
this.#registerClickExpand(callback);
|
|
31
|
+
this.#registerClickCollapse();
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
getButtonTransaction(button) {
|
|
35
|
+
return $(button).closest('.transaction');
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
#registerClickExpand(callback) {
|
|
39
|
+
const self = this;
|
|
40
|
+
this.$iconsMoreInfoButtons.on('click', function() {
|
|
41
|
+
const $transaction = self.getButtonTransaction(this);
|
|
42
|
+
const toggler = new TransactionToggler($transaction);
|
|
43
|
+
toggler.expand(callback);
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
#registerClickCollapse() {
|
|
48
|
+
const self = this;
|
|
49
|
+
this.$iconsLessInfoButtons.on('click', function() {
|
|
50
|
+
const $transaction = self.getButtonTransaction(this);
|
|
51
|
+
const toggler = new TransactionToggler($transaction);
|
|
52
|
+
toggler.collapse();
|
|
31
53
|
});
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
class TransactionToggler {
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Create the handler.
|
|
62
|
+
*
|
|
63
|
+
* @param {Object} $transaction - The transaction to be toggled.
|
|
64
|
+
*/
|
|
65
|
+
constructor($transaction) {
|
|
66
|
+
// Set timing variables
|
|
67
|
+
this.fadeTime = 200;
|
|
68
|
+
this.slideTime = 250;
|
|
69
|
+
// Identify elements of the row
|
|
70
|
+
this.$transaction = $transaction;
|
|
71
|
+
this.$extendedRow = $transaction.find('.expanded');
|
|
72
|
+
this.$condensedRow = $transaction.find('.condensed');
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Expand the transaction
|
|
77
|
+
*
|
|
78
|
+
* @param {function} callback - A callback function to execute when expanding
|
|
79
|
+
* the transaction information. The callback function takes one argument,
|
|
80
|
+
* the JQuery object representing the transaction.
|
|
81
|
+
*/
|
|
82
|
+
expand(callback = null) {
|
|
32
83
|
// Execute the callback function, if given
|
|
33
84
|
if (callback != null) {
|
|
34
|
-
callback(
|
|
85
|
+
callback(this.$transaction);
|
|
35
86
|
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
87
|
+
this.#toggleTransaction(this.$condensedRow, this.$extendedRow);
|
|
88
|
+
this.$transaction.addClass('selected');
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
collapse($transaction) {
|
|
92
|
+
this.#toggleTransaction(this.$extendedRow, this.$condensedRow);
|
|
93
|
+
this.$transaction.removeClass('selected');
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
#toggleTransaction($collapser, $expander) {
|
|
97
|
+
this.#hideSummaryRow($collapser);
|
|
98
|
+
this.#showSummaryRow($expander)
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
#hideSummaryRow($row) {
|
|
102
|
+
const self = this;
|
|
103
|
+
$row.fadeTo(self.fadeTime, 0, function() {
|
|
104
|
+
$(this).slideUp(self.slideTime);
|
|
41
105
|
});
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
$
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
// Hide the expanded transaction summary
|
|
49
|
-
const $expandedRow = $transaction.find('.expanded');
|
|
50
|
-
$expandedRow.fadeTo(fadeTime, 0, function() {
|
|
51
|
-
$(this).slideUp(slideTime);
|
|
52
|
-
})
|
|
53
|
-
// Show the condensed transaction summary
|
|
54
|
-
const $condensedRow = $transaction.find('.condensed');
|
|
55
|
-
$condensedRow.slideDown(slideTime, function() {
|
|
56
|
-
$(this).fadeTo(fadeTime, 1);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
#showSummaryRow($row) {
|
|
109
|
+
const self = this;
|
|
110
|
+
$row.delay(self.fadeTime).slideDown(self.slideTime, function() {
|
|
111
|
+
$(this).fadeTo(self.fadeTime, 1);
|
|
57
112
|
});
|
|
58
|
-
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
function displaySubtransactions($transaction) {
|
|
118
|
+
|
|
119
|
+
// Execute an AJAX request to get transaction/subtransaction information
|
|
120
|
+
const endpoint = EXPAND_TRANSACTION_ENDPOINT;
|
|
121
|
+
const rawData = $transaction.data("transaction-id");
|
|
122
|
+
const $container = $transaction.find('.subtransaction-container');
|
|
123
|
+
replaceDisplayContentsAjaxRequest(endpoint, rawData, $container);
|
|
59
124
|
|
|
60
125
|
}
|
|
61
126
|
|
|
62
127
|
|
|
63
|
-
export {
|
|
128
|
+
export { TransactionToggleManager, displaySubtransactions };
|
|
@@ -11,14 +11,21 @@
|
|
|
11
11
|
import { executeAjaxRequest } from './ajax.js';
|
|
12
12
|
|
|
13
13
|
|
|
14
|
-
function replaceDisplayContentsAjaxRequest(
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
14
|
+
function replaceDisplayContentsAjaxRequest(
|
|
15
|
+
endpoint, rawData, $display, callback = null
|
|
16
|
+
) {
|
|
17
|
+
|
|
18
|
+
// The action is to replace the display's contents
|
|
19
|
+
function action(response) {
|
|
20
|
+
$display.html(response);
|
|
21
|
+
// Execute the callback function, if given
|
|
22
|
+
if (callback != null) {
|
|
23
|
+
callback();
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// Assign the response to the display object
|
|
28
|
+
executeAjaxRequest(endpoint, rawData, action);
|
|
22
29
|
|
|
23
30
|
}
|
|
24
31
|
|
|
@@ -6,61 +6,68 @@
|
|
|
6
6
|
* selection. The Ajax request is defined in its own function.
|
|
7
7
|
*
|
|
8
8
|
* Updates can be triggered by the following actions:
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
9
|
+
* - Changing the card filters: a user can click on any of the card
|
|
10
|
+
* filters to show or hide transactions from that card.
|
|
11
|
+
* - Sorting the table by transaction date: a user can click on the
|
|
12
|
+
* 'Date' column header to sort the transaction date in ascending
|
|
13
|
+
* or descending order.
|
|
14
14
|
*/
|
|
15
15
|
|
|
16
16
|
import {
|
|
17
|
-
|
|
17
|
+
TransactionToggleManager, displaySubtransactions
|
|
18
|
+
} from './modules/expand-transaction.js';
|
|
19
|
+
import {
|
|
20
|
+
replaceDisplayContentsAjaxRequest
|
|
18
21
|
} from './modules/update-display-ajax.js';
|
|
19
22
|
|
|
20
23
|
|
|
21
24
|
(function() {
|
|
22
25
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
26
|
+
// Identify the card filters
|
|
27
|
+
const $filterContainer = $('#card-filter');
|
|
28
|
+
// Identify the transactions container
|
|
29
|
+
const $container = $('.transactions-container');
|
|
30
|
+
|
|
31
|
+
// Send the Ajax request on click
|
|
32
|
+
const $filters = $filterContainer.find('.card');
|
|
33
|
+
$filters.on('click', function() {
|
|
34
|
+
updateTable();
|
|
35
|
+
});
|
|
27
36
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
37
|
+
// Change the table ordering and send the Ajax request on click
|
|
38
|
+
$container.on('click', '.transactions-table .sort-button', function() {
|
|
39
|
+
// Identify the table sorters
|
|
40
|
+
const $sorters = $('.transactions-table .sort-button');
|
|
41
|
+
// Swap the sorter icons
|
|
42
|
+
$sorters.toggleClass('selected');
|
|
43
|
+
// Update the table
|
|
44
|
+
updateTable();
|
|
45
|
+
});
|
|
33
46
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
47
|
+
function updateTable() {
|
|
48
|
+
// Determine the selected credit cards to use from the filters
|
|
49
|
+
const $selectedFilters = $filterContainer.find('.card.selected');
|
|
50
|
+
const cardIDs = [];
|
|
51
|
+
$selectedFilters.each(function() {cardIDs.push(this.dataset.cardId);});
|
|
52
|
+
// Determine the table ordering (ascending/descending transaction date)
|
|
53
|
+
const $sorter = $('.transactions-table .sort-button.selected');
|
|
54
|
+
let sortOrder
|
|
55
|
+
if ($sorter.hasClass('asc')) {
|
|
56
|
+
sortOrder = 'asc';
|
|
57
|
+
} else {
|
|
58
|
+
sortOrder = 'desc';
|
|
59
|
+
}
|
|
60
|
+
// Update the table with the filters and ordering
|
|
61
|
+
const endpoint = FILTER_ENDPOINT;
|
|
62
|
+
const rawData = {
|
|
63
|
+
'card_ids': cardIDs,
|
|
64
|
+
'sort_order': sortOrder,
|
|
65
|
+
};
|
|
43
66
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
// Determine the table ordering (ascending/descending transaction date)
|
|
50
|
-
const $sorter = $('.transactions-table .sort-button.selected');
|
|
51
|
-
let sortOrder
|
|
52
|
-
if ($sorter.hasClass('asc')) {
|
|
53
|
-
sortOrder = 'asc';
|
|
54
|
-
} else {
|
|
55
|
-
sortOrder = 'desc';
|
|
56
|
-
}
|
|
57
|
-
// Update the table with the filters and ordering
|
|
58
|
-
const endpoint = FILTER_ENDPOINT;
|
|
59
|
-
const rawData = {
|
|
60
|
-
'card_ids': cardIDs,
|
|
61
|
-
'sort_order': sortOrder,
|
|
62
|
-
};
|
|
63
|
-
replaceDisplayContentsAjaxRequest(endpoint, rawData, $container);
|
|
64
|
-
}
|
|
67
|
+
function callback() {
|
|
68
|
+
const toggleManager = new TransactionToggleManager(displaySubtransactions)
|
|
69
|
+
}
|
|
70
|
+
replaceDisplayContentsAjaxRequest(endpoint, rawData, $container, callback)
|
|
71
|
+
}
|
|
65
72
|
|
|
66
73
|
})();
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: monopyly
|
|
3
|
-
Version: 1.4.
|
|
3
|
+
Version: 1.4.3
|
|
4
4
|
Summary: A homemade personal finance manager.
|
|
5
5
|
Project-URL: Download, https://pypi.org/project/monopyly
|
|
6
|
-
Project-URL: Homepage,
|
|
6
|
+
Project-URL: Homepage, http://monopyly.com
|
|
7
7
|
Project-URL: Repository, https://github.com/mitchnegus/monopyly
|
|
8
8
|
Project-URL: Changelog, https://github.com/mitchnegus/monopyly/blob/main/CHANGELOG.md
|
|
9
9
|
Author-email: Mitch Negus <mitchnegus57@gmail.com>
|
|
@@ -22,7 +22,7 @@ Classifier: Programming Language :: Python
|
|
|
22
22
|
Classifier: Topic :: Office/Business :: Financial
|
|
23
23
|
Classifier: Topic :: Office/Business :: Financial :: Accounting
|
|
24
24
|
Classifier: Topic :: Office/Business :: Financial :: Spreadsheet
|
|
25
|
-
Requires-Python: <3.11,>=3.
|
|
25
|
+
Requires-Python: <3.11,>=3.10
|
|
26
26
|
Requires-Dist: authanor>=1.0.2
|
|
27
27
|
Requires-Dist: flask-wtf
|
|
28
28
|
Requires-Dist: flask>=2.2.2
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
monopyly/README.md,sha256=T-Avdpr3whgP6g0P_w-u02CSwzBH2yRnleRrM1sKrj4,8281
|
|
2
|
-
monopyly/__init__.py,sha256=
|
|
3
|
-
monopyly/_version.py,sha256=
|
|
2
|
+
monopyly/__init__.py,sha256=IJkmwjfkx-AqV_R2P6a6V_Hf7VR7HQAcIKB4atpQ9R8,1761
|
|
3
|
+
monopyly/_version.py,sha256=n2w3qvBPpfeEbtOODqAoRRZ_yoh4xwta8eHepGUH-co,160
|
|
4
4
|
monopyly/auth/actions.py,sha256=T99eAP8dxFZMzLu2LxZFIXGYIroP8I7KJ-WJ8GJ1gws,260
|
|
5
5
|
monopyly/auth/blueprint.py,sha256=r2BfSFz-n29KDvyMwbh2puvenoIddalES5joIxjYnfM,243
|
|
6
|
-
monopyly/auth/routes.py,sha256=
|
|
6
|
+
monopyly/auth/routes.py,sha256=psWxQg_fGyMbBPDoS0JIcLae43DL584gcEBynbumgaw,2901
|
|
7
7
|
monopyly/auth/tools.py,sha256=QrzYa5OuTxpBug2hcV5GxqrtRHp3Y5IWy90m-tdDyYA,800
|
|
8
8
|
monopyly/banking/accounts.py,sha256=9tjmdY0Eyi8Q6aMhUo6kPn_D6HGA_zIBHSBaVCTikEs,9837
|
|
9
9
|
monopyly/banking/actions.py,sha256=bxuNV4-a3yrw0PVkq6BZKYi9M0rmWGnH7OXaHUtI5ZI,1564
|
|
@@ -14,7 +14,7 @@ monopyly/banking/forms.py,sha256=yMJE_uQNtSaWGNV-5I3WP_LWmvpyCWJ3XyJBt21ZknY,105
|
|
|
14
14
|
monopyly/banking/routes.py,sha256=-YPvcjdBW7svCLw-jYClhTHZYiPn5k1bokDqlFna19I,8148
|
|
15
15
|
monopyly/banking/transactions.py,sha256=WAQjEZwaPLnCja5r3E95c_2KkvbQc_s7qmtKvTlID3k,8453
|
|
16
16
|
monopyly/cli/apps.py,sha256=Y2IwoXzRDwGDXPO770aSYPmBwJQCxRcg8MH6SJfr5_c,2688
|
|
17
|
-
monopyly/cli/run.py,sha256=
|
|
17
|
+
monopyly/cli/run.py,sha256=9ILH7hR3PaEDm6KPIkUJUNEADjLucM09iozwgwYstr8,3750
|
|
18
18
|
monopyly/common/transactions.py,sha256=c7OUUI4VDh3byORPoIC8GFScNuajBofBHshmfXRi1fI,12194
|
|
19
19
|
monopyly/common/utils.py,sha256=l10-pioN_03nqs_hgF8rzAlWA0V62W5k7iIrXQZYUd8,5775
|
|
20
20
|
monopyly/common/forms/__init__.py,sha256=6iFTlcoaQmCbrjS1KfFhWXQUfyqnA-vKPMVxLyJMlXY,120
|
|
@@ -23,8 +23,8 @@ monopyly/common/forms/fields.py,sha256=tJ4Xqrm7y6dYNLzpsq85lFxN20V6cDAfUF6DstzUV
|
|
|
23
23
|
monopyly/common/forms/utils.py,sha256=wHkLP7u5m2uuglunXR22TablKB7Uoj-UWs2rYkJzhqM,5685
|
|
24
24
|
monopyly/common/forms/validators.py,sha256=dM1WHEJTWpSH2u4oxU3PyIO7lY4fyN6PtRsUS8Ie0cI,1204
|
|
25
25
|
monopyly/config/__init__.py,sha256=pW2lHNhsdM2gRjLAWumnLUHZMAOEdprX4aXaONwo6AY,73
|
|
26
|
-
monopyly/config/default_settings.py,sha256=
|
|
27
|
-
monopyly/config/settings.py,sha256=
|
|
26
|
+
monopyly/config/default_settings.py,sha256=ZMKM20TPRymOXA21o3VcTNc0yQyPG5iGtwRe7_tMtQU,1828
|
|
27
|
+
monopyly/config/settings.py,sha256=xOgnXypQPa0TRyAR1wFItBYM7sR-EJzPPmov6X-tiwY,1983
|
|
28
28
|
monopyly/core/actions.py,sha256=cUofmjHKWvdSgEQutzihFK378C5MpXl8fttcOWtMVeY,1219
|
|
29
29
|
monopyly/core/blueprint.py,sha256=UevEYMNdzknzKBr31Zy5ZrGRgKI1lr4tNcFt9MV6tqA,251
|
|
30
30
|
monopyly/core/context_processors.py,sha256=5zFKgd5QIDTZqqQmjHpCGhwTf1j5WNMCqGegfYRQaak,820
|
|
@@ -46,7 +46,7 @@ monopyly/database/preloads.sql,sha256=KBS_WYRofFdOVN-IgHzZhfyJrY6ZOwHeExN-fQr3ht
|
|
|
46
46
|
monopyly/database/schema.sql,sha256=cdl9b5CnYrnQ-lck147GtwArx_JJbX1vF9YYLivTeyw,4660
|
|
47
47
|
monopyly/database/views.sql,sha256=UTO2QRkVTfQ12bMVkR-O6Qv80DvYo8hngPHn2A1_1F8,3853
|
|
48
48
|
monopyly/static/jquery-3.7.0.min.js,sha256=04il7wcoVNR_kfD9wGOJXa7srKwhMEPkB6-NOJMQsZ8,130
|
|
49
|
-
monopyly/static/css/style.css,sha256=
|
|
49
|
+
monopyly/static/css/style.css,sha256=TKU9Uzj7iEBNcTARinZ1fsTI4Y-qePHQAZdBKspSjkk,48860
|
|
50
50
|
monopyly/static/favicon/browserconfig.xml,sha256=Zt_AVOxiritWWXoUwPsHpx4vu4kM_butdFVzoYCYbM8,315
|
|
51
51
|
monopyly/static/favicon/favicon-114.png,sha256=kjElVFiix-kFCMdADkLpJsi8kL3GDsFm85oJhyCH-C0,20601
|
|
52
52
|
monopyly/static/favicon/favicon-120.png,sha256=g4uzHMdW0MlJhcgWfrOsj2MB2D-HdLa4t60_hvyICkM,22077
|
|
@@ -108,13 +108,13 @@ monopyly/static/js/add-transfer.js,sha256=_ywQju13wGWTeZMqJXJzVbfquQJhcbDnJQ9EC3
|
|
|
108
108
|
monopyly/static/js/autocomplete-transaction.js,sha256=pZQ7v04WEHcJ7riPparhdF70W3ZDSz9Z0j0N_OVgZ9k,2753
|
|
109
109
|
monopyly/static/js/bind-tag-actions.js,sha256=77irMXyRYuDlNMDck2TQ2WNQ9VrrZdKRDj3OchWut2s,3620
|
|
110
110
|
monopyly/static/js/create-balance-chart.js,sha256=2g5JEVWmoKwqKIvkMu4hjE2iayt74w8jqFRkElbCfEQ,2429
|
|
111
|
-
monopyly/static/js/define-filter.js,sha256=
|
|
111
|
+
monopyly/static/js/define-filter.js,sha256=CRnXOAHAF8pNEd0YlWAkZ_Bs3TaIDHZlrIhEH-NzskM,1134
|
|
112
112
|
monopyly/static/js/display-new-account-type-inputs.js,sha256=iHh7zSnyHc_-FIPO1Uuffjd8mFvfqfECMzO34FB_WF4,555
|
|
113
113
|
monopyly/static/js/display-new-bank-inputs.js,sha256=yI6wOof9aMI_8k06hSzPszzb1SOvf0WTHyEwiiJnIt4,472
|
|
114
114
|
monopyly/static/js/display-new-credit-account-inputs.js,sha256=iDlAANPZWQ2pjBcNJ8KvYn91DwBxz-hr4FzKCTayXaY,798
|
|
115
115
|
monopyly/static/js/expand-bank-account.js,sha256=sz5Cj5c8pW0lXYqqurrPWr-HZKNjrTzDffwTZR8eKyg,596
|
|
116
116
|
monopyly/static/js/expand-bank.js,sha256=vb1DTCOidQgQzX0FC-7Zwk-Poc-e38mpORgWG_LtczM,558
|
|
117
|
-
monopyly/static/js/expand-transaction.js,sha256=
|
|
117
|
+
monopyly/static/js/expand-transaction.js,sha256=bQYnP8rNvS5mjDpt0RRzG5Rgu1DVKdUHjNuoISv9-vI,596
|
|
118
118
|
monopyly/static/js/flip-card.js,sha256=4a65JFO7kf4qzZ-8wvWiiO_BwZpiWO2cHHzZugXRoAQ,720
|
|
119
119
|
monopyly/static/js/hide-homepage-block.js,sha256=Yw3m5sc5dO6pDh2VUzJu1re4NXZcuSLSMs6Acou_rHo,495
|
|
120
120
|
monopyly/static/js/infer-card.js,sha256=WIDXWhfF4gXdlRCo2OA0IpSsszxDTkV7ZSb6Qo7pheA,1790
|
|
@@ -126,16 +126,16 @@ monopyly/static/js/update-bank-name.js,sha256=4nEkCTEK32y9v7WAgjQymKFxM_HTFRwdfG
|
|
|
126
126
|
monopyly/static/js/update-card-status.js,sha256=kvTL_jcRbbkOXI8aqkli09b1oYKIQyxvaXlaI73_QYQ,1296
|
|
127
127
|
monopyly/static/js/update-statement-parameters.js,sha256=Mb8WN1BZZeoGn-9TTDDU_vULBemttersznpjQksT5X8,792
|
|
128
128
|
monopyly/static/js/update-statements-display.js,sha256=aaOa254und1lkzGIL8uDiezGpY6iUqKFtxTWdfRBFQA,1321
|
|
129
|
-
monopyly/static/js/update-transactions-display.js,sha256=
|
|
129
|
+
monopyly/static/js/update-transactions-display.js,sha256=LvE0pu4rO0SmilhejcXfeoUWvnj3YF6KMPj2Al9Ovu8,2408
|
|
130
130
|
monopyly/static/js/modules/ajax.js,sha256=nIVPaedJ-KanhEqsF74K5Zo89SFHg1eEC7FFa4etbNw,759
|
|
131
131
|
monopyly/static/js/modules/autocomplete-input.js,sha256=cJJSP-pv7F9SL6cCudYMjMKIp7h7YzFrmeKg00tPPNo,8035
|
|
132
132
|
monopyly/static/js/modules/expand-box-row.js,sha256=KO7ojKhEYB52wQLDHB2hRUEGGtukjpdpHMJMNM5nr40,708
|
|
133
|
-
monopyly/static/js/modules/expand-transaction.js,sha256=
|
|
133
|
+
monopyly/static/js/modules/expand-transaction.js,sha256=T5Bvm68d-0Nf_OEM7_cnrEvBeW_ERVGIJfdBpgcm9TI,3809
|
|
134
134
|
monopyly/static/js/modules/manage-acquisition-form.js,sha256=hJCg5Fc2UXDgRL-jFIirKeYQ4vFvlG6IfLE_zH_Ety0,2089
|
|
135
135
|
monopyly/static/js/modules/manage-overlays.js,sha256=gCE1qTT_0RG6a5OX9PrFOc-KLmqz4l8bC8HugsoAkiI,1848
|
|
136
136
|
monopyly/static/js/modules/manage-subforms.js,sha256=-yKA7l8ZI0294auTI307LrKkw_Bl6I8suwK4VLuLhMc,2197
|
|
137
137
|
monopyly/static/js/modules/update-database-widget.js,sha256=S67hmqaGwzbPy94IjYrag0ZPOur4r5y_tb3_5t7xuYI,1581
|
|
138
|
-
monopyly/static/js/modules/update-display-ajax.js,sha256=
|
|
138
|
+
monopyly/static/js/modules/update-display-ajax.js,sha256=MJBiRMmeIHRG7lLbqIcXkUecKNNMFFVJXwhs_N8LKl0,878
|
|
139
139
|
monopyly/templates/credits.html,sha256=U2lOe7XrW1Rt9DCvo7pRxHDzRzBnYxHjX3cS5z36NI8,506
|
|
140
140
|
monopyly/templates/index.html,sha256=czjm5IfP20tib0rlxde2TTKdr5u5zfjDLTrQAbbxJ88,4309
|
|
141
141
|
monopyly/templates/layout.html,sha256=ETQ7fNC4H0JjZZTnamZoJKwXbsXEHW72ZhahOER3NkQ,4741
|
|
@@ -197,9 +197,9 @@ monopyly/templates/credit/transactions_table/condensed_row_content.html,sha256=W
|
|
|
197
197
|
monopyly/templates/credit/transactions_table/expanded_row_content.html,sha256=oL1BqlEC3H6s3fSI9Vb65DLL-P9OPliPqqiGL4av4Xs,1971
|
|
198
198
|
monopyly/templates/credit/transactions_table/transaction_field_titles.html,sha256=km-3YEDJaygwcKV-rwYnrE7xF8u4Z7jCBsk0Ia-LO-M,758
|
|
199
199
|
monopyly/templates/credit/transactions_table/transactions.html,sha256=tcppv0qNV-Qq6U5jfxoNyGKPXmyV9h9nR6rw4jXfBsY,481
|
|
200
|
-
monopyly-1.4.
|
|
201
|
-
monopyly-1.4.
|
|
202
|
-
monopyly-1.4.
|
|
203
|
-
monopyly-1.4.
|
|
204
|
-
monopyly-1.4.
|
|
205
|
-
monopyly-1.4.
|
|
200
|
+
monopyly-1.4.3.dist-info/METADATA,sha256=7z4oX_MQ_eKQI6N3a2I0DJdJSd_oELTsu5oCTqThomo,10164
|
|
201
|
+
monopyly-1.4.3.dist-info/WHEEL,sha256=Fd6mP6ydyRguakwUJ05oBE7fh2IPxgtDN9IwHJ9OqJQ,87
|
|
202
|
+
monopyly-1.4.3.dist-info/entry_points.txt,sha256=ANAwWNF6IG83opRITM2P9i_im_b6qLdG1n7dAcS2ZNU,51
|
|
203
|
+
monopyly-1.4.3.dist-info/licenses/COPYING,sha256=5X8cMguM-HmKfS_4Om-eBqM6A1hfbgZf6pfx2G24QFI,35150
|
|
204
|
+
monopyly-1.4.3.dist-info/licenses/LICENSE,sha256=94rIicMccmTPhqXiRLV9JsU8P2ocMuEUUtUpp6LPKiE,253
|
|
205
|
+
monopyly-1.4.3.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|