@@ -12,6 +12,8 @@ from ...database import Database as MainDB | |||
__all__ = ["get_current", "get_overview", "get_summary", "get_unit"] | |||
_MAX_STALENESS = 60 * 60 | |||
CampaignDB.path = str(Path(MainDB.path).parent / "db_campaigns.sqlite3") | |||
app.before_request(CampaignDB.pre_hook) | |||
@@ -28,8 +30,8 @@ def _update_operation(cname, opname, new): | |||
qualifiers = operation["qualifiers"] | |||
show_isk = operation.get("isk", True) | |||
primary = 42 | |||
secondary = 63 | |||
primary = __import__("random").randint(10, 99) | |||
secondary = __import__("random").randint(100000, 50000000) | |||
g.campaign_db.set_overview(cname, opname, primary, secondary) | |||
def get_current(): | |||
@@ -49,13 +51,14 @@ def get_overview(cname, opname): | |||
Updates the database if necessary, so this can take some time. | |||
""" | |||
maxdelta = timedelta(seconds=_MAX_STALENESS) | |||
with _lock: | |||
last_updated = g.campaign_db.check_operation(cname, opname) | |||
if last_updated is None: | |||
logger.debug("Adding campaign=%s operation=%s", cname, opname) | |||
_update_operation(cname, opname, new=True) | |||
g.campaign_db.add_operation(cname, opname) | |||
elif datetime.utcnow() - last_updated > timedelta(seconds=60 * 60): | |||
elif datetime.utcnow() - last_updated > maxdelta: | |||
logger.debug("Updating campaign=%s operation=%s", cname, opname) | |||
_update_operation(cname, opname, new=False) | |||
g.campaign_db.touch_operation(cname, opname) | |||
@@ -376,30 +376,30 @@ h2 .disabled::after { | |||
justify-content: space-between; | |||
} | |||
.operation .overview .primary { | |||
line-height: 60px; | |||
.operation .primary .num { | |||
height: 60px; | |||
line-height: 60px; | |||
} | |||
.operation .overview .primary.big { | |||
.operation .big { | |||
font-size: 300%; | |||
} | |||
.operation .overview .primary.medium { | |||
.operation .medium { | |||
font-size: 200%; | |||
} | |||
.operation .overview .primary.small { | |||
.operation .small { | |||
font-size: 150%; | |||
} | |||
.operation .overview .unit { | |||
.operation .unit { | |||
font-style: italic; | |||
} | |||
@media (min-width: 800px) { | |||
#operations { | |||
margin: 1em; | |||
margin: 1em 2em; | |||
} | |||
#operations section { | |||
@@ -410,6 +410,14 @@ h2 .disabled::after { | |||
margin: 0 0.75em; | |||
text-align: center; | |||
} | |||
.operation .secondary { | |||
margin-top: 0.5em; | |||
} | |||
.operation .secondary .unit { | |||
margin-left: 0.15em; | |||
} | |||
} | |||
@media (max-width: 799px) { | |||
@@ -421,12 +429,12 @@ h2 .disabled::after { | |||
margin: 0.5em 0; | |||
} | |||
.operation .overview > div { | |||
.operation .primary, .operation .primary .unit { | |||
display: inline-block; | |||
} | |||
.operation .overview .unit { | |||
margin-left: 0.25em; | |||
.operation .unit { | |||
margin-left: 0.15em; | |||
} | |||
} | |||
@@ -23,11 +23,15 @@ | |||
<a href="${url_for('campaigns.operation', cname=name, opname=opname)}">${operation["title"] | h}</a> | |||
</h3> | |||
<div class="overview"> | |||
<div class="primary ${klass}">${"{:,}".format(primary)}</div> | |||
<div class="unit">${mod.get_unit(operation, primary)}</div> | |||
<div class="primary"> | |||
<span class="num ${klass}">${"{:,}".format(primary)}</span> | |||
<div class="unit">${mod.get_unit(operation, primary)}</div> | |||
</div> | |||
% if secondary is not None: | |||
<div class="secondary">${"{:,}".format(secondary)}</div> | |||
<div class="unit">${mod.get_unit(operation, secondary, primary=False)}</div> | |||
<div class="secondary"> | |||
<span class="num">${"{:,}".format(secondary)}</span> | |||
<span class="unit">${mod.get_unit(operation, secondary, primary=False)}</span> | |||
</div> | |||
% endif | |||
</div> | |||
% if summary: | |||