Browse Source

Add stubs for EVE universe data.

master
Ben Kurtovic 7 years ago
parent
commit
3678aeb05a
6 changed files with 164 additions and 7 deletions
  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 View File

@@ -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 View File

@@ -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 View File

@@ -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 View File

@@ -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 View File

@@ -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 View File

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

...

Loading…
Cancel
Save