aa-buybackprogram 2.3.4__tar.gz → 3.0.0__tar.gz
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.
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/PKG-INFO +136 -5
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/README.md +132 -1
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/buybackprogram/__init__.py +1 -1
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/buybackprogram/admin.py +7 -1
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/buybackprogram/app_settings.py +20 -0
- aa_buybackprogram-3.0.0/buybackprogram/auth_hooks.py +83 -0
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/buybackprogram/constants.py +1 -0
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/buybackprogram/forms.py +136 -4
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/buybackprogram/helpers.py +212 -9
- aa_buybackprogram-3.0.0/buybackprogram/migrations/0018_structurenamecache_alter_general_options_and_more.py +566 -0
- aa_buybackprogram-3.0.0/buybackprogram/models.py +2656 -0
- aa_buybackprogram-3.0.0/buybackprogram/notes.py +218 -0
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/buybackprogram/notification.py +39 -0
- aa_buybackprogram-3.0.0/buybackprogram/providers.py +11 -0
- aa_buybackprogram-3.0.0/buybackprogram/static/buybackprogram/css/style_dark.css +915 -0
- aa_buybackprogram-3.0.0/buybackprogram/static/buybackprogram/css/style_light.css +865 -0
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/buybackprogram/static/buybackprogram/js/autocomplete.js +6 -0
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/buybackprogram/tasks.py +178 -22
- aa_buybackprogram-3.0.0/buybackprogram/templates/buybackprogram/base.html +38 -0
- aa_buybackprogram-3.0.0/buybackprogram/templates/buybackprogram/bundles/buybackprogram-css-light.html +6 -0
- aa_buybackprogram-3.0.0/buybackprogram/templates/buybackprogram/contract_details.html +150 -0
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/buybackprogram/templates/buybackprogram/faq.html +1 -1
- aa_buybackprogram-3.0.0/buybackprogram/templates/buybackprogram/index.html +168 -0
- aa_buybackprogram-3.0.0/buybackprogram/templates/buybackprogram/leaderboards.html +119 -0
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/buybackprogram/templates/buybackprogram/location_add.html +2 -2
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/buybackprogram/templates/buybackprogram/page.html +1 -1
- aa_buybackprogram-3.0.0/buybackprogram/templates/buybackprogram/partials/base/menu-management.html +37 -0
- aa_buybackprogram-3.0.0/buybackprogram/templates/buybackprogram/partials/base/menu-reverse-management.html +27 -0
- aa_buybackprogram-3.0.0/buybackprogram/templates/buybackprogram/partials/base/menu-reverse.html +53 -0
- aa_buybackprogram-3.0.0/buybackprogram/templates/buybackprogram/partials/base/menu.html +92 -0
- aa_buybackprogram-3.0.0/buybackprogram/templates/buybackprogram/partials/calculate/calculation_success.html +32 -0
- aa_buybackprogram-3.0.0/buybackprogram/templates/buybackprogram/partials/calculate/contract_settings.html +31 -0
- aa_buybackprogram-3.0.0/buybackprogram/templates/buybackprogram/partials/calculate/invoice.html +50 -0
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/buybackprogram/templates/buybackprogram/partials/details/contract-info.html +4 -0
- aa_buybackprogram-3.0.0/buybackprogram/templates/buybackprogram/partials/details/tabs/tabs-navigation.html +21 -0
- aa_buybackprogram-3.0.0/buybackprogram/templates/buybackprogram/partials/stats/tabs/finished.html +50 -0
- aa_buybackprogram-3.0.0/buybackprogram/templates/buybackprogram/partials/stats/tabs/outstanding.html +50 -0
- aa_buybackprogram-3.0.0/buybackprogram/templates/buybackprogram/partials/stats/tabs/untracked.html +48 -0
- aa_buybackprogram-3.0.0/buybackprogram/templates/buybackprogram/partials/stats/tabs/wallet_overview.html +36 -0
- aa_buybackprogram-3.0.0/buybackprogram/templates/buybackprogram/performance.html +248 -0
- aa_buybackprogram-3.0.0/buybackprogram/templates/buybackprogram/program_add.html +59 -0
- aa_buybackprogram-3.0.0/buybackprogram/templates/buybackprogram/program_calculate.html +91 -0
- aa_buybackprogram-3.0.0/buybackprogram/templates/buybackprogram/program_edit.html +65 -0
- aa_buybackprogram-3.0.0/buybackprogram/templates/buybackprogram/program_edit_item.html +43 -0
- aa_buybackprogram-3.0.0/buybackprogram/templates/buybackprogram/program_edit_marketgroup.html +43 -0
- aa_buybackprogram-3.0.0/buybackprogram/templates/buybackprogram/program_edit_static_price.html +43 -0
- aa_buybackprogram-3.0.0/buybackprogram/templates/buybackprogram/program_edit_watchlist.html +46 -0
- aa_buybackprogram-3.0.0/buybackprogram/templates/buybackprogram/program_special_taxes.html +205 -0
- aa_buybackprogram-3.0.0/buybackprogram/templates/buybackprogram/reverse_program/reverse_calculate.html +424 -0
- aa_buybackprogram-3.0.0/buybackprogram/templates/buybackprogram/reverse_program/reverse_contract_details.html +138 -0
- aa_buybackprogram-3.0.0/buybackprogram/templates/buybackprogram/reverse_program/reverse_index.html +152 -0
- aa_buybackprogram-3.0.0/buybackprogram/templates/buybackprogram/reverse_program/reverse_program_add.html +59 -0
- aa_buybackprogram-3.0.0/buybackprogram/templates/buybackprogram/reverse_program/reverse_program_edit.html +64 -0
- aa_buybackprogram-3.0.0/buybackprogram/templates/buybackprogram/reverse_program/reverse_program_stats.html +171 -0
- aa_buybackprogram-3.0.0/buybackprogram/templates/buybackprogram/reverse_program/reverse_stats.html +167 -0
- aa_buybackprogram-3.0.0/buybackprogram/templates/buybackprogram/stats.html +88 -0
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/buybackprogram/templates/buybackprogram/user_settings.html +2 -2
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/buybackprogram/templatetags/program_settings.py +78 -0
- aa_buybackprogram-3.0.0/buybackprogram/tests/test_data_migrations.log +2 -0
- aa_buybackprogram-3.0.0/buybackprogram/tests/test_helpers.py +68 -0
- aa_buybackprogram-3.0.0/buybackprogram/tests/test_models.py +492 -0
- aa_buybackprogram-3.0.0/buybackprogram/tests/test_reverse_buyback.py +501 -0
- aa_buybackprogram-3.0.0/buybackprogram/tests/test_reverse_contract_notifications.py +474 -0
- aa_buybackprogram-3.0.0/buybackprogram/tests/test_views.py +330 -0
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/buybackprogram/tests/testdata/factories.py +131 -12
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/buybackprogram/urls.py +80 -0
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/buybackprogram/utils.py +21 -0
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/buybackprogram/views/calculate.py +232 -8
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/buybackprogram/views/common.py +80 -41
- aa_buybackprogram-3.0.0/buybackprogram/views/programs.py +591 -0
- aa_buybackprogram-3.0.0/buybackprogram/views/special_taxes.py +372 -0
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/buybackprogram/views/stats.py +306 -14
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/pyproject.toml +3 -3
- aa_buybackprogram-2.3.4/buybackprogram/auth_hooks.py +0 -35
- aa_buybackprogram-2.3.4/buybackprogram/models.py +0 -1450
- aa_buybackprogram-2.3.4/buybackprogram/notes.py +0 -215
- aa_buybackprogram-2.3.4/buybackprogram/providers.py +0 -16
- aa_buybackprogram-2.3.4/buybackprogram/static/buybackprogram/css/style_dark.css +0 -623
- aa_buybackprogram-2.3.4/buybackprogram/static/buybackprogram/css/style_light.css +0 -628
- aa_buybackprogram-2.3.4/buybackprogram/templates/buybackprogram/base.html +0 -28
- aa_buybackprogram-2.3.4/buybackprogram/templates/buybackprogram/bundles/buybackprogram-css-light.html +0 -2
- aa_buybackprogram-2.3.4/buybackprogram/templates/buybackprogram/contract_details.html +0 -76
- aa_buybackprogram-2.3.4/buybackprogram/templates/buybackprogram/index.html +0 -91
- aa_buybackprogram-2.3.4/buybackprogram/templates/buybackprogram/leaderboards.html +0 -93
- aa_buybackprogram-2.3.4/buybackprogram/templates/buybackprogram/partials/base/menu-management.html +0 -19
- aa_buybackprogram-2.3.4/buybackprogram/templates/buybackprogram/partials/base/menu.html +0 -44
- aa_buybackprogram-2.3.4/buybackprogram/templates/buybackprogram/partials/calculate/calculation_success.html +0 -2
- aa_buybackprogram-2.3.4/buybackprogram/templates/buybackprogram/partials/calculate/contract_settings.html +0 -40
- aa_buybackprogram-2.3.4/buybackprogram/templates/buybackprogram/partials/calculate/invoice.html +0 -43
- aa_buybackprogram-2.3.4/buybackprogram/templates/buybackprogram/partials/details/tabs/tabs-navigation.html +0 -30
- aa_buybackprogram-2.3.4/buybackprogram/templates/buybackprogram/partials/stats/tabs/finished.html +0 -53
- aa_buybackprogram-2.3.4/buybackprogram/templates/buybackprogram/partials/stats/tabs/outstanding.html +0 -53
- aa_buybackprogram-2.3.4/buybackprogram/templates/buybackprogram/partials/stats/tabs/untracked.html +0 -55
- aa_buybackprogram-2.3.4/buybackprogram/templates/buybackprogram/performance.html +0 -293
- aa_buybackprogram-2.3.4/buybackprogram/templates/buybackprogram/program_add.html +0 -27
- aa_buybackprogram-2.3.4/buybackprogram/templates/buybackprogram/program_calculate.html +0 -94
- aa_buybackprogram-2.3.4/buybackprogram/templates/buybackprogram/program_edit.html +0 -33
- aa_buybackprogram-2.3.4/buybackprogram/templates/buybackprogram/program_edit_item.html +0 -35
- aa_buybackprogram-2.3.4/buybackprogram/templates/buybackprogram/program_edit_marketgroup.html +0 -35
- aa_buybackprogram-2.3.4/buybackprogram/templates/buybackprogram/program_special_taxes.html +0 -65
- aa_buybackprogram-2.3.4/buybackprogram/templates/buybackprogram/stats.html +0 -52
- aa_buybackprogram-2.3.4/buybackprogram/tests/test_helpers.py +0 -31
- aa_buybackprogram-2.3.4/buybackprogram/tests/test_models.py +0 -340
- aa_buybackprogram-2.3.4/buybackprogram/views/programs.py +0 -281
- aa_buybackprogram-2.3.4/buybackprogram/views/special_taxes.py +0 -213
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/LICENSE +0 -0
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/buybackprogram/apps.py +0 -0
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/buybackprogram/decorators.py +0 -0
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/buybackprogram/management/__init__.py +0 -0
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/buybackprogram/management/commands/__init__.py +0 -0
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/buybackprogram/management/commands/buybackprogram_generate_test_data.py +0 -0
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/buybackprogram/management/commands/buybackprogram_link_contracts.py +0 -0
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/buybackprogram/management/commands/buybackprogram_load_data.py +0 -0
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/buybackprogram/management/commands/buybackprogram_load_prices.py +0 -0
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/buybackprogram/management/commands/generate_dummy_data.py +0 -0
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/buybackprogram/migrations/0001_initial.py +0 -0
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/buybackprogram/migrations/0002_contractnotification.py +0 -0
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/buybackprogram/migrations/0003_statics_performance_increase.py +0 -0
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/buybackprogram/migrations/0004_auto_20220323_1331.py +0 -0
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/buybackprogram/migrations/0005_program_compression_price_dencity_modifier.py +0 -0
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/buybackprogram/migrations/0006_program_bonds_npc_price_and_more.py +0 -0
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/buybackprogram/migrations/0007_program_expiration.py +0 -0
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/buybackprogram/migrations/0008_alter_general_options_alter_program_refining_rate.py +0 -0
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/buybackprogram/migrations/0009_contract_location_name.py +0 -0
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/buybackprogram/migrations/0010_contract_no_tracking_alter_tracking_tracking_number.py +0 -0
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/buybackprogram/migrations/0011_delete_duplicated_contracts.py +0 -0
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/buybackprogram/migrations/0012_make_contract_id_unique.py +0 -0
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/buybackprogram/migrations/0013_program_discord_show_item_list.py +0 -0
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/buybackprogram/migrations/0014_program_price_type.py +0 -0
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/buybackprogram/migrations/0015_faq_contractnotification_header_and_more.py +0 -0
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/buybackprogram/migrations/0016_alter_program_compression_price_dencity_modifier.py +0 -0
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/buybackprogram/migrations/0017_alter_contract_price_alter_contract_volume_and_more.py +0 -0
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/buybackprogram/migrations/__init__.py +0 -0
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/buybackprogram/static/buybackprogram/css/billboards_dark.css +0 -0
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/buybackprogram/static/buybackprogram/css/billboards_light.css +0 -0
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/buybackprogram/static/buybackprogram/images/help.png +0 -0
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/buybackprogram/static/buybackprogram/js/bootstrap-autocomplete.min.js +0 -0
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/buybackprogram/swagger.json +0 -0
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/buybackprogram/templates/buybackprogram/partials/calculate/accepted_locations.html +0 -0
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/buybackprogram/templates/buybackprogram/partials/calculate/item_details.html +0 -0
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/buybackprogram/templates/buybackprogram/partials/details/accepted-locations.html +0 -0
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/buybackprogram/templates/buybackprogram/partials/details/invoice.html +0 -0
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/buybackprogram/templates/buybackprogram/partials/details/tabs/contract-items.html +0 -0
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/buybackprogram/templates/buybackprogram/partials/details/tabs/original-items.html +0 -0
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/buybackprogram/templates/buybackprogram/partials/details/warning.html +0 -0
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/buybackprogram/templates/buybackprogram/partials/stats/summary.html +0 -0
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/buybackprogram/templates/buybackprogram/partials/stats/tabs/tabs-navigation.html +0 -0
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/buybackprogram/templates/buybackprogram/partials/stats/warning.html +0 -0
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/buybackprogram/templatetags/__init__.py +0 -0
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/buybackprogram/templatetags/bs_tab_color_class.py +0 -0
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/buybackprogram/templatetags/help_icons.py +0 -0
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/buybackprogram/templatetags/price_formats.py +0 -0
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/buybackprogram/tests/__init__.py +0 -0
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/buybackprogram/tests/test_data_migrations.py +0 -0
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/buybackprogram/tests/testdata/__init__.py +0 -0
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/buybackprogram/tests/testdata/create_eveuniverse.py +0 -0
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/buybackprogram/tests/testdata/eveuniverse.json +0 -0
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/buybackprogram/tests/testdata/load_eveuniverse.py +0 -0
- {aa_buybackprogram-2.3.4 → aa_buybackprogram-3.0.0}/buybackprogram/views/__init__.py +0 -0
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: aa-buybackprogram
|
|
3
|
-
Version:
|
|
3
|
+
Version: 3.0.0
|
|
4
4
|
Summary: Buyback program plugin app for Alliance Auth.
|
|
5
5
|
Author-email: Ikarus Cesaille <contact@eve-linknet.com>
|
|
6
|
-
Requires-Python: >=3.
|
|
6
|
+
Requires-Python: >=3.10
|
|
7
7
|
Description-Content-Type: text/markdown
|
|
8
8
|
Classifier: Environment :: Web Environment
|
|
9
9
|
Classifier: Framework :: Django
|
|
@@ -20,8 +20,8 @@ Classifier: Topic :: Internet :: WWW/HTTP
|
|
|
20
20
|
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
|
|
21
21
|
License-File: LICENSE
|
|
22
22
|
Requires-Dist: allianceauth-app-utils>=1.18.0
|
|
23
|
-
Requires-Dist: allianceauth
|
|
24
|
-
Requires-Dist: django-eveuniverse>=
|
|
23
|
+
Requires-Dist: allianceauth>=4.6.0,<6.0.0
|
|
24
|
+
Requires-Dist: django-eveuniverse >= 2.0.0
|
|
25
25
|
Project-URL: Homepage, https://gitlab.com/paulipa/allianceauth-buyback-program
|
|
26
26
|
|
|
27
27
|
# Buyback Program
|
|
@@ -50,6 +50,7 @@ An Alliance Auth app for creating buyback programs and to allow users calculate
|
|
|
50
50
|
|
|
51
51
|
## Features
|
|
52
52
|
|
|
53
|
+
- Authenticated or Public access*
|
|
53
54
|
- Multiple programs with their own settings
|
|
54
55
|
- Multiple owners
|
|
55
56
|
- Supports corporation and character owners
|
|
@@ -62,6 +63,9 @@ An Alliance Auth app for creating buyback programs and to allow users calculate
|
|
|
62
63
|
- Hauling fuel cost
|
|
63
64
|
- Dynamic low price density tax
|
|
64
65
|
- NPC price for NPC buy orders
|
|
66
|
+
- Static prices per item
|
|
67
|
+
- Manual review watchlist for items or groups
|
|
68
|
+
- Use refined rate for meta 1-4 items
|
|
65
69
|
- Best price variant for ore:
|
|
66
70
|
- Supports raw, compressed, refined and any combination of the 3.
|
|
67
71
|
- Will calculate price by the best available pricing method
|
|
@@ -95,6 +99,18 @@ An Alliance Auth app for creating buyback programs and to allow users calculate
|
|
|
95
99
|
- Notifications for new contracts
|
|
96
100
|
- For [aa-discordbot](https://github.com/pvyParts/allianceauth-discordbot)
|
|
97
101
|
- For [discordproxy](https://gitlab.com/ErikKalkoken/discordproxy)
|
|
102
|
+
- Reverse buyback programs:
|
|
103
|
+
- Owner lists items available for purchase from their hangar
|
|
104
|
+
- Players submit buy requests and receive a tracking number
|
|
105
|
+
- Stock automatically synced from ESI corporation assets
|
|
106
|
+
- Supports public access without login
|
|
107
|
+
- Restrict visibility to groups and states (same as normal programs)
|
|
108
|
+
- Manager program statistics page showing all buy requests
|
|
109
|
+
- Individual contract detail pages with item comparison and notifications
|
|
110
|
+
- Security:
|
|
111
|
+
- Tracking detail pages restricted to issuer and managers by default
|
|
112
|
+
- Group and state visibility restrictions on all program types
|
|
113
|
+
- Ownership checks on all management actions
|
|
98
114
|
|
|
99
115
|
## Installation
|
|
100
116
|
|
|
@@ -119,6 +135,9 @@ Update the Eve Online API app used for authentication in your AA installation to
|
|
|
119
135
|
- `esi-contracts.read_character_contracts.v1`
|
|
120
136
|
- `esi-contracts.read_corporation_contracts.v1`
|
|
121
137
|
- `esi-universe.read_structures.v1`
|
|
138
|
+
- `esi-wallet.read_corporation_wallets.v1`
|
|
139
|
+
- `esi-corporations.read_divisions.v1`
|
|
140
|
+
- `esi-assets.read_corporation_assets.v1`
|
|
122
141
|
|
|
123
142
|
### Step 4 - Data Preload
|
|
124
143
|
|
|
@@ -166,6 +185,17 @@ CELERYBEAT_SCHEDULE['buybackprogram_update_program_performance'] = {
|
|
|
166
185
|
'task': 'buybackprogram.tasks.update_program_performance',
|
|
167
186
|
'schedule': crontab(minute=0, hour='0'),
|
|
168
187
|
}
|
|
188
|
+
|
|
189
|
+
# Buybackprogram wallet sync, updates wallet balances and names every hour
|
|
190
|
+
CELERYBEAT_SCHEDULE['buybackprogram_update_all_wallets'] = {
|
|
191
|
+
'task': 'buybackprogram.update_all_wallets',
|
|
192
|
+
'schedule': crontab(minute=0),
|
|
193
|
+
}
|
|
194
|
+
# Buybackprogram hangar stock sync, updates reverse buyback stock every 30 minutes
|
|
195
|
+
CELERYBEAT_SCHEDULE['buybackprogram_update_all_hangars'] = {
|
|
196
|
+
'task': 'buybackprogram.tasks.update_all_hangars',
|
|
197
|
+
'schedule': crontab(minute='*/30'),
|
|
198
|
+
}
|
|
169
199
|
```
|
|
170
200
|
|
|
171
201
|
#### Additional settings
|
|
@@ -174,6 +204,9 @@ You may change the following settings by adding the lines in your `local.py` set
|
|
|
174
204
|
|
|
175
205
|
Name | Description | Default | Options
|
|
176
206
|
-- | -- | -- | --
|
|
207
|
+
BUYBACKPROGRAM_ENABLE_REVERSE_BUYBACK | Enable or disable the reverse buyback feature entirely. When disabled the menu item will not appear. | True | `True`, `False`
|
|
208
|
+
BUYBACKPROGRAM_DISALLOW_CONTRACTS_WITH_ANY_DISALLOWED_ITEMS | Prevents price calculations if there are any disallowed items in the parsed list | False | `True`, `False`
|
|
209
|
+
BUYBACKPROGRAM_SHOW_LOCATION_COUNT | How many locations we will show on buyback index page before we change it to a pop-up show all locations button | 4 | Integer
|
|
177
210
|
BUYBACKPROGRAM_TRACKING_PREFILL | This is the prefill tag you will have on the tracking description for your contracts | aa-bbp. | Free text input
|
|
178
211
|
BUYBACKPROGRAM_PRICE_SOURCE_ID | Station ID for fetching base prices. Supports IDs listed on [Fuzzwork API](https://market.fuzzwork.co.uk/api/). Does not work with Janice API!| 60003760 | See ID list
|
|
179
212
|
BUYBACKPROGRAM_PRICE_SOURCE_NAME | Display name of your price source. Has no effect on the actual price fetch which uses the ID. | Jita | Free text input
|
|
@@ -183,6 +216,7 @@ BUYBACKPROGRAM_PRICE_INSTANT_PRICES | On default we use top 5% average prices. S
|
|
|
183
216
|
BUYBACKPROGRAM_PRICE_JANICE_API_KEY | The API key to access Janice API. | `null` | `G9KwKq3465588VPd6747t95Zh94q3W2E`
|
|
184
217
|
BUYBACKPROGRAM_UNUSED_TRACKING_PURGE_LIMIT | Time limit to remove unlinked tracking objects from the database. Set to 0 to never purge any tracking objects. | 48 | Any number in hours
|
|
185
218
|
BUYBACKPROGRAM_TRACK_PREFILL_CONTRACTS | Determines if we will track and store contracts that starts with the prefill phrase but do not have any actual tracking hits in database | True | `True`, `False`
|
|
219
|
+
BUYBACKPROGRAM_RESTRICT_TRACKING_DETAILS | When True, only the contract issuer and managers can view tracking detail pages via direct URL. Set to False to allow any authenticated basic_access user to view any tracking detail. | False | `True`, `False`
|
|
186
220
|
|
|
187
221
|
Note: If you change your price source for an old install you need to wait for the price update task to run or manually run it to update your current database prices.
|
|
188
222
|
|
|
@@ -199,6 +233,7 @@ manage_programs | Can create new locations and buyback programs and manage their
|
|
|
199
233
|
see_leaderboard | Can see the leaderboard stats for the programs that are visible for the user | Member State
|
|
200
234
|
see_performance | Can see the performance stats for the programs that are visible to the user | Member / Managers
|
|
201
235
|
see_all_statics | Can see all statistics in all buyback programs | Leadership
|
|
236
|
+
manage_all_programs | Can manage any program | Leadership
|
|
202
237
|
|
|
203
238
|
### Step 7 - Program Setup
|
|
204
239
|
|
|
@@ -368,12 +403,39 @@ You can send notifications about new contracts directly into the discord channel
|
|
|
368
403
|
|
|
369
404
|
> :information_source: Requires the [aa-discordbot plugin](https://github.com/pvyParts/allianceauth-discordbot) or [discordproxy app](https://gitlab.com/ErikKalkoken/discordproxy) to work
|
|
370
405
|
|
|
371
|
-
|
|
406
|
+
#### Program wallet
|
|
407
|
+
This wallet information will be displayed on the tracking page allowing you to see your selected wallet balance when checking on outstanding contracts.
|
|
408
|
+
|
|
409
|
+
#### Use reprocessed value for T1/Named (Meta 1-4)
|
|
410
|
+
|
|
411
|
+
You can value T1 (meta 1-4 items) with refined output instead of the actual item price.
|
|
412
|
+
|
|
413
|
+
#### T1 Material refining yeld
|
|
414
|
+
|
|
415
|
+
Similar to ore reprocessing yield you determine the T1 (meta 1-4) item refining yield. This only applies if the `Use reprocessed value for T1/Named (Meta 1-4)` option is selected.
|
|
416
|
+
|
|
417
|
+
#### Public Program
|
|
418
|
+
|
|
419
|
+
If you want to allow unauthenticated users (people without an Alliance Auth account) to view and use this buyback program, tick the **Public program** box.
|
|
420
|
+
|
|
421
|
+
Public programs will be visible on the buyback index page without login and can be used to calculate prices without authentication. A tracking number is still generated for public submissions so that contracts can be linked to the calculation — the issuer will simply show as an anonymous user in the statistics page.
|
|
422
|
+
|
|
423
|
+
> :warning: Public programs bypass all group and state restrictions. Any person with access to your Alliance Auth URL will be able to see and use the program. Do not use this together with group or state restrictions.
|
|
424
|
+
|
|
425
|
+
> :information_source: Enabling public programs requires a one-time server configuration by your Alliance Auth administrator. Add the following to your `local.py`:
|
|
426
|
+
> ```python
|
|
427
|
+
> APPS_WITH_PUBLIC_VIEWS = ["buybackprogram"]
|
|
428
|
+
> ```
|
|
429
|
+
> Without this setting, the public view will not be accessible even if the program is marked as public.
|
|
430
|
+
|
|
431
|
+
### Step 9 - Special Prices
|
|
372
432
|
|
|
373
433
|
You can modify individual item settings or allow items for a program that has set `allow all items = False` via the `special taxes` menu for each program.
|
|
374
434
|
|
|
375
435
|
Set a item specific tax for each item. The tax wil be applied on top of the default tax for the program. You can also disallow an item from being accepted in the contract completely.
|
|
376
436
|
|
|
437
|
+
You can also set **static prices**. Items with static prices are absolute prices and have no taxes or price dencity costs added on them.
|
|
438
|
+
|
|
377
439
|
> :information_source: The item specific tax can also be a negative value allowing you to decrease taxes on certain items.
|
|
378
440
|
|
|
379
441
|
To adjust individual item taxes inside a program click on the `Special taxes` button next to your program.
|
|
@@ -394,6 +456,31 @@ Market group `Minerals` is the bottom market group that includes the standard mi
|
|
|
394
456
|
|
|
395
457
|
Market group `Standard ores` is a parent category and there are no direct items under this category. However this category has child categories such as Veldspar, Jaspet, Scordite which each includes multiple variations of the ores. Adding the `Standard ores` category will add each ore type to the special tax section.
|
|
396
458
|
|
|
459
|
+
### Step 10 - Manual Review Watchlist
|
|
460
|
+
|
|
461
|
+
To protect your buyback program from market manipulation or extremely low-velocity items (such as Officer Modules or rare Abyssal items), you can utilize the Manual Review Watchlist.
|
|
462
|
+
|
|
463
|
+
The Watchlist allows you to flag specific items or entire EVE Market Groups. When a user pastes an inventory containing a watchlisted item into the buyback calculator, the system will automatically:
|
|
464
|
+
|
|
465
|
+
1. Display a purple `fa-search` warning icon next to the item on the user's appraisal result.
|
|
466
|
+
2. Flag the generated tracking object.
|
|
467
|
+
3. Automatically attach a "Suspicious Contract" warning to the manager's Dashboard for that specific contract, ensuring the item is manually reviewed before the contract is accepted.
|
|
468
|
+
|
|
469
|
+
#### Adding Watchlist Rules
|
|
470
|
+
|
|
471
|
+
To manage your watchlist, click the **Special Taxes** button next to your program, and scroll down to the **Manual Review Watchlist** section. Click **Add to Watchlist** to create a new rule.
|
|
472
|
+
|
|
473
|
+
You have two options when adding a rule:
|
|
474
|
+
|
|
475
|
+
* **Item Type:** Start typing to search for a specific EVE item (e.g., "Estamel's Modified Invulnerability Field"). Only that exact item will trigger the warning.
|
|
476
|
+
* **EVE Group:** Start typing to search for a broader EVE item group (e.g., "Officer Modules"). *Any* item that belongs to this group will trigger the warning.
|
|
477
|
+
|
|
478
|
+
> :information_source: **Note:** You can only specify *either* an Item Type *or* an EVE Group for a single rule. You cannot fill out both fields at the same time.
|
|
479
|
+
|
|
480
|
+
#### Deleting Watchlist Rules
|
|
481
|
+
|
|
482
|
+
To remove an item or group from the watchlist, simply click the **Delete** button next to the rule on the Special Taxes dashboard. The change takes effect immediately for all future calculations.
|
|
483
|
+
|
|
397
484
|
#### Most Common Groups
|
|
398
485
|
|
|
399
486
|
Name | Includes | Items
|
|
@@ -404,3 +491,47 @@ Ice Ores | Ores from ice mining | Blue Ice, Dark Glitter, Compressed Blue Ice ..
|
|
|
404
491
|
Minerals | Contains materials for refining Standard Ore | Tritanium, Pyerite ....
|
|
405
492
|
Salvage Materials | Salvage from loot | Armor Plates, Trigger Unit, Ancient Radar Decorrelator ...
|
|
406
493
|
|
|
494
|
+
### Step 11 - Reverse Buyback Programs
|
|
495
|
+
|
|
496
|
+
Reverse buyback programs allow you to sell items from your corporation hangar directly to players. Players submit a buy request, receive a tracking number, and you create a contract to them with the requested items.
|
|
497
|
+
|
|
498
|
+
#### Creating a Reverse Program
|
|
499
|
+
|
|
500
|
+
Click **Reverse Buyback** in the navigation menu, then click **1. Create Reverse Program**.
|
|
501
|
+
|
|
502
|
+
#### Settings
|
|
503
|
+
|
|
504
|
+
##### Name
|
|
505
|
+
A display name for the reverse program.
|
|
506
|
+
|
|
507
|
+
##### Manager
|
|
508
|
+
The character or corporation used as the contract issuer.
|
|
509
|
+
|
|
510
|
+
##### Is Corporation
|
|
511
|
+
If ticked, contracts will be issued from the manager's corporation.
|
|
512
|
+
|
|
513
|
+
##### Location
|
|
514
|
+
The structure where stock is held and contracts will be created. The structure ID must be set on the location for hangar sync to work.
|
|
515
|
+
|
|
516
|
+
##### Price Type
|
|
517
|
+
The base price type used to value items. Default: Sell.
|
|
518
|
+
|
|
519
|
+
##### Sell Markup %
|
|
520
|
+
A markup percentage added on top of the base price.
|
|
521
|
+
|
|
522
|
+
##### Expiration
|
|
523
|
+
Expiration time for contracts created by the owner.
|
|
524
|
+
|
|
525
|
+
##### Public Program
|
|
526
|
+
If enabled, the program is visible and usable without login. Requires `APPS_WITH_PUBLIC_VIEWS = ["buybackprogram"]` in `local.py`.
|
|
527
|
+
|
|
528
|
+
#### Syncing Stock
|
|
529
|
+
|
|
530
|
+
Once your program is created, click **Refresh Stock** in the management menu to pull current hangar contents from ESI. Stock will also update automatically every 30 minutes if the celery beat task is configured.
|
|
531
|
+
|
|
532
|
+
> :information_source: Only items located at a structure with a configured Structure ID will be synced. Make sure your location has a structure ID set.
|
|
533
|
+
|
|
534
|
+
#### How it works for players
|
|
535
|
+
|
|
536
|
+
Players navigate to **Reverse Buyback**, click **Buy** on a program, paste a list of items they want, and submit. The calculator checks availability against current stock and generates a price and tracking number. The player then waits for the owner to create a contract to them using the tracking number as the contract title.
|
|
537
|
+
|
|
@@ -24,6 +24,7 @@ An Alliance Auth app for creating buyback programs and to allow users calculate
|
|
|
24
24
|
|
|
25
25
|
## Features
|
|
26
26
|
|
|
27
|
+
- Authenticated or Public access*
|
|
27
28
|
- Multiple programs with their own settings
|
|
28
29
|
- Multiple owners
|
|
29
30
|
- Supports corporation and character owners
|
|
@@ -36,6 +37,9 @@ An Alliance Auth app for creating buyback programs and to allow users calculate
|
|
|
36
37
|
- Hauling fuel cost
|
|
37
38
|
- Dynamic low price density tax
|
|
38
39
|
- NPC price for NPC buy orders
|
|
40
|
+
- Static prices per item
|
|
41
|
+
- Manual review watchlist for items or groups
|
|
42
|
+
- Use refined rate for meta 1-4 items
|
|
39
43
|
- Best price variant for ore:
|
|
40
44
|
- Supports raw, compressed, refined and any combination of the 3.
|
|
41
45
|
- Will calculate price by the best available pricing method
|
|
@@ -69,6 +73,18 @@ An Alliance Auth app for creating buyback programs and to allow users calculate
|
|
|
69
73
|
- Notifications for new contracts
|
|
70
74
|
- For [aa-discordbot](https://github.com/pvyParts/allianceauth-discordbot)
|
|
71
75
|
- For [discordproxy](https://gitlab.com/ErikKalkoken/discordproxy)
|
|
76
|
+
- Reverse buyback programs:
|
|
77
|
+
- Owner lists items available for purchase from their hangar
|
|
78
|
+
- Players submit buy requests and receive a tracking number
|
|
79
|
+
- Stock automatically synced from ESI corporation assets
|
|
80
|
+
- Supports public access without login
|
|
81
|
+
- Restrict visibility to groups and states (same as normal programs)
|
|
82
|
+
- Manager program statistics page showing all buy requests
|
|
83
|
+
- Individual contract detail pages with item comparison and notifications
|
|
84
|
+
- Security:
|
|
85
|
+
- Tracking detail pages restricted to issuer and managers by default
|
|
86
|
+
- Group and state visibility restrictions on all program types
|
|
87
|
+
- Ownership checks on all management actions
|
|
72
88
|
|
|
73
89
|
## Installation
|
|
74
90
|
|
|
@@ -93,6 +109,9 @@ Update the Eve Online API app used for authentication in your AA installation to
|
|
|
93
109
|
- `esi-contracts.read_character_contracts.v1`
|
|
94
110
|
- `esi-contracts.read_corporation_contracts.v1`
|
|
95
111
|
- `esi-universe.read_structures.v1`
|
|
112
|
+
- `esi-wallet.read_corporation_wallets.v1`
|
|
113
|
+
- `esi-corporations.read_divisions.v1`
|
|
114
|
+
- `esi-assets.read_corporation_assets.v1`
|
|
96
115
|
|
|
97
116
|
### Step 4 - Data Preload
|
|
98
117
|
|
|
@@ -140,6 +159,17 @@ CELERYBEAT_SCHEDULE['buybackprogram_update_program_performance'] = {
|
|
|
140
159
|
'task': 'buybackprogram.tasks.update_program_performance',
|
|
141
160
|
'schedule': crontab(minute=0, hour='0'),
|
|
142
161
|
}
|
|
162
|
+
|
|
163
|
+
# Buybackprogram wallet sync, updates wallet balances and names every hour
|
|
164
|
+
CELERYBEAT_SCHEDULE['buybackprogram_update_all_wallets'] = {
|
|
165
|
+
'task': 'buybackprogram.update_all_wallets',
|
|
166
|
+
'schedule': crontab(minute=0),
|
|
167
|
+
}
|
|
168
|
+
# Buybackprogram hangar stock sync, updates reverse buyback stock every 30 minutes
|
|
169
|
+
CELERYBEAT_SCHEDULE['buybackprogram_update_all_hangars'] = {
|
|
170
|
+
'task': 'buybackprogram.tasks.update_all_hangars',
|
|
171
|
+
'schedule': crontab(minute='*/30'),
|
|
172
|
+
}
|
|
143
173
|
```
|
|
144
174
|
|
|
145
175
|
#### Additional settings
|
|
@@ -148,6 +178,9 @@ You may change the following settings by adding the lines in your `local.py` set
|
|
|
148
178
|
|
|
149
179
|
Name | Description | Default | Options
|
|
150
180
|
-- | -- | -- | --
|
|
181
|
+
BUYBACKPROGRAM_ENABLE_REVERSE_BUYBACK | Enable or disable the reverse buyback feature entirely. When disabled the menu item will not appear. | True | `True`, `False`
|
|
182
|
+
BUYBACKPROGRAM_DISALLOW_CONTRACTS_WITH_ANY_DISALLOWED_ITEMS | Prevents price calculations if there are any disallowed items in the parsed list | False | `True`, `False`
|
|
183
|
+
BUYBACKPROGRAM_SHOW_LOCATION_COUNT | How many locations we will show on buyback index page before we change it to a pop-up show all locations button | 4 | Integer
|
|
151
184
|
BUYBACKPROGRAM_TRACKING_PREFILL | This is the prefill tag you will have on the tracking description for your contracts | aa-bbp. | Free text input
|
|
152
185
|
BUYBACKPROGRAM_PRICE_SOURCE_ID | Station ID for fetching base prices. Supports IDs listed on [Fuzzwork API](https://market.fuzzwork.co.uk/api/). Does not work with Janice API!| 60003760 | See ID list
|
|
153
186
|
BUYBACKPROGRAM_PRICE_SOURCE_NAME | Display name of your price source. Has no effect on the actual price fetch which uses the ID. | Jita | Free text input
|
|
@@ -157,6 +190,7 @@ BUYBACKPROGRAM_PRICE_INSTANT_PRICES | On default we use top 5% average prices. S
|
|
|
157
190
|
BUYBACKPROGRAM_PRICE_JANICE_API_KEY | The API key to access Janice API. | `null` | `G9KwKq3465588VPd6747t95Zh94q3W2E`
|
|
158
191
|
BUYBACKPROGRAM_UNUSED_TRACKING_PURGE_LIMIT | Time limit to remove unlinked tracking objects from the database. Set to 0 to never purge any tracking objects. | 48 | Any number in hours
|
|
159
192
|
BUYBACKPROGRAM_TRACK_PREFILL_CONTRACTS | Determines if we will track and store contracts that starts with the prefill phrase but do not have any actual tracking hits in database | True | `True`, `False`
|
|
193
|
+
BUYBACKPROGRAM_RESTRICT_TRACKING_DETAILS | When True, only the contract issuer and managers can view tracking detail pages via direct URL. Set to False to allow any authenticated basic_access user to view any tracking detail. | False | `True`, `False`
|
|
160
194
|
|
|
161
195
|
Note: If you change your price source for an old install you need to wait for the price update task to run or manually run it to update your current database prices.
|
|
162
196
|
|
|
@@ -173,6 +207,7 @@ manage_programs | Can create new locations and buyback programs and manage their
|
|
|
173
207
|
see_leaderboard | Can see the leaderboard stats for the programs that are visible for the user | Member State
|
|
174
208
|
see_performance | Can see the performance stats for the programs that are visible to the user | Member / Managers
|
|
175
209
|
see_all_statics | Can see all statistics in all buyback programs | Leadership
|
|
210
|
+
manage_all_programs | Can manage any program | Leadership
|
|
176
211
|
|
|
177
212
|
### Step 7 - Program Setup
|
|
178
213
|
|
|
@@ -342,12 +377,39 @@ You can send notifications about new contracts directly into the discord channel
|
|
|
342
377
|
|
|
343
378
|
> :information_source: Requires the [aa-discordbot plugin](https://github.com/pvyParts/allianceauth-discordbot) or [discordproxy app](https://gitlab.com/ErikKalkoken/discordproxy) to work
|
|
344
379
|
|
|
345
|
-
|
|
380
|
+
#### Program wallet
|
|
381
|
+
This wallet information will be displayed on the tracking page allowing you to see your selected wallet balance when checking on outstanding contracts.
|
|
382
|
+
|
|
383
|
+
#### Use reprocessed value for T1/Named (Meta 1-4)
|
|
384
|
+
|
|
385
|
+
You can value T1 (meta 1-4 items) with refined output instead of the actual item price.
|
|
386
|
+
|
|
387
|
+
#### T1 Material refining yeld
|
|
388
|
+
|
|
389
|
+
Similar to ore reprocessing yield you determine the T1 (meta 1-4) item refining yield. This only applies if the `Use reprocessed value for T1/Named (Meta 1-4)` option is selected.
|
|
390
|
+
|
|
391
|
+
#### Public Program
|
|
392
|
+
|
|
393
|
+
If you want to allow unauthenticated users (people without an Alliance Auth account) to view and use this buyback program, tick the **Public program** box.
|
|
394
|
+
|
|
395
|
+
Public programs will be visible on the buyback index page without login and can be used to calculate prices without authentication. A tracking number is still generated for public submissions so that contracts can be linked to the calculation — the issuer will simply show as an anonymous user in the statistics page.
|
|
396
|
+
|
|
397
|
+
> :warning: Public programs bypass all group and state restrictions. Any person with access to your Alliance Auth URL will be able to see and use the program. Do not use this together with group or state restrictions.
|
|
398
|
+
|
|
399
|
+
> :information_source: Enabling public programs requires a one-time server configuration by your Alliance Auth administrator. Add the following to your `local.py`:
|
|
400
|
+
> ```python
|
|
401
|
+
> APPS_WITH_PUBLIC_VIEWS = ["buybackprogram"]
|
|
402
|
+
> ```
|
|
403
|
+
> Without this setting, the public view will not be accessible even if the program is marked as public.
|
|
404
|
+
|
|
405
|
+
### Step 9 - Special Prices
|
|
346
406
|
|
|
347
407
|
You can modify individual item settings or allow items for a program that has set `allow all items = False` via the `special taxes` menu for each program.
|
|
348
408
|
|
|
349
409
|
Set a item specific tax for each item. The tax wil be applied on top of the default tax for the program. You can also disallow an item from being accepted in the contract completely.
|
|
350
410
|
|
|
411
|
+
You can also set **static prices**. Items with static prices are absolute prices and have no taxes or price dencity costs added on them.
|
|
412
|
+
|
|
351
413
|
> :information_source: The item specific tax can also be a negative value allowing you to decrease taxes on certain items.
|
|
352
414
|
|
|
353
415
|
To adjust individual item taxes inside a program click on the `Special taxes` button next to your program.
|
|
@@ -368,6 +430,31 @@ Market group `Minerals` is the bottom market group that includes the standard mi
|
|
|
368
430
|
|
|
369
431
|
Market group `Standard ores` is a parent category and there are no direct items under this category. However this category has child categories such as Veldspar, Jaspet, Scordite which each includes multiple variations of the ores. Adding the `Standard ores` category will add each ore type to the special tax section.
|
|
370
432
|
|
|
433
|
+
### Step 10 - Manual Review Watchlist
|
|
434
|
+
|
|
435
|
+
To protect your buyback program from market manipulation or extremely low-velocity items (such as Officer Modules or rare Abyssal items), you can utilize the Manual Review Watchlist.
|
|
436
|
+
|
|
437
|
+
The Watchlist allows you to flag specific items or entire EVE Market Groups. When a user pastes an inventory containing a watchlisted item into the buyback calculator, the system will automatically:
|
|
438
|
+
|
|
439
|
+
1. Display a purple `fa-search` warning icon next to the item on the user's appraisal result.
|
|
440
|
+
2. Flag the generated tracking object.
|
|
441
|
+
3. Automatically attach a "Suspicious Contract" warning to the manager's Dashboard for that specific contract, ensuring the item is manually reviewed before the contract is accepted.
|
|
442
|
+
|
|
443
|
+
#### Adding Watchlist Rules
|
|
444
|
+
|
|
445
|
+
To manage your watchlist, click the **Special Taxes** button next to your program, and scroll down to the **Manual Review Watchlist** section. Click **Add to Watchlist** to create a new rule.
|
|
446
|
+
|
|
447
|
+
You have two options when adding a rule:
|
|
448
|
+
|
|
449
|
+
* **Item Type:** Start typing to search for a specific EVE item (e.g., "Estamel's Modified Invulnerability Field"). Only that exact item will trigger the warning.
|
|
450
|
+
* **EVE Group:** Start typing to search for a broader EVE item group (e.g., "Officer Modules"). *Any* item that belongs to this group will trigger the warning.
|
|
451
|
+
|
|
452
|
+
> :information_source: **Note:** You can only specify *either* an Item Type *or* an EVE Group for a single rule. You cannot fill out both fields at the same time.
|
|
453
|
+
|
|
454
|
+
#### Deleting Watchlist Rules
|
|
455
|
+
|
|
456
|
+
To remove an item or group from the watchlist, simply click the **Delete** button next to the rule on the Special Taxes dashboard. The change takes effect immediately for all future calculations.
|
|
457
|
+
|
|
371
458
|
#### Most Common Groups
|
|
372
459
|
|
|
373
460
|
Name | Includes | Items
|
|
@@ -377,3 +464,47 @@ Moon Ores | Ores from moon mining | Cobaltite, Loparite, Pollucite
|
|
|
377
464
|
Ice Ores | Ores from ice mining | Blue Ice, Dark Glitter, Compressed Blue Ice ....
|
|
378
465
|
Minerals | Contains materials for refining Standard Ore | Tritanium, Pyerite ....
|
|
379
466
|
Salvage Materials | Salvage from loot | Armor Plates, Trigger Unit, Ancient Radar Decorrelator ...
|
|
467
|
+
|
|
468
|
+
### Step 11 - Reverse Buyback Programs
|
|
469
|
+
|
|
470
|
+
Reverse buyback programs allow you to sell items from your corporation hangar directly to players. Players submit a buy request, receive a tracking number, and you create a contract to them with the requested items.
|
|
471
|
+
|
|
472
|
+
#### Creating a Reverse Program
|
|
473
|
+
|
|
474
|
+
Click **Reverse Buyback** in the navigation menu, then click **1. Create Reverse Program**.
|
|
475
|
+
|
|
476
|
+
#### Settings
|
|
477
|
+
|
|
478
|
+
##### Name
|
|
479
|
+
A display name for the reverse program.
|
|
480
|
+
|
|
481
|
+
##### Manager
|
|
482
|
+
The character or corporation used as the contract issuer.
|
|
483
|
+
|
|
484
|
+
##### Is Corporation
|
|
485
|
+
If ticked, contracts will be issued from the manager's corporation.
|
|
486
|
+
|
|
487
|
+
##### Location
|
|
488
|
+
The structure where stock is held and contracts will be created. The structure ID must be set on the location for hangar sync to work.
|
|
489
|
+
|
|
490
|
+
##### Price Type
|
|
491
|
+
The base price type used to value items. Default: Sell.
|
|
492
|
+
|
|
493
|
+
##### Sell Markup %
|
|
494
|
+
A markup percentage added on top of the base price.
|
|
495
|
+
|
|
496
|
+
##### Expiration
|
|
497
|
+
Expiration time for contracts created by the owner.
|
|
498
|
+
|
|
499
|
+
##### Public Program
|
|
500
|
+
If enabled, the program is visible and usable without login. Requires `APPS_WITH_PUBLIC_VIEWS = ["buybackprogram"]` in `local.py`.
|
|
501
|
+
|
|
502
|
+
#### Syncing Stock
|
|
503
|
+
|
|
504
|
+
Once your program is created, click **Refresh Stock** in the management menu to pull current hangar contents from ESI. Stock will also update automatically every 30 minutes if the celery beat task is configured.
|
|
505
|
+
|
|
506
|
+
> :information_source: Only items located at a structure with a configured Structure ID will be synced. Make sure your location has a structure ID set.
|
|
507
|
+
|
|
508
|
+
#### How it works for players
|
|
509
|
+
|
|
510
|
+
Players navigate to **Reverse Buyback**, click **Buy** on a program, paste a list of items they want, and submit. The calculator checks availability against current stock and generates a price and tracking number. The player then waits for the owner to create a contract to them using the tracking number as the contract title.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
from django.contrib import admin
|
|
2
2
|
|
|
3
|
-
from .models import Contract, Faq, Location, Owner, Program
|
|
3
|
+
from .models import Contract, Faq, Location, Owner, Program, StaticItemPrice
|
|
4
4
|
|
|
5
5
|
# Register your models here.
|
|
6
6
|
|
|
@@ -45,6 +45,12 @@ class FaqAdmin(admin.ModelAdmin):
|
|
|
45
45
|
)
|
|
46
46
|
|
|
47
47
|
|
|
48
|
+
@admin.register(StaticItemPrice)
|
|
49
|
+
class StaticItemPriceAdmin(admin.ModelAdmin):
|
|
50
|
+
list_display = ("program", "eve_type", "price")
|
|
51
|
+
search_fields = ("program__name", "eve_type__name")
|
|
52
|
+
|
|
53
|
+
|
|
48
54
|
admin.site.register(Program, ProgramAdmin)
|
|
49
55
|
|
|
50
56
|
admin.site.register(Owner)
|
|
@@ -58,6 +58,26 @@ BUYBACKPROGRAM_PRICE_JANICE_API_KEY = clean_setting(
|
|
|
58
58
|
"BUYBACKPROGRAM_PRICE_JANICE_API_KEY", ""
|
|
59
59
|
)
|
|
60
60
|
|
|
61
|
+
BUYBACKPROGRAM_SHOW_LOCATION_COUNT = clean_setting(
|
|
62
|
+
"BUYBACKPROGRAM_SHOW_LOCATION_COUNT", 4
|
|
63
|
+
)
|
|
64
|
+
|
|
65
|
+
# Disallow the creation of tracking numbers if the pasted text contains ANY forbidden items
|
|
66
|
+
BUYBACKPROGRAM_DISALLOW_CONTRACTS_WITH_ANY_DISALLOWED_ITEMS = clean_setting(
|
|
67
|
+
"BUYBACKPROGRAM_DISALLOW_CONTRACTS_WITH_ANY_DISALLOWED_ITEMS", False
|
|
68
|
+
)
|
|
69
|
+
|
|
70
|
+
BUYBACKPROGRAM_ENABLE_REVERSE_BUYBACK = clean_setting(
|
|
71
|
+
"BUYBACKPROGRAM_ENABLE_REVERSE_BUYBACK", True
|
|
72
|
+
)
|
|
73
|
+
|
|
74
|
+
# When True (default), only the contract issuer and managers can view tracking
|
|
75
|
+
# detail pages. Set to False to allow any authenticated basic_access user to
|
|
76
|
+
# view any tracking detail by direct URL.
|
|
77
|
+
BUYBACKPROGRAM_RESTRICT_TRACKING_DETAILS = clean_setting(
|
|
78
|
+
"BUYBACKPROGRAM_RESTRICT_TRACKING_DETAILS", False
|
|
79
|
+
)
|
|
80
|
+
|
|
61
81
|
|
|
62
82
|
def allianceauth_discordbot_active():
|
|
63
83
|
"""
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
from django.utils.translation import gettext_lazy as _
|
|
2
|
+
|
|
3
|
+
from allianceauth import hooks
|
|
4
|
+
from allianceauth.services.hooks import MenuItemHook, UrlHook
|
|
5
|
+
|
|
6
|
+
from . import urls
|
|
7
|
+
from .app_settings import BUYBACKPROGRAM_ENABLE_REVERSE_BUYBACK
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class BuybackProgramMenuItem(MenuItemHook):
|
|
11
|
+
def __init__(self):
|
|
12
|
+
MenuItemHook.__init__(
|
|
13
|
+
self,
|
|
14
|
+
_("Buyback Program"),
|
|
15
|
+
"fa-solid fa-store",
|
|
16
|
+
"buybackprogram:index",
|
|
17
|
+
navactive=[
|
|
18
|
+
"buybackprogram:index",
|
|
19
|
+
"buybackprogram:faq",
|
|
20
|
+
"buybackprogram:setup",
|
|
21
|
+
"buybackprogram:my_stats",
|
|
22
|
+
"buybackprogram:contract_details",
|
|
23
|
+
"buybackprogram:program_",
|
|
24
|
+
"buybackprogram:location_",
|
|
25
|
+
"buybackprogram:remove_static_price",
|
|
26
|
+
"buybackprogram:remove_watchlist_item",
|
|
27
|
+
"buybackprogram:manual_contract_sync",
|
|
28
|
+
"buybackprogram:trigger_price_update",
|
|
29
|
+
"buybackprogram:user_settings_edit",
|
|
30
|
+
"buybackprogram:item_autocomplete",
|
|
31
|
+
"buybackprogram:solarsystem_autocomplete",
|
|
32
|
+
"buybackprogram:marketgroup_autocomplete",
|
|
33
|
+
"buybackprogram:wallet_autocomplete",
|
|
34
|
+
"buybackprogram:group_autocomplete",
|
|
35
|
+
],
|
|
36
|
+
)
|
|
37
|
+
|
|
38
|
+
def render(self, request):
|
|
39
|
+
if request.user.has_perm("buybackprogram.basic_access"):
|
|
40
|
+
return MenuItemHook.render(self, request)
|
|
41
|
+
return ""
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
class ReverseBuybackMenuItem(MenuItemHook):
|
|
45
|
+
def __init__(self):
|
|
46
|
+
MenuItemHook.__init__(
|
|
47
|
+
self,
|
|
48
|
+
_("Reverse Buyback"),
|
|
49
|
+
"fa-solid fa-exchange-alt",
|
|
50
|
+
"buybackprogram:reverse_index",
|
|
51
|
+
navactive=["buybackprogram:reverse_"],
|
|
52
|
+
)
|
|
53
|
+
|
|
54
|
+
def render(self, request):
|
|
55
|
+
if request.user.has_perm("buybackprogram.basic_access"):
|
|
56
|
+
return MenuItemHook.render(self, request)
|
|
57
|
+
return ""
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
@hooks.register("menu_item_hook")
|
|
61
|
+
def register_menu():
|
|
62
|
+
return BuybackProgramMenuItem()
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
@hooks.register("menu_item_hook")
|
|
66
|
+
def register_reverse_menu():
|
|
67
|
+
if BUYBACKPROGRAM_ENABLE_REVERSE_BUYBACK:
|
|
68
|
+
return ReverseBuybackMenuItem()
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
@hooks.register("url_hook")
|
|
72
|
+
def register_urls():
|
|
73
|
+
return UrlHook(
|
|
74
|
+
urls,
|
|
75
|
+
"buybackprogram",
|
|
76
|
+
r"^buybackprogram/",
|
|
77
|
+
excluded_views=[
|
|
78
|
+
"buybackprogram.views.common.index",
|
|
79
|
+
"buybackprogram.views.calculate.program_calculate",
|
|
80
|
+
"buybackprogram.views.programs.reverse_index",
|
|
81
|
+
"buybackprogram.views.calculate.reverse_program_calculate",
|
|
82
|
+
],
|
|
83
|
+
)
|