def formatted_loadout_attributes(fit, cap=None): if cap is None: cap = fit.get_cap_stability() # TODO reload time options return render('attribs.html', eng=formatted_engineering(fit, cap), )
def format_attr_category(id, title, title_data, title_class, contents): return render('attrib_category.html', id=id, title=title, titledata=Markup(title_data), titleclass=title_class, contents=contents)
def formatted_engineering(fit, cap): slots_left = fit.get_ship_attribute('turretSlotsLeft') slots_total = fit.get_ship_attribute('turretSlots') turrets_formatted = format_used(slots_total - slots_left, slots_total) turrets_over = 'overflow' if slots_left < 0 else '' slots_left = fit.get_ship_attribute('launcherSlotsLeft') slots_total = fit.get_ship_attribute('launcherSlots') launchers_formatted = format_used(slots_total - slots_left, slots_total) launchers_over = 'overflow' if slots_left < 0 else '' captime, capdelta = format_capacitor(cap) contents = render('attribs_engineering.html', turrets_formatted=turrets_formatted, turrets_over=turrets_over, launchers_formatted=launchers_formatted, launchers_over=launchers_over, captime=captime, capdelta=capdelta, ) return format_attr_category( 'engineering', 'Engineering', ("<span title='Capacitor stability percentage / depletion time (estimated)'>" + captime + '</span>'), 'overflow' if turrets_over or launchers_over else '', contents )
def view_loadout_public(loadout_id): fit = Fit.get_fit(loadout_id) author = Account.get(fit.metadata["accountid"]) # TODO: loadout history stuff # TODO: viewer permission stuff # TODO: url overrides tags = "" if fit.metadata.get("tags", []): tags = " (%s)" % (", ".join(fit.metadata["tags"])) title = fit.metadata["name"] + tags if fit.metadata.get("ship"): title += " / " + fit.metadata["ship"]["typename"] # TODO revision override in title # TODO canonicaluri # capacitors = fit.get_all_capacitors() # interesting_attrs = fit.get_interesting_attrs() formatted_attributes = chrome_fit.formatted_loadout_attributes(fit) loadout_section = chrome.render("loadout_loadout.html", fit=fit) # presets_section = chrome.render('loadout_presets.html', fit=fit) # remote_section = chrome.render('loadout_remote.html', fit=fit) # comments_section = chrome.render('loadout_comments.html', fit=fit) # meta_section = chrome.render('loadout_meta.html', fit=fit) # export_section = chrome.render('loadout_export.html', fit=fit) page = chrome.header(title=title) # TODO index checking page += chrome.render( "loadout_view.html", loadoutid=loadout_id, fit=fit, formatted_attributes=formatted_attributes, fitname="TODO" ) # TODO: cap and ia data chrome.include_js_snippet("view_loadout") chrome.include_js_snippet("view_loadout-presets") chrome.include_js_snippet("new_loadout-ship") chrome.include_js_snippet("new_loadout-modules") chrome.include_js_snippet("new_loadout-drones") chrome.include_js_snippet("new_loadout-implants") chrome.include_js_snippet("new_loadout-remote") from jinja2 import Markup page += Markup('<pre style="overflow: hidden;">%s</pre>' % json.dumps(fit.to_dict(), indent=4)) page += chrome.footer() resp = make_response(page) # resp = make_response(chrome.header() + data + chrome.footer()) resp.headers["Content-Security-Policy"] = ( "default-src 'none'" " ; style-src 'self' https://fonts.googleapis.com http://fonts.googleapis.com https://cdnjs.cloudflare.com http://cdnjs.cloudflare.com 'unsafe-inline'" " ; font-src https://themes.googleusercontent.com http://themes.googleusercontent.com" " ; img-src 'self' https://image.eveonline.com http://image.eveonline.com" " ; script-src 'self' https://cdnjs.cloudflare.com http://cdnjs.cloudflare.com" " ; connect-src 'self'" ) return resp