{"id":17004229,"url":"https://github.com/ppfeufer/allianceauth-afat","last_synced_at":"2026-02-27T14:26:23.249Z","repository":{"id":37789499,"uuid":"290854987","full_name":"ppfeufer/allianceauth-afat","owner":"ppfeufer","description":"Another Fleet Activity Tracking tool for Alliance Auth","archived":false,"fork":false,"pushed_at":"2025-03-20T14:58:43.000Z","size":7443,"stargazers_count":0,"open_issues_count":4,"forks_count":5,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-20T15:44:35.616Z","etag":null,"topics":["allianceauth","esi","eve-online","fat-links","fleet","fleet-activity-tracking","fleet-tracking"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ppfeufer.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"ko_fi":"ppfeufer"}},"created_at":"2020-08-27T18:43:24.000Z","updated_at":"2025-03-13T14:26:23.000Z","dependencies_parsed_at":"2024-03-08T10:25:50.268Z","dependency_job_id":"e46815ac-08ca-419d-8357-fc85670e5a80","html_url":"https://github.com/ppfeufer/allianceauth-afat","commit_stats":{"total_commits":906,"total_committers":9,"mean_commits":"100.66666666666667","dds":0.1898454746136865,"last_synced_commit":"1631a4919b76f3cf864b0b9c3ef891454f577387"},"previous_names":[],"tags_count":123,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ppfeufer%2Fallianceauth-afat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ppfeufer%2Fallianceauth-afat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ppfeufer%2Fallianceauth-afat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ppfeufer%2Fallianceauth-afat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ppfeufer","download_url":"https://codeload.github.com/ppfeufer/allianceauth-afat/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244986314,"owners_count":20542993,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["allianceauth","esi","eve-online","fat-links","fleet","fleet-activity-tracking","fleet-tracking"],"created_at":"2024-10-14T04:43:07.337Z","updated_at":"2026-02-27T14:26:23.233Z","avatar_url":"https://github.com/ppfeufer.png","language":"Python","funding_links":["https://ko-fi.com/ppfeufer","https://ko-fi.com/N4N8CL1BY"],"categories":[],"sub_categories":[],"readme":"# Alliance Auth AFAT — Another Fleet Activity Tracker\u003ca name=\"alliance-auth-afat-%E2%80%94-another-fleet-activity-tracker\"\u003e\u003c/a\u003e\n\n[![Version](https://img.shields.io/pypi/v/allianceauth-afat?label=release)](https://pypi.org/project/allianceauth-afat/)\n[![License](https://img.shields.io/badge/license-GPLv3-green)](https://pypi.org/project/allianceauth-afat/)\n[![Python](https://img.shields.io/pypi/pyversions/allianceauth-afat)](https://pypi.org/project/allianceauth-afat/)\n[![Django](https://img.shields.io/pypi/djversions/allianceauth-afat?label=django)](https://pypi.org/project/allianceauth-afat/)\n![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit\u0026logoColor=white)\n[![pre-commit.ci status](https://results.pre-commit.ci/badge/github/ppfeufer/allianceauth-afat/master.svg)](https://results.pre-commit.ci/latest/github/ppfeufer/allianceauth-afat/master)\n[![Code Style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](http://black.readthedocs.io/en/latest/)\n[![Automated Checks](https://github.com/ppfeufer/allianceauth-afat/actions/workflows/automated-checks.yml/badge.svg)](https://github.com/ppfeufer/allianceauth-afat/actions/workflows/automated-checks.yml)\n[![codecov](https://codecov.io/gh/ppfeufer/allianceauth-afat/branch/master/graph/badge.svg?token=GNE88NUAKK)](https://codecov.io/gh/ppfeufer/allianceauth-afat)\n[![Translation status](https://weblate.ppfeufer.de/widget/alliance-auth-apps/allianceauth-afat/svg-badge.svg)](https://weblate.ppfeufer.de/engage/alliance-auth-apps/)\n[![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.1-4baaaa.svg)](https://github.com/ppfeufer/aa-forum/blob/master/CODE_OF_CONDUCT.md)\n[![Discord](https://img.shields.io/discord/399006117012832262?label=discord)](https://discord.gg/fjnHAmk)\n\n[![ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/N4N8CL1BY)\n\nAn Improved FAT/PAP System for\n[Alliance Auth](https://gitlab.com/allianceauth/allianceauth).\n\n______________________________________________________________________\n\n\u003c!-- mdformat-toc start --slug=github --maxlevel=6 --minlevel=2 --\u003e\n\n- [Features and Highlights](#features-and-highlights)\n- [Screenshots](#screenshots)\n  - [Dashboard](#dashboard)\n  - [Fat Link List](#fat-link-list)\n  - [Fat Link Details](#fat-link-details)\n  - [Add Fat Link View for FCs](#add-fat-link-view-for-fcs)\n  - [Smart Filter: FATs in Time Period](#smart-filter-fats-in-time-period)\n- [Installation](#installation)\n  - [Bare Metal Installation](#bare-metal-installation)\n    - [Step 1: Install the App](#step-1-install-the-app)\n    - [Step 2: Update Your AA Settings](#step-2-update-your-aa-settings)\n    - [Step 3: Finalizing the Installation](#step-3-finalizing-the-installation)\n  - [Docker Installation](#docker-installation)\n    - [Step 1: Add the App](#step-1-add-the-app)\n    - [Step 2: Update Your AA Settings](#step-2-update-your-aa-settings-1)\n    - [Step 3: Build Auth and Restart Your Containers](#step-3-build-auth-and-restart-your-containers)\n    - [Step 4: Finalizing the Installation](#step-4-finalizing-the-installation)\n- [Updating](#updating)\n  - [Bare Metal Installation](#bare-metal-installation-1)\n  - [Docker Installation](#docker-installation-1)\n  - [Common Steps](#common-steps)\n- [Data Migration](#data-migration)\n  - [Import From Native FAT](#import-from-native-fat)\n    - [Bare Metal Installation](#bare-metal-installation-2)\n    - [Docker Installation](#docker-installation-2)\n- [Settings](#settings)\n- [Permissions](#permissions)\n- [Changelog](#changelog)\n- [Translation Status](#translation-status)\n- [Contributing](#contributing)\n- [Credits](#credits)\n\n\u003c!-- mdformat-toc end --\u003e\n\n______________________________________________________________________\n\n## Features and Highlights\u003ca name=\"features-and-highlights\"\u003e\u003c/a\u003e\n\n- Automatic tracking of participation on FAT links created via ESI\n- Multiple ESI fleets (with your alts)\n- Manually end ESI tracking per fleet\n- Fleet type classification (can be added in the admin backend)\n- Ship type overview per FAT link\n- Graphical statistics views\n- Re-open FAT link if the FAT link has expired and is within the defined grace time\n  (only for clickable FAT links)\n- Manually add pilots to clickable FAT links, in case they missed clicking the link\n  (for a period of 24 hours after the FAT links original expiry time)\n- Log for the following actions (Logs are kept for a certain time, 60 days per default):\n  - Create FAT link\n  - Change FAT link\n  - Remove FAT link\n  - Re-open FAT link\n  - Manually add pilot to FAT link\n  - Remove pilot from FAT link\n- Smart filter for integration with [Secure Groups](https://github.com/Solar-Helix-Independent-Transport/allianceauth-secure-groups)\n  - FATs in time period\n\nAFAT will work alongside the built-in native FAT System and ImicusFAT.\nHowever, data doesn't share, but you can migrate their data to AFAT, for more\ninformation, see below.\n\n## Screenshots\u003ca name=\"screenshots\"\u003e\u003c/a\u003e\n\n### Dashboard\u003ca name=\"dashboard\"\u003e\u003c/a\u003e\n\n![Dashboard](https://raw.githubusercontent.com/ppfeufer/allianceauth-afat/master/docs/images/afat-dashboard.png \"Dashboard\")\n\n### Fat Link List\u003ca name=\"fat-link-list\"\u003e\u003c/a\u003e\n\n![Fat Link List](https://raw.githubusercontent.com/ppfeufer/allianceauth-afat/master/docs/images/fatlink-list.png \"Fat Link List\")\n\n### Fat Link Details\u003ca name=\"fat-link-details\"\u003e\u003c/a\u003e\n\n![Fat Link Details](https://raw.githubusercontent.com/ppfeufer/allianceauth-afat/master/docs/images/changelog/1.9.0/ship-type-overview.png \"Fat Link Details\")\n\n### Add Fat Link View for FCs\u003ca name=\"add-fat-link-view-for-fcs\"\u003e\u003c/a\u003e\n\n![Add Fat Link View for FCs](https://raw.githubusercontent.com/ppfeufer/allianceauth-afat/master/docs/images/add-fatlink.png \"Add Fat Link View for FCs\")\n\n### Smart Filter: FATs in Time Period\u003ca name=\"smart-filter-fats-in-time-period\"\u003e\u003c/a\u003e\n\n![Smart Filter: FATs in Time Period](https://raw.githubusercontent.com/ppfeufer/allianceauth-afat/master/docs/images/smart-filter-fats-in-time.png \"Smart Filter: FATs in Time Period\")\n\n## Installation\u003ca name=\"installation\"\u003e\u003c/a\u003e\n\n\u003e [!Important]\n\u003e\n\u003e This app is a plugin for [Alliance Auth](https://gitlab.com/allianceauth/allianceauth). \\\n\u003e If you don't have Alliance Auth running already, please install it first before\n\u003e proceeding. (See the official [AA installation guide](https://allianceauth.readthedocs.io/en/latest/installation/allianceauth.html) for details)\n\n\u003e [!IMPORTANT]\n\u003e\n\u003e This app is utilising features that are only available in Alliance Auth \u003e= 4.12.0.\n\u003e Please make sure to update your Alliance Auth instance before installing this app,\n\u003e otherwise, an update to Alliance Auth will be pulled in unsupervised.\n\n\u003e [!NOTE]\n\u003e\n\u003e For users migrating from Alliance Auth's built-in FAT systems,\n\u003e please read the [specific instructions](#data-migration).\n\n### Bare Metal Installation\u003ca name=\"bare-metal-installation\"\u003e\u003c/a\u003e\n\n#### Step 1: Install the App\u003ca name=\"step-1-install-the-app\"\u003e\u003c/a\u003e\n\nMake sure you're in the virtual environment (venv) of your Alliance Auth installation.\nThen install the latest version:\n\n```shell\npip install allianceauth-afat==5.0.0\n```\n\n#### Step 2: Update Your AA Settings\u003ca name=\"step-2-update-your-aa-settings\"\u003e\u003c/a\u003e\n\nConfigure your AA settings in your `local.py` as follows:\n\n- Modify `INSTALLED_APPS` to include the following entries\n\n  ```python\n  INSTALLED_APPS = [\n      # ...\n      \"eve_sde\",  # Only if not already added for another app\n      \"afat\",\n      # ...\n  ]\n  ```\n\n- Add the Scheduled Tasks\n\n  ```python\n  # This line right below the `INSTALLED_APPS` list, and only if not already added for another app\n  INSTALLED_APPS = [\"modeltranslation\"] + INSTALLED_APPS\n\n  # AFAT - https://github.com/ppfeufer/allianceauth-afat\n  if \"afat\" in INSTALLED_APPS:\n      CELERYBEAT_SCHEDULE[\"afat_update_esi_fatlinks\"] = {\n          \"task\": \"afat.tasks.update_esi_fatlinks\",\n          \"schedule\": crontab(minute=\"*/1\"),\n      }\n\n      CELERYBEAT_SCHEDULE[\"afat_logrotate\"] = {\n          \"task\": \"afat.tasks.logrotate\",\n          \"schedule\": crontab(minute=\"0\", hour=\"1\"),\n      }\n\n  if \"eve_sde\" in INSTALLED_APPS:\n      # Run at 12:00 UTC each day\n      CELERYBEAT_SCHEDULE[\"EVE SDE :: Check for SDE Updates\"] = {\n          \"task\": \"eve_sde.tasks.check_for_sde_updates\",\n          \"schedule\": crontab(minute=\"0\", hour=\"12\"),\n      }\n  ```\n\n#### Step 3: Finalizing the Installation\u003ca name=\"step-3-finalizing-the-installation\"\u003e\u003c/a\u003e\n\nRun migrations, copy static files and load EVE SDE data\n\n```shell\npython manage.py collectstatic\npython manage.py migrate\npython manage.py esde_load_sde\n```\n\n### Docker Installation\u003ca name=\"docker-installation\"\u003e\u003c/a\u003e\n\n#### Step 1: Add the App\u003ca name=\"step-1-add-the-app\"\u003e\u003c/a\u003e\n\nAdd the app to your `conf/requirements.txt`:\n\n```text\nallianceauth-afat==5.0.0\n```\n\n#### Step 2: Update Your AA Settings\u003ca name=\"step-2-update-your-aa-settings-1\"\u003e\u003c/a\u003e\n\nConfigure your AA settings (`conf/local.py`) as follows:\n\n- Modify `INSTALLED_APPS` to include the following entries\n\n  ```python\n  INSTALLED_APPS = [\n      # ...\n      \"eve_sde\",  # Only if not already added for another app\n      \"afat\",\n      # ...\n  ]\n  ```\n\n- Add the Scheduled Tasks\n\n  ```python\n  # This line right below the `INSTALLED_APPS` list, and only if not already added for another app\n  INSTALLED_APPS = [\"modeltranslation\"] + INSTALLED_APPS\n\n  # AFAT - https://github.com/ppfeufer/allianceauth-afat\n  if \"afat\" in INSTALLED_APPS:\n      CELERYBEAT_SCHEDULE[\"afat_update_esi_fatlinks\"] = {\n          \"task\": \"afat.tasks.update_esi_fatlinks\",\n          \"schedule\": crontab(minute=\"*/1\"),\n      }\n\n      CELERYBEAT_SCHEDULE[\"afat_logrotate\"] = {\n          \"task\": \"afat.tasks.logrotate\",\n          \"schedule\": crontab(minute=\"0\", hour=\"1\"),\n      }\n\n  if \"eve_sde\" in INSTALLED_APPS:\n      # Run at 12:00 UTC each day\n      CELERYBEAT_SCHEDULE[\"EVE SDE :: Check for SDE Updates\"] = {\n          \"task\": \"eve_sde.tasks.check_for_sde_updates\",\n          \"schedule\": crontab(minute=\"0\", hour=\"12\"),\n      }\n  ```\n\n#### Step 3: Build Auth and Restart Your Containers\u003ca name=\"step-3-build-auth-and-restart-your-containers\"\u003e\u003c/a\u003e\n\n```shell\ndocker compose build --no-cache\ndocker compose --env-file=.env up -d\n```\n\n#### Step 4: Finalizing the Installation\u003ca name=\"step-4-finalizing-the-installation\"\u003e\u003c/a\u003e\n\nRun migrations, copy static files and load EVE SDE data:\n\n```shell\ndocker compose exec allianceauth_gunicorn bash\n\nauth collectstatic\nauth migrate\nauth esde_load_sde\n```\n\n## Updating\u003ca name=\"updating\"\u003e\u003c/a\u003e\n\n### Bare Metal Installation\u003ca name=\"bare-metal-installation-1\"\u003e\u003c/a\u003e\n\nTo update your existing installation of AFAT, first enable your\nvirtual environment (venv) of your Alliance Auth installation.\n\n```shell\npip install allianceauth-afat==5.0.0\n\npython manage.py collectstatic\npython manage.py migrate\n\nredis-cli flushall\n```\n\nFinally, restart your supervisor services for AA\n\n### Docker Installation\u003ca name=\"docker-installation-1\"\u003e\u003c/a\u003e\n\nTo update your existing installation of AFAT, all you need to do is to update the\nrespective line in your `conf/requirements.txt` file to the latest version.\n\n```text\nallianceauth-afat==5.0.0\n```\n\nNow rebuild your containers:\n\n```shell\ndocker compose build\ndocker compose --env-file=.env up -d\n```\n\nAfter that, run the following commands to update your database and static files:\n\n```shell\ndocker compose exec allianceauth_gunicorn bash\n\nauth collectstatic\nauth migrate\n```\n\n### Common Steps\u003ca name=\"common-steps\"\u003e\u003c/a\u003e\n\nIt is possible that some versions need some more changes. Always read the\n[release notes](https://github.com/ppfeufer/allianceauth-afat/releases) to find out more.\n\n## Data Migration\u003ca name=\"data-migration\"\u003e\u003c/a\u003e\n\nRight after the **initial** installation and running migrations,\nyou can import the data from Alliance Auth's native FAT system if\nyou have used it until now.\n\n### Import From Native FAT\u003ca name=\"import-from-native-fat\"\u003e\u003c/a\u003e\n\nTo import from the native FAT module, run the following:\n\n#### Bare Metal Installation\u003ca name=\"bare-metal-installation-2\"\u003e\u003c/a\u003e\n\n```shell\npython myauth/manage.py afat_import_from_allianceauth_fat\n```\n\n#### Docker Installation\u003ca name=\"docker-installation-2\"\u003e\u003c/a\u003e\n\n```shell\ndocker compose exec allianceauth_gunicorn bash\n\nauth afat_import_from_allianceauth_fat\n```\n\n## Settings\u003ca name=\"settings\"\u003e\u003c/a\u003e\n\nTo customize the module, the following settings can be managed in your admin backend:\n\n| Setting                            | Description                                                                                                                                                                                                           | Default Value |\n| :--------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------ |\n| Use doctrines from fittings module | Whether to use the doctrines from the Fittings modules in the doctrine dropdown or from AFATs own doctrine list. (Note: The [fittings module](https://gitlab.com/colcrunch/fittings) needs to be installed for this.) | No            |\n| Default FAT link expiry time       | Default expiry time for clickable FAT links in Minutes                                                                                                                                                                | 60            |\n| Default FAT link reopen grace time | Time in minutes a FAT link can be re-opened after it has expired                                                                                                                                                      | 60            |\n| Default FAT link reopen duration   | Time in minutes a FAT link is re-opened                                                                                                                                                                               | 60            |\n| Default log duration               | Time in days before log entries are being removed from the DB                                                                                                                                                         | 60            |\n\n## Permissions\u003ca name=\"permissions\"\u003e\u003c/a\u003e\n\n| Name                    | Description                              | Notes                                                                                                                                                                           |\n| :---------------------- | :--------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| basic_access            | Can access the AFAT module               | Your line member probably want this permission, so they can see the module and click the FAT links they are given. They also can see their own statistics with this permission. |\n| manage_afat             | Can manage the AFAT module               | Your Military lead probably should get this permission                                                                                                                          |\n| add_fatlink             | Can create FAT Links                     | Your regular FC or who ever should be able to add FAT links should have this permission                                                                                         |\n| stats_corporation_own   | Can see own corporation statistics       |                                                                                                                                                                                 |\n| stats_corporation_other | Can see statistics of other corporations |                                                                                                                                                                                 |\n| logs_view               | Can view the modules logs                |                                                                                                                                                                                 |\n\n## Changelog\u003ca name=\"changelog\"\u003e\u003c/a\u003e\n\nTo keep track of all changes, please read the\n[Changelog](https://github.com/ppfeufer/allianceauth-afat/blob/master/CHANGELOG.md).\n\n## Translation Status\u003ca name=\"translation-status\"\u003e\u003c/a\u003e\n\n[![Translation status](https://weblate.ppfeufer.de/widget/alliance-auth-apps/allianceauth-afat/multi-auto.svg)](https://weblate.ppfeufer.de/engage/alliance-auth-apps/)\n\nDo you want to help translate this app into your language or improve the existing\ntranslation? - [Join our team of translators][weblate engage]!\n\n## Contributing\u003ca name=\"contributing\"\u003e\u003c/a\u003e\n\nYou want to contribute to this project? That's cool!\n\nPlease make sure to read the [contribution guidelines](https://github.com/ppfeufer/allianceauth-afat/blob/master/CONTRIBUTING.md).\\\n(I promise, it's not much, just some basics)\n\n## Credits\u003ca name=\"credits\"\u003e\u003c/a\u003e\n\nAFAT is maintained by @ppfeufer and is based on\n[ImicusFAT](https://gitlab.com/evictus.iou/allianceauth-imicusfat)\nby @exiom with @Aproia and @ppfeufer which is based on\n[allianceauth-bfat](https://gitlab.com/colcrunch/allianceauth-bfat) by @colcrunch\n\nBoth of these modules are no longer maintained and are deprecated. Both modules will\nnot run with the latest stable releases of Alliance Auth.\n\n\u003c!-- Inline Links --\u003e\n\n[weblate engage]: https://weblate.ppfeufer.de/engage/alliance-auth-apps/ \"Weblate Translations\"\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fppfeufer%2Fallianceauth-afat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fppfeufer%2Fallianceauth-afat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fppfeufer%2Fallianceauth-afat/lists"}