Переглянути джерело

Add stubs for EVE universe data.

master
Ben Kurtovic 7 роки тому
джерело
коміт
3678aeb05a
6 змінених файлів з 164 додано та 7 видалено
  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 Переглянути файл

@@ -23,7 +23,7 @@ Guide
mkdir logs
sudo chmod 0600 config/config.yml data/db.sqlite3
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



+ 1
- 1
app.py Переглянути файл

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

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


+ 10
- 5
calefaction/config.py Переглянути файл

@@ -30,9 +30,9 @@ class _ModuleIndex(list):
class Config:
"""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._modules = _ModuleIndex()
self._load()
@@ -60,6 +60,11 @@ class Config:
return obj

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

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

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

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:
with filename.open("rb") as fp:
return yaml.load(fp)


+ 7
- 0
calefaction/eve/__init__.py Переглянути файл

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

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

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

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

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

+ 141
- 0
calefaction/eve/universe.py Переглянути файл

@@ -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 Переглянути файл

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

...

Завантаження…
Відмінити
Зберегти