Buyback program plugin app for Alliance Auth
Project description
Buyback Program
An Alliance Auth app for creating buyback programs and to allow users calculate prices for buyback contracts.
Contents
Images
Features
- Multiple programs with their own settings
- Multiple owners
- Supports corporation and character owners
- Flexible program settings:
- Allow all items
- Allow only spesific items
- Custom location names
- Global program tax
- Item specified tax
- Hauling fuel cost
- Dynamic low price density tax
- NPC price for NPC buy orders
- Best price variant for ore:
- Supports raw, compressed, refined and any combination of the 3.
- Will calculate price by the best available pricing method
- Allow / disallow unpacked items
- Restrict program to:
- States
- Groups
- Open for everyone
- Personal buyback static tracking for:
- Outstanding contracts
- Finished contracts
- Program tracking for owners:
- Outstanding contracts
- Total bought value
- Contract abuse checker and notifications
- Check if items do not match the calcualted contract
- Check if price does not match the calculated contract
- Check if contract is made at wrong location
- Check if contract is made incorrectly to corporation or character
- Check extra characters in contract title
- Check if contract contains donations
- Contract tracking history
- Supports base price sources from Fuzzwork API
- Supports discord notifications
- Notifications for accepted contracts
- Notifications for new contracts
- For aa-discordbot
- For discordproxy
Step 1 - Prerequisites
- Buyback program is a plugin for Alliance Auth. If you don't have Alliance Auth running already, please install it first before proceeding. (see the official AA installation guide for details)
- Buyback program needs the app django-eveuniverse to function. Please make sure it is installed, before before continuing.
Step 2 - Install App
- Activate your venv
source /home/allianceserver/venv/auth/bin/activate
- Install the plugin
pip install aa-buybackprogram
- Add
'buybackprogram',
into your settings/local.py installed apps section - Run migrations
python manage.py migrate
- Collect static files
python manage.py collectstatic
- Reload supervisor
Step 3 - Update EVE Online API Application
Update the Eve Online API app used for authentication in your AA installation to include the following scopes:
esi-contracts.read_character_contracts.v1
esi-contracts.read_corporation_contracts.v1
Step 4 - Data Preload
Buybackprogram requires a lot of data to function as it is designed to allow your clients to sell you any items that exsist in EVE. For this reason pre-loading all the date will take a while.
Preload Load Type Data
To load type data run the command python manage.py buybackprogram_load_data
. This will start the preload of all EveType
, SolarSystem
, EveMarketGroup
and EveTypeMaterial
objects.
You can follow the progress of the load from your auth da
:warning: You will need to wait for the type data to load up before you can start to use the plugin. Trying to adjust program settings while the required data has not been yet loaded may result in failure of adjusting the settings.
Preload Price Data
After you have preloaded the type data you can preload price data into the database. Price data preloading is not mandatory but will speed up the first buyback calculations.
:information_source: If price information is not found for items when the prices are calcualted the first time the prices for that item will be fetched during the calculation process. This will increase the calculation time for the contract.
To preload price data run python manage.py buybackprogram_load_prices
Step 5 - Configure Auth settings
Buyback program requires a few periodic tasks to operate and update its data.
Buybackprogram is designed to use localy stored prices to speed up the price calculations. It is important that you have the price update task in your periodic tasks so that your prices will update.
By adding the following lines in your local.py
setting file the progral will update the stored item prices at midnight. It will also check for any new contracts and update the statistics page with them every 15 minutes:
# Buybackprogram price updates
CELERYBEAT_SCHEDULE['buybackprogram_update_all_prices'] = {
'task': 'buybackprogram.tasks.update_all_prices',
'schedule': crontab(minute=0, hour='0'),
}
# Buybackprogram contract updates
CELERYBEAT_SCHEDULE['buybackprogram_update_all_contracts'] = {
'task': 'buybackprogram.tasks.update_all_contracts',
'schedule': crontab(minute='*/15'),
}
Additional settings
You may change the following settings by adding the lines in your local.py
setting files
Name | Description | Default |
---|---|---|
BUYBACKPROGRAM_TRACKING_PREFILL | This is the prefill tag you will have on the tracking description for your contracts | aa-bbp. |
BUYBACKPROGRAM_PRICE_SOURCE_ID | Station ID for fetching base prices. Supports IDs listed on Fuzzworks API | 60003760 |
BUYBACKPROGRAM_PRICE_SOURCE_NAME | Display name of your price source. Has no effect on the actual price fetch which uses the ID. | Jita |
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.
Step 6 - Adjust Permissions
Overview of all permissions in this program. Note that all permissions are in the "general" section.
Name | Purpose | Example Target Audience |
---|---|---|
basic_access | Can access this app and see own statics. Can use buyback programs that are allowed by the buyback restriction rules. | Member State |
manage_programs | Can create new locations and buyback programs and manage their own buyback programs. Can see own buyback programs statics. | Buyback managers |
see_all_statics | Can see all statistics in all buyback programs | Leadership |
Step 7 - Program Setup
After you have preloaded all the needed data you can start to setup programs.
Each user with manage_programs
permission is able to setup their own buyback programs.
Managers
Each buyback program is operated by a manager. To add a new manager click on the setup manager
button.
Locations
Each buyback program operates at a location that is constructed of SolarSystem
and a Custom name
and an optional Structure ID
. To add a new location click on the add location
button on the buyback page.
Solar System & Name Find a solar system by typing in the solar system box. Then determine a name for the structure. Most often you want to use the actual ingame name of the structure so that people are able to identify the location.
The solarsytem name will indicate your sellers where the program contract structure is located. The name will describe the structure name in where the contracts should be created and most often should be identical to the actual structure name ingame.
Structure ID Structure ID is optional and will enable contract location tracking in the program statistics page. If a program location has been given a structure ID the statistics page will display a warning if the user has made the actual contract from some other structure than the one that was determined in the buyback program.
The easiest way to find the actual structure id is to link the structure name into any chat box and post the structure name into the chat. This can be dont in any channel or the structure name can be also copied from any MOTDs.
After you have posted the structure name in the chat right click it and press copy. You can now paste the structure into notepad or any other text editor and your output should look like this:
[17:37:54] Ikarus Cesaille > <url=showinfo:35826//1037962518481>Oisio - LinkNet Central Station</url> `
The unique structure ID for your structure is then 1037962518481
. Adding the ID to the location ID field will check if the contract creation location matches this ID.
Step 8 - Create Program
Once you have created a location and added at least one manager you can setup the actual program. Click on the create program
button to create a new program.
Program settings
Each program can be customized based on your needs. When setting up select the settings you wish to use.
Owner
This is the character or the characters corporation which will be used as the assign to target for buyback contracts at this location. To add more owners use the add manager
button. You can only see your own characters.
Is Corporation
If you wish that the contracts are assigned to the owners corporation instead of the character tick this box.
Tax
This is a general tax which is applied on all items in this program. If you wish to not allow all items in this program you can leave this to 0.
General tax is applied on all items sold via the buyback. You can add additional taxes on individual items or ban them from beeing accepted to the program once you have created the program.
Hauling fuel cost
You can add a fuel cost expense that is applied on each item sold via this program based on the volume of the item.
:information_source: This setting is aimed more to null sec buyback programs to make it easier to calculate your taxes and display your members the expenses you have when selling.
Price density modifier
You can use a price density modifier which will add a additional tax on items with low price per volume ratio such as T1 ships.
:information_source: This setting is aimer more at high sec buyback programs.
Compressable price density modifier
You can select to ignore price density calculations for items that can be compressed. This is helpful when the compressed variants do not have proper buy orders in Jita. If you set this to True then the compressable item density will be calculated based on the isk / volume of the compression variant of the sold item.
Price density threshold
This is the lowest isk/m^3 ratio for items that are accepted to the program without the price density tax. Finding your own limits depends on your logistical department.
For example: Tritanium is 500 ISK/m³ @ 5 ISK per unit price. PLEX is 14,5Trillion ISK/m³ @2.9M per unit price.
Price density tax
This is the tax which will be applied to items with a price density below the price density threshold
:warning: You should avoid using both the hauling fuel cost and the price density modifier at the same time as their function is fairly similar.
Allow all items
If you wish to allow any types of items to be sold via this program keep this box ticker.
You can determine individual increased taxes or ban items from beeing accepted to this program after creating the program.
If you do not want to accept all items you can set this box to False. By doing this you will need to set up a tax for each item you wish to accept into the program individually.
Ore settings
Ore type items such as asteroid, moon goo and ice have additional pricing methods you can use. You can use a mix of any of the three pricing models.
:information_source: When using more than one pricing model the best price will be used as the buy value.
Use Refined value
If you wish to calculate ore buyback value based on the mineral values tick this box.
Use compressed value
If you want to use compressed value as a pricing method tick this box.
Use raw ore value
If you want to use raw ore value as a pricing method you can tick this box. Note that some ores such as Kernite and Moon Goo do not represent the real mineral value of the ores.
You can also individually ban raw ore types from the program. If you have an other option than the raw ore value selected the price will be calculated based on the other pricing models.
Allow unpacked items
Most often you want to buy only items that are packed. This will ensure that people do not sell items such as broken ammo crystals for you.
Refining rate
The refining rate is used in combination with the use refined value option.
Blue loot npc price
If you cant to use NPC buy order prices for blue loot (Sleeper loot) instead of Jita prices check this box. NPC price for these items will always be used even when Jita price would be higher.
Red loot npc price
If you cant to use NPC buy order prices for red loot (Triglavian loot) instead of Jita prices check this box. NPC price for these items will always be used even when Jita price would be higher.
Restrctions
You can restict the visibnility of the buyback programs to groups and states with the restriction options.
If no options are selected the program will be visible for everyone with the basic_access
role.
:no_entry: Do not mix group and state restrictions as this may lead into logic error. If you need to mix then create a separate programs for them.
Discord DM messages
If you want to receive messages over discord for every new contract you can tick this box.
:information_source: Requires the aa-discordbot plugin or discordproxy app to work
Discord channel messages
You can send notifications about new contracts directly into the discord channel which is linked to AUTH,
:information_source: Requires the aa-discordbot plugin or discordproxy app to work
Step 9 - Special Taxes
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.
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 beeing accepted in the contract completely.
:information_source: The item specific tax can also be a negative value allowing you to decrease taxes on certain items.
To adjust individual item taxes inside a program click on the Special taxes
button next to your program.
You can either add items one by one with the add item
button or add all items that belongs to a market group and every subchild market group of that group with add market group
You can edit an item on the taxation table simply by adding it again. To delete the item press the delete button next to it or to delete all items in the program click on the delete all items button.
Market Groups When you add an market group each item inside that market group, the child of the market group and the child of the child group will be added to the item taxes (3 steps down)
The easiest way to check which items are under which market group is to open the market window ingame or third party programs such as https://evemarketer.com/
Example:
Market group Minerals
is the bottom market group that includes the standard minerals. Adding this market group to the taxation will add 8 items to the taxes (Tritanium, Pyerite etc.)
Market group Standard ores
is a parent gategory and there are no direct items under this category. However this category has child categories such as Veldsar, 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.
Most Common Groups Name | Includes | Items -- | -- Standard Ores | Normal ores from belts and anomalies | Veldspar, Hedbergite, Compressed Arkonor ... Moon Ores | Ores from moon mining | Cobaltite, Loparite, Pollucite Ice Ores | Ores from ice mining | Blue Ice, Dark Glitter, Compressed Blue Ice .... Minerals | Contains materials for refining Standard Ore | Tritanium, Pyerite .... Salvage Materials | Salvage from loot | Armor Plates, Trigger Unit, Ancient Radar Decorrelator ...
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file aa-buybackprogram-1.6.0.tar.gz
.
File metadata
- Download URL: aa-buybackprogram-1.6.0.tar.gz
- Upload date:
- Size: 147.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.0 CPython/3.8.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4398d7e5fbf304175feb28104917444e104e4160dfb43a622bd58ebb5396ad8e |
|
MD5 | 6d4a619c6dd0a559e3a93e06a2808122 |
|
BLAKE2b-256 | c8b942175f0eaca3836cb8798c89085262c98a9aec7cb1891955815665b83c76 |
File details
Details for the file aa_buybackprogram-1.6.0-py3-none-any.whl
.
File metadata
- Download URL: aa_buybackprogram-1.6.0-py3-none-any.whl
- Upload date:
- Size: 168.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.0 CPython/3.8.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 990bb5f97d9fd2b184fdc45cdb179e666e3ab923783b96d9ca1193d438077311 |
|
MD5 | 5f273cf2a957c98beba6dc35f70945a0 |
|
BLAKE2b-256 | f1a91c12eca475cd6a4508849ecd4f2f2ebc91519d2b3235108aefd709571330 |