Browse Apps

Django Models from EVE SDE

Eve Online SDE Export in Django Model form


Django Models from EVE SDE

PyPI Discord

Base models from SDE, with an experiment in in-database translations pulled from the SDE and minor helpers for common functions.

A plain Django app - it works standalone, without AllianceAuth installed. AllianceAuth is used opportunistically where it makes sense (see Optional Settings) but is never a hard requirement.

EVE SDE Docs

EVE SDE

See eve_sde/sde_types.txt for an idea of the top level fields that are available in the SDE, note that some fields have sub fields that are imported differently.

Compatibility

Current list of imported models

  • Map
  • Region
  • Constellation
  • SolarSystem
  • Planet
  • Moon
  • NPC Station
  • Stargate
  • Landmark
  • Item Market Groups
  • Item Groups
  • Item Categories
  • Item Types
  • Item Dogma
  • Dogma Categories
  • Dogma Units
  • Dogma Attributes
  • Dogma Effects
  • Blueprints
  • Activities
    • Products
    • Materials
  • Archetypes
  • Freelance Job Schemas
  • Parameters
  • Sovereignty Upgrades
  • Accounting Entry Types
  • Notification Types
  • Corporation Role Groups
  • Corporation Roles
  • Metenox Moon Drill
  • Skill Plans
  • Milestones
  • Skill Requirements
  • Type Lists
  • Types
  • Groups
  • Categories

Setup

  • pip install django-eveonline-sde

  • modify your local.py as modeltranslation needs to be first in the list.

INSTALLED_APPS = [
    "modeltranslation",
] + INSTALLED_APPS

INSTALLED_APPS += [
    # ..... the rest of your apps
]
  • If you're not running AllianceAuth, set LANGUAGES yourself. modeltranslation adds one DB column per entry in LANGUAGES (e.g. name_de, name_fr_fr), and this package's migrations were generated against the exact set below, so it must match - AllianceAuth already ships this same LANGUAGES setting, which is why this step is only needed standalone.
LANGUAGES = (
    ("en", "English"),
    ("de", "German"),
    ("es", "Spanish"),
    ("it-it", "Italian"),
    ("ja", "Japanese"),
    ("ko-kr", "Korean"),
    ("fr-fr", "French"),
    ("nl-nl", "Dutch"),
    ("pl-pl", "Polish"),
    ("ru", "Russian"),
    ("uk", "Ukrainian"),
    ("zh-hans", "Simplified Chinese"),
)

USE_I18N = True
  • Add "eve_sde", to your INSTALLED_APPS

  • migrate etc

  • python manage.py esde_load_sde

  • Add a periodic task to check for SDE updates, which tend to happen after downtime.

if "eve_sde" in INSTALLED_APPS:
    # Run at 12:00 UTC each day
    CELERYBEAT_SCHEDULE["EVE SDE :: Check for SDE Updates"] = {
        "task": "eve_sde.tasks.check_for_sde_updates",
        "schedule": crontab(minute="0", hour="12"),
    }

Admin

Every SDE model is registered in the Django admin as read-only (browse/search only, no add/change/delete) under /admin/eve_sde/. Two extra pages aren't SDE data themselves, but report on the import process:

  • Django EvE SDE (the app's own settings-style page) shows the currently-loaded build number, release date, and last check time. The build number is also shown directly in the app's name in the admin sidebar/index, e.g. Django EvE SDE v0.0.1 (SDE Build 3142455).
  • Sde sections shows one row per model with its last update time and a row-count health indicator (green when the imported row count matches the source file's line count, red otherwise).

Optional Settings

ESDE_BATCH_SIZE

Defaults to 500 reduce for smaller DB inserts

ESDE_CHUNK_SIZE

Defaults to 5000 reduce if heavily memory constrained

ESDE_TASK_SPLIT

Splits the update tasks into smaller sub tasks Defaults to False toggle if bare metal or you have a non standard persistent storage for your myauth folder in docker. See Issue #26

ESDE_CELERY_TASK_BASE

The Celery task base class used for single-flight locking (skip re-queuing an update task while one is already running/queued). Defaults to AllianceAuth's "allianceauth.services.tasks.QueueOnce". Set to a different "package.module.ClassName" import path, or leave the default - if AllianceAuth isn't installed, this automatically falls back to celery_once.QueueOnce directly with the same locking behavior.

ESDE_FREELANCE_FACTION_MODEL / ESDE_FREELANCE_CHARACTER_MODEL / ESDE_FREELANCE_CORPORATION_MODEL / ESDE_FREELANCE_ALLIANCE_MODEL

Freelance job parameters can require a character, corporation, alliance, or faction as their value - these settings say which model each resolves to. Each is a "package.module.ClassName" import path, defaulting to AllianceAuth's eveonline models (EveCharacter, EveCorporationInfo, EveAllianceInfo, EveFactionInfo). Point them at your own equivalent models, or set any of them to None/leave unset to disable that value type - if the AllianceAuth default can't be imported (AllianceAuth not installed) it degrades to None automatically rather than raising an error.

License

GNU GPLv3

Contributors

Thankyou to all our contributors!

contributors

Credits

Because i am lazy, Shamlessley built using This Template \<3 @ppfeufer

No reviews yet...

Python Requirements

  • celery-once<4,>=3
  • celery<6,>=5
  • django-modeltranslation==0.19.17
  • django-solo<3,>=2
  • httpx<1,>=0.28

Required Python packages to be installed and other Python requirement.

Classifiers

  • Environment :: Web Environment
  • Framework :: Django
  • Framework :: Django :: 4.2
  • Intended Audience :: Developers
  • License :: OSI Approved :: GNU General Public License v3 (GPLv3)
  • Operating System :: OS Independent
  • Programming Language :: Python
  • Programming Language :: Python :: 3 :: Only
  • Programming Language :: Python :: 3.10
  • Programming Language :: Python :: 3.11
  • Programming Language :: Python :: 3.12
  • Programming Language :: Python :: 3.13
  • Programming Language :: Python :: 3.14
  • Topic :: Internet :: WWW/HTTP
  • Topic :: Internet :: WWW/HTTP :: Dynamic Content

Version

0.2.0

License

GPLv3

PyPI

  https://pypi.org/project/django-eveonline-sde/

Last updated

2 days, 4 hours ago

First published

7 months, 1 week ago

Category

Infrastructure

Rating

-

Authors

Aaron Kable

Maintainers

-

Please login to see more options.