Parcourir la source

Add stubs for EVE universe data.

master
Ben Kurtovic il y a 8 ans
Parent
révision
3678aeb05a
6 fichiers modifiés avec 164 ajouts et 7 suppressions
  1. +1
    -1
      README.md
  2. +1
    -1
      app.py
  3. +10
    -5
      calefaction/config.py
  4. +7
    -0
      calefaction/eve/__init__.py
  5. +141
    -0
      calefaction/eve/universe.py
  6. +4
    -0
      scripts/read_sde.py

+ 1
- 1
README.md Voir le fichier

@@ -23,7 +23,7 @@ Guide
mkdir logs mkdir logs
sudo chmod 0600 config/config.yml data/db.sqlite3 sudo chmod 0600 config/config.yml data/db.sqlite3
sudo chown www-data:www-data config/config.yml data data/db.sqlite3 logs sudo chown www-data:www-data config/config.yml data data/db.sqlite3 logs
... # TODO: convert these into scripts, add module instructions
... # TODO: convert these into scripts, add SDE instructions, add module instructions


### Test ### Test




+ 1
- 1
app.py Voir le fichier

@@ -19,7 +19,7 @@ from calefaction.util import (
app = Flask(__name__) app = Flask(__name__)


basepath = Path(__file__).resolve().parent basepath = Path(__file__).resolve().parent
config = Config(basepath / "config")
config = Config(basepath)
Database.path = str(basepath / "data" / "db.sqlite3") Database.path = str(basepath / "data" / "db.sqlite3")
eve = EVE(config) eve = EVE(config)
auth = AuthManager(config, eve) auth = AuthManager(config, eve)


+ 10
- 5
calefaction/config.py Voir le fichier

@@ -30,9 +30,9 @@ class _ModuleIndex(list):
class Config: class Config:
"""Stores application-wide configuration info.""" """Stores application-wide configuration info."""


def __init__(self, confdir):
self._dir = confdir
self._filename = confdir / "config.yml"
def __init__(self, basedir):
self._dir = basedir
self._filename = basedir / "config" / "config.yml"
self._data = None self._data = None
self._modules = _ModuleIndex() self._modules = _ModuleIndex()
self._load() self._load()
@@ -60,6 +60,11 @@ class Config:
return obj return obj


@property @property
def dir(self):
"""Return the application's base directory."""
return self._dir

@property
def modules(self): def modules(self):
"""Return a list-like object (a _ModuleIndex) of loaded modules.""" """Return a list-like object (a _ModuleIndex) of loaded modules."""
return self._modules return self._modules
@@ -74,7 +79,7 @@ class Config:
app.config["SERVER_NAME"] = self.get("site.canonical") app.config["SERVER_NAME"] = self.get("site.canonical")
app.config["PREFERRED_URL_SCHEME"] = self.scheme app.config["PREFERRED_URL_SCHEME"] = self.scheme
app.config["MAKO_MODULE_DIRECTORY"] = str( app.config["MAKO_MODULE_DIRECTORY"] = str(
self._dir.parent / "templates" / ".cache")
self._dir / "templates" / ".cache")
app.secret_key = self.get("auth.session_key") app.secret_key = self.get("auth.session_key")


for module in self.modules: for module in self.modules:
@@ -85,7 +90,7 @@ class Config:


Returns a YAML parse of {confdir}/modules/{name}.yml, or None. Returns a YAML parse of {confdir}/modules/{name}.yml, or None.
""" """
filename = self._dir / "modules" / (name + ".yml")
filename = self._dir / "config" / "modules" / (name + ".yml")
try: try:
with filename.open("rb") as fp: with filename.open("rb") as fp:
return yaml.load(fp) return yaml.load(fp)


+ 7
- 0
calefaction/eve/__init__.py Voir le fichier

@@ -8,6 +8,7 @@ from .clock import Clock
from .esi import EVESwaggerInterface from .esi import EVESwaggerInterface
from .image import ImageServer from .image import ImageServer
from .sso import SSOManager from .sso import SSOManager
from .universe import Universe
from .zkill import ZKillboard from .zkill import ZKillboard
from .. import __release__, baseLogger from .. import __release__, baseLogger


@@ -26,6 +27,7 @@ class EVE:
self._esi = EVESwaggerInterface(session, logger.getChild("esi")) self._esi = EVESwaggerInterface(session, logger.getChild("esi"))
self._image = ImageServer() self._image = ImageServer()
self._sso = SSOManager(session, logger.getChild("sso")) self._sso = SSOManager(session, logger.getChild("sso"))
self._universe = Universe(config.dir / "data" / "universe")
self._zkill = ZKillboard(session, logger.getChild("zkill")) self._zkill = ZKillboard(session, logger.getChild("zkill"))


@staticmethod @staticmethod
@@ -58,6 +60,11 @@ class EVE:
return self._sso return self._sso


@property @property
def universe(self):
"""The Universe API module."""
return self._universe

@property
def zkill(self): def zkill(self):
"""The zKillboard API module.""" """The zKillboard API module."""
return self._zkill return self._zkill

+ 141
- 0
calefaction/eve/universe.py Voir le fichier

@@ -0,0 +1,141 @@
# -*- coding: utf-8 -*-

__all__ = ["Universe"]

class _SolarSystem:
"""Represents a solar system."""

def __init__(self, universe, sid, data):
self._universe = universe
self._id = sid
self._data = data

@property
def id(self):
"""The solar system's ID, as an integer."""
return self._id

@property
def name(self):
"""The solar system's name, as a string."""
return self._data["name"]

@property
def constellation(self):
"""The solar system's constellation, as a _Constellation object."""
return self._universe.constellation(self._data["constellation"])

@property
def region(self):
"""The solar system's region, as a _Region object."""
return self._universe.region(self._data["region"])

@property
def security(self):
"""The solar system's security status, as a float."""
return self._data["security"]


class _Constellation:
"""Represents a constellation."""

def __init__(self, universe, cid, data):
self._universe = universe
self._id = cid
self._data = data

@property
def id(self):
"""The constellation's ID, as an integer."""
return self._id

@property
def name(self):
"""The constellation's name, as a string."""
return self._data["name"]

@property
def region(self):
"""The constellation's region, as a _Region object."""
return self._universe.region(self._data["region"])


class _Region:
"""Represents a region."""

def __init__(self, universe, rid, data):
self._universe = universe
self._id = rid
self._data = data

@property
def id(self):
"""The region's ID, as an integer."""
return self._id

@property
def name(self):
"""The region's name, as a string."""
return self._data["name"]


class _DummySolarSystem(_SolarSystem):
"""Represents an unknown or invalid solar system."""

def __init__(self, universe):
super().__init__(universe, -1, {
"name": "Unknown",
"constellation": -1,
"region": -1,
"security": 0.0
})


class _DummyConstellation(_Constellation):
"""Represents an unknown or invalid constellation."""

def __init__(self, universe):
super().__init__(universe, -1, {
"name": "Unknown",
"region": -1
})


class _DummyRegion(_Region):
"""Represents an unknown or invalid region."""

def __init__(self, universe):
super().__init__(universe, -1, {
"name": "Unknown"
})


class Universe:
"""EVE API module for static universe data."""

def __init__(self, datadir):
self._dir = datadir

def system(self, sid):
"""Return a _SolarSystem with the given ID.

If the ID is invalid, return a dummy unknown object with ID -1.
"""
...
return _DummySolarSystem(self)

def constellation(self, cid):
"""Return a _Constellation with the given ID.

If the ID is invalid, return a dummy unknown object with ID -1.
"""
...
return _DummyConstellation(self)

def region(self, rid):
"""Return a _Region with the given ID.

If the ID is invalid, return a dummy unknown object with ID -1.
"""
...
return _DummyRegion(self)

+ 4
- 0
scripts/read_sde.py Voir le fichier

@@ -0,0 +1,4 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

...

Chargement…
Annuler
Enregistrer