mirror of
https://github.com/coulisse/spiderweb.git
synced 2024-09-21 07:27:09 +00:00
1.2.1
This commit is contained in:
parent
95970087db
commit
aa5d8e2be2
76
CODE_OF_CONDUCT.md
Normal file
76
CODE_OF_CONDUCT.md
Normal file
@ -0,0 +1,76 @@
|
||||
# Contributor Covenant Code of Conduct
|
||||
|
||||
## Our Pledge
|
||||
|
||||
In the interest of fostering an open and welcoming environment, we as
|
||||
contributors and maintainers pledge to making participation in our project and
|
||||
our community a harassment-free experience for everyone, regardless of age, body
|
||||
size, disability, ethnicity, sex characteristics, gender identity and expression,
|
||||
level of experience, education, socio-economic status, nationality, personal
|
||||
appearance, race, religion, or sexual identity and orientation.
|
||||
|
||||
## Our Standards
|
||||
|
||||
Examples of behavior that contributes to creating a positive environment
|
||||
include:
|
||||
|
||||
* Using welcoming and inclusive language
|
||||
* Being respectful of differing viewpoints and experiences
|
||||
* Gracefully accepting constructive criticism
|
||||
* Focusing on what is best for the community
|
||||
* Showing empathy towards other community members
|
||||
|
||||
Examples of unacceptable behavior by participants include:
|
||||
|
||||
* The use of sexualized language or imagery and unwelcome sexual attention or
|
||||
advances
|
||||
* Trolling, insulting/derogatory comments, and personal or political attacks
|
||||
* Public or private harassment
|
||||
* Publishing others' private information, such as a physical or electronic
|
||||
address, without explicit permission
|
||||
* Other conduct which could reasonably be considered inappropriate in a
|
||||
professional setting
|
||||
|
||||
## Our Responsibilities
|
||||
|
||||
Project maintainers are responsible for clarifying the standards of acceptable
|
||||
behavior and are expected to take appropriate and fair corrective action in
|
||||
response to any instances of unacceptable behavior.
|
||||
|
||||
Project maintainers have the right and responsibility to remove, edit, or
|
||||
reject comments, commits, code, wiki edits, issues, and other contributions
|
||||
that are not aligned to this Code of Conduct, or to ban temporarily or
|
||||
permanently any contributor for other behaviors that they deem inappropriate,
|
||||
threatening, offensive, or harmful.
|
||||
|
||||
## Scope
|
||||
|
||||
This Code of Conduct applies both within project spaces and in public spaces
|
||||
when an individual is representing the project or its community. Examples of
|
||||
representing a project or community include using an official project e-mail
|
||||
address, posting via an official social media account, or acting as an appointed
|
||||
representative at an online or offline event. Representation of a project may be
|
||||
further defined and clarified by project maintainers.
|
||||
|
||||
## Enforcement
|
||||
|
||||
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
||||
reported by contacting the project team at corrado.gerbaldo@gmail.com. All
|
||||
complaints will be reviewed and investigated and will result in a response that
|
||||
is deemed necessary and appropriate to the circumstances. The project team is
|
||||
obligated to maintain confidentiality with regard to the reporter of an incident.
|
||||
Further details of specific enforcement policies may be posted separately.
|
||||
|
||||
Project maintainers who do not follow or enforce the Code of Conduct in good
|
||||
faith may face temporary or permanent repercussions as determined by other
|
||||
members of the project's leadership.
|
||||
|
||||
## Attribution
|
||||
|
||||
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
|
||||
available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
|
||||
|
||||
[homepage]: https://www.contributor-covenant.org
|
||||
|
||||
For answers to common questions about this code of conduct, see
|
||||
https://www.contributor-covenant.org/faq
|
10
README.md
10
README.md
@ -54,6 +54,7 @@ Then you have to install also **python-dev, ssl and mysql libraries**:
|
||||
foo@bar:~$ sudo apt-get install python-dev default-libmysqlclient-dev libssl-dev
|
||||
foo@bar:~$ sudo -H pip install flask_mysqldb --system
|
||||
```
|
||||
|
||||
Finally you have to install matplotlib in order to plots some graphics
|
||||
```console
|
||||
foo@bar:~$ sudo apt-get install python-matplotlib
|
||||
@ -61,11 +62,11 @@ foo@bar:~$ sudo -H pip install --upgrade matplotlib
|
||||
```
|
||||
|
||||
**4) Configuration**
|
||||
In the path `spiderweb/cfg/` rename `config.json.example` in `config.json`:
|
||||
In the path `spiderweb/cfg/` rename `config.json.template` in `config.json`:
|
||||
```console
|
||||
foo@bar:~$ mv config.json.example config.json
|
||||
foo@bar:~$ mv config.json.template config.json
|
||||
```
|
||||
then edit it and set the user and password of your database
|
||||
then edit it and set the user and password of your database and the menu items
|
||||
|
||||
In order to show the right plots, you have to generate them!
|
||||
To do so you have to run *.sh* files inside *scripts* folders, or the better way is to **schedule** them with your **crontab**
|
||||
@ -103,10 +104,13 @@ Screenshot
|
||||
----------
|
||||
<img src="docs/images/01_desktop_main.jpg" width="300"/>
|
||||
<img src="docs/images/02_desktop_plot.jpg" width="300"/>
|
||||
<p float="left">
|
||||
<img src="docs/images/03_mobile_install.jpg" width="200"/>
|
||||
<img src="docs/images/04_mobile_icon.jpg" width="200"/>
|
||||
<img src="docs/images/05_mobile_splash.jpg" width="200"/>
|
||||
<img src="docs/images/06_mobile_main.jpg" width="200"/>
|
||||
</p>
|
||||
|
||||
|
||||
### TODO
|
||||
see it on file ["TODO.md"](docs/TODO.md)
|
||||
|
@ -1,14 +0,0 @@
|
||||
{
|
||||
"mysql":{
|
||||
"host":"localhost",
|
||||
"user":"foo",
|
||||
"passwd":"bar",
|
||||
"db":"dxcluster"
|
||||
},
|
||||
"timer":{
|
||||
"interval":30000
|
||||
},
|
||||
"plot_refresh_timer":{
|
||||
"interval":450000
|
||||
}
|
||||
}
|
22
cfg/config.json.template
Normal file
22
cfg/config.json.template
Normal file
@ -0,0 +1,22 @@
|
||||
{
|
||||
"mysql":{
|
||||
"host":"localhost",
|
||||
"user":"foo",
|
||||
"passwd":"bar",
|
||||
"db":"dxcluster"
|
||||
},
|
||||
"timer":{
|
||||
"interval":30000
|
||||
},
|
||||
"plot_refresh_timer":{
|
||||
"interval":450000
|
||||
},
|
||||
"mycallsign":"XXXXXX",
|
||||
"menu": {
|
||||
"menu_list": [
|
||||
{"label":"Plots", "link": "/plots.html", "external": false},
|
||||
{"label":"Sources", "link": "https://github.com/coulisse/spiderweb/" , "external": true},
|
||||
{"label":"Cookies policy", "link": "/cookies.html", "external": false}
|
||||
]
|
||||
}
|
||||
}
|
@ -1,5 +1,11 @@
|
||||
### Change log
|
||||
___
|
||||
21/10/2020: 1.2.1
|
||||
- Added country column (only on desktop version)
|
||||
- Added external configurable menu
|
||||
- renamed json.config.example json.config.template
|
||||
- Added code of conduct and issue templates
|
||||
___
|
||||
08/09/2020: 1.2
|
||||
- Modified cookies.html in order to insert dinamically the host name (instead of dxcluster.iu1bobw.it)
|
||||
- Removed sitemap.xml from git
|
||||
|
@ -11,4 +11,12 @@
|
||||
- [ ] testing automation
|
||||
- [ ] add page with connected nodes
|
||||
- [ ] add google analitics include on server side
|
||||
- [x] add country on desktop version
|
||||
- [x] add configuration to menu
|
||||
- [ ] edit configuration with cli interface
|
||||
- [ ] migrate to python3
|
||||
- [ ] migrate to boostrap5 (when ready.. end of 2020?)
|
||||
- [ ] set default icon image for images not found (es for 4U1UN)
|
||||
- [ ] implement CSRF protection. See: https://flask-wtf.readthedocs.io/en/stable/csrf.html
|
||||
|
||||
|
||||
|
@ -1,5 +1,6 @@
|
||||
how to connect dx-spider to another cluster node:
|
||||
- login on gnu/linux as sysop user
|
||||
- go in spider/connect folder and create a file named OTHERCALLSIGN with the connection info of the other node
|
||||
- from your client (IU1BOW) send command: set/spider OHTERCALLSIGN
|
||||
- Open file /spider/local_cmd/crontab ed put 0,10,20,30,40,50 * * * * start_connect('OTHERCALLSIGN') unless connected('OTHERCALLSIGN')
|
||||
|
||||
|
@ -75,6 +75,8 @@ function buildHtmlTable(selector,data,rl,countries,callsign) {
|
||||
|
||||
|
||||
row$.append($('<td/>').html('<a href="https://www.qrz.com/db/'+data[i].dx+ '" target="_blank" rel="noopener"><i class="search" aria-label="'+data[i].dx+'"></i></a><span> '+dx+'</span>'));
|
||||
|
||||
row$.append($('<td class="d-none d-lg-table-cell d-xl-table-cell"/>').html(country.country));
|
||||
try {
|
||||
row$.append($('<td/>').html('<a href="#" data-toggle="tooltip" title="'+country.country+'"><img class="img-flag" src="https://www.countryflags.io/'+country.ISO+'/shiny/32.png" alt="'+country.country+'"></a>'));
|
||||
} catch (err) {
|
||||
|
2
static/js/min/application.min.js
vendored
2
static/js/min/application.min.js
vendored
File diff suppressed because one or more lines are too long
@ -20,25 +20,22 @@
|
||||
<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
|
||||
<a class="navbar-brand" href="/">
|
||||
<img src="/static/favicon.png" width="30" height="30" class="d-inline-block align-top" alt="">
|
||||
IU1BOW
|
||||
{{ mycallsign }}
|
||||
</a>
|
||||
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarToggler01" aria-controls="navbarToggler01" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<div class="collapse navbar-collapse" id="navbarToggler01">
|
||||
<ul class="navbar-nav mr-auto">
|
||||
{% for dict_item in menu_list %}
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="/plots.html">Plots</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="https://github.com/coulisse/spiderweb/" target="blank" rel="noopener">Sources</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="https://iu1bow.blogspot.com" target="blank" rel="noopener">My Blog</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="/static/html/cookies.html">Cookies policy<span class="sr-only">Link</span></a>
|
||||
<a class="nav-link {% if request.path == dict_item["link"] %} active {% endif %}" href="{{dict_item["link"]}}"
|
||||
{% if dict_item["external"] %}
|
||||
target="blank" rel="noopener"
|
||||
{% endif %}
|
||||
>{{dict_item["label"]}}<span class="sr-only">Link</span></a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
<form class="form-inline" id="form-callsign" enctype="application/x-www-form-urlencoded" >
|
||||
<div class="input-group" id='input-group-callsign'>
|
||||
@ -70,6 +67,7 @@ IU1BOW
|
||||
<th>DX De</th>
|
||||
<th>Freq</th>
|
||||
<th>DX</th>
|
||||
<th class="d-none d-lg-table-cell d-xl-table-cell">Country</th>
|
||||
<th></th>
|
||||
<th class="d-none d-lg-table-cell d-xl-table-cell">Comments</th>
|
||||
<th>UTC Time</th>
|
||||
@ -85,7 +83,7 @@ IU1BOW
|
||||
<div class="footer-copyright text-center py-3">2020 <span class="copyleft">©</span> Copyleft:
|
||||
<a href="https://github.com/coulisse/spiderweb/" target="blank" rel="noopener">IU1BOW Spiderweb</a>
|
||||
</div>
|
||||
<script src="https://cdn.jsdelivr.net/npm/cookie-bar/cookiebar-latest.min.js?thirdparty=1&always=1&showPolicyLink=1&remember=365"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/cookie-bar/cookiebar-latest.min.js?thirdparty=1&always=1&showPolicyLink=1&remember=365" crossorigin="anonymous"></script>
|
||||
</footer>
|
||||
|
||||
<script async src="static/js/min/load-sw.min.js"></script>
|
||||
|
@ -20,25 +20,22 @@
|
||||
<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
|
||||
<a class="navbar-brand" href="/">
|
||||
<img src="/static/favicon.png" width="30" height="30" class="d-inline-block align-top" alt="">
|
||||
IU1BOW
|
||||
{{ mycallsign }}
|
||||
</a>
|
||||
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarToggler01" aria-controls="navbarToggler01" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<div class="collapse navbar-collapse" id="navbarToggler01">
|
||||
<ul class="navbar-nav mr-auto">
|
||||
{% for dict_item in menu_list %}
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="/plots.html">Plots</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="https://github.com/coulisse/spiderweb/" target="blank" rel="noopener">Sources</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="https://iu1bow.blogspot.com" target="blank" rel="noopener">My Blog</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link active" href="/static/html/cookies.html">Cookies policy<span class="sr-only">Link</span></a>
|
||||
<a class="nav-link {% if request.path == dict_item["link"] %} active {% endif %} " href="{{dict_item["link"]}}"
|
||||
{% if dict_item["external"] %}
|
||||
target="blank" rel="noopener"
|
||||
{% endif %}
|
||||
>{{dict_item["label"]}}<span class="sr-only">Link</span></a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
<form class="form-inline" id="form-callsign" enctype="application/x-www-form-urlencoded" >
|
||||
<div class="input-group" id='input-group-callsign'>
|
||||
@ -119,8 +116,7 @@ IU1BOW
|
||||
<div class="footer-copyright text-center py-3">
|
||||
2020 <span class="copyleft">©</span> Copyleft: <a href="https://github.com/coulisse/spiderweb/" target="blank" rel="noopener">IU1BOW Spiderweb</a>
|
||||
</div>
|
||||
<script src="https://cdn.jsdelivr.net/npm/cookie-bar/cookiebar-latest.min.js?thirdparty=1&always=1&showPolicyLink=1&remember=365">
|
||||
</script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/cookie-bar/cookiebar-latest.min.js?thirdparty=1&always=1&showPolicyLink=1&remember=365" crossorigin="anonymous"></script>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
@ -23,27 +23,24 @@
|
||||
<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
|
||||
<a class="navbar-brand" href="/">
|
||||
<img src="/static/favicon.png" width="30" height="30" class="d-inline-block align-top" alt="">
|
||||
IU1BOW
|
||||
{{ mycallsign }}
|
||||
</a>
|
||||
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarToggler01" aria-controls="navbarToggler01" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<div class="collapse navbar-collapse" id="navbarToggler01">
|
||||
<ul class="navbar-nav mr-auto">
|
||||
{% for dict_item in menu_list %}
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="/plots.html">Plots</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="https://github.com/coulisse/spiderweb/" target="blank" rel="noopener">Sources</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="https://iu1bow.blogspot.com" target="blank" rel="noopener">My Blog</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="/static/html/cookies.html">Cookies policy<span class="sr-only">Link</span></a>
|
||||
<a class="nav-link {% if request.path == dict_item["link"] %} active {% endif %}" href="{{dict_item["link"]}}"
|
||||
{% if dict_item["external"] %}
|
||||
target="blank" rel="noopener"
|
||||
{% endif %}
|
||||
>{{dict_item["label"]}}<span class="sr-only">Link</span></a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
<form class="form-inline" id="form-callsign" enctype="application/x-www-form-urlencoded" >
|
||||
<form method="POST" class="form-inline" id="form-callsign" enctype="application/x-www-form-urlencoded" >
|
||||
<div class="input-group" id='input-group-callsign'>
|
||||
<input type="text" class="form-control" placeholder="callsign" aria-label="callsign" aria-describedby="button-addon2" id="callsignInput" >
|
||||
<div class="input-group-append">
|
||||
@ -74,7 +71,7 @@ IU1BOW
|
||||
<div class="row mx-auto">
|
||||
<!--Sidebar content-->
|
||||
<div class="collapse" id="collapseFilters">
|
||||
<form id="form-filters" enctype="multipart/form-data" style="background-color: #F2F2F2;">
|
||||
<form method="POST" id="form-filters" enctype="multipart/form-data" style="background-color: #F2F2F2;">
|
||||
<select class="custom-select" id="band" size="14" multiple>
|
||||
<option selected value="SHF">SHF</option>
|
||||
<option selected value="UHF">UHF</option>
|
||||
@ -128,6 +125,7 @@ IU1BOW
|
||||
<th>DX De</th>
|
||||
<th>Freq</th>
|
||||
<th>DX</th>
|
||||
<th class="d-none d-lg-table-cell d-xl-table-cell">Country</th>
|
||||
<th></th>
|
||||
<th class="d-none d-lg-table-cell d-xl-table-cell">Comments</th>
|
||||
<th>UTC Time</th>
|
||||
@ -143,7 +141,7 @@ IU1BOW
|
||||
<div class="footer-copyright text-center py-3">2020 <span class="copyleft">©</span> Copyleft:
|
||||
<a href="https://github.com/coulisse/spiderweb/" target="blank" rel="noopener">IU1BOW Spiderweb</a>
|
||||
</div>
|
||||
<script src="https://cdn.jsdelivr.net/npm/cookie-bar/cookiebar-latest.min.js?thirdparty=1&always=1&showPolicyLink=1&remember=365"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/cookie-bar/cookiebar-latest.min.js?thirdparty=1&always=1&showPolicyLink=1&remember=365" crossorigin="anonymous"></script>
|
||||
</footer>
|
||||
|
||||
<script async src="static/js/min/load-sw.min.js"></script>
|
||||
|
@ -19,25 +19,22 @@
|
||||
<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
|
||||
<a class="navbar-brand" href="/">
|
||||
<img src="/static/favicon.png" width="30" height="30" class="d-inline-block align-top" alt="">
|
||||
IU1BOW
|
||||
{{ mycallsign }}
|
||||
</a>
|
||||
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarToggler01" aria-controls="navbarToggler01" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<div class="collapse navbar-collapse" id="navbarToggler01">
|
||||
<ul class="navbar-nav mr-auto">
|
||||
{% for dict_item in menu_list %}
|
||||
<li class="nav-item">
|
||||
<a class="nav-link active" href="/plots.html">Plots</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="https://github.com/coulisse/spiderweb/" target="blank" rel="noopener">Sources</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="https://iu1bow.blogspot.com" target="blank" rel="noopener">My Blog</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="/static/html/cookies.html">Cookies policy<span class="sr-only">Link</span></a>
|
||||
<a class="nav-link {% if request.path == dict_item["link"] %} active {% endif %}" href="{{dict_item["link"]}}"
|
||||
{% if dict_item["external"] %}
|
||||
target="blank" rel="noopener"
|
||||
{% endif %}
|
||||
>{{dict_item["label"]}}<span class="sr-only">Link</span></a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
<form class="form-inline" id="form-callsign" enctype="application/x-www-form-urlencoded" >
|
||||
<div class="input-group" id='input-group-callsign'>
|
||||
@ -69,8 +66,7 @@ IU1BOW
|
||||
<div class="footer-copyright text-center py-3">
|
||||
2020 <span class="copyleft">©</span> Copyleft: <a href="https://github.com/coulisse/spiderweb/" target="blank" rel="noopener">IU1BOW Spiderweb</a>
|
||||
</div>
|
||||
<script src="https://cdn.jsdelivr.net/npm/cookie-bar/cookiebar-latest.min.js?thirdparty=1&always=1&showPolicyLink=1&remember=365">
|
||||
</script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/cookie-bar/cookiebar-latest.min.js?thirdparty=1&always=1&showPolicyLink=1&remember=365" crossorigin="anonymous"></script>
|
||||
</footer>
|
||||
<script async src="static/js/min/load-sw.min.js">
|
||||
</script>
|
||||
|
16
webapp.py
16
webapp.py
@ -6,9 +6,8 @@ import json
|
||||
|
||||
__author__ = 'IU1BOW - Corrado'
|
||||
|
||||
|
||||
app = flask.Flask(__name__)
|
||||
app.config["DEBUG"] = True
|
||||
app.config["DEBUG"] = False
|
||||
app.config['SECRET_KEY'] = 'secret!'
|
||||
|
||||
#load config file
|
||||
@ -135,7 +134,9 @@ def spotlist():
|
||||
def spots():
|
||||
payload=spotquery()
|
||||
country_data=load_country()
|
||||
response=flask.Response(render_template('index.html',payload=payload,timer_interval=cfg['timer']['interval'],country_data=country_data))
|
||||
#y=json.loads(cfg['menu'])
|
||||
#menu_list=json.dumps(cfg['menu']['menu_list'])
|
||||
response=flask.Response(render_template('index.html',mycallsign=cfg['mycallsign'],menu_list=cfg['menu']['menu_list'],payload=payload,timer_interval=cfg['timer']['interval'],country_data=country_data))
|
||||
return response
|
||||
|
||||
@app.route('/service-worker.js', methods=['GET'])
|
||||
@ -165,14 +166,15 @@ def plotlist():
|
||||
@app.route('/plots.html')
|
||||
def plots():
|
||||
payload=plotlist()
|
||||
response=flask.Response(render_template('plots.html',payload=payload,timer_interval=cfg['plot_refresh_timer']['interval']))
|
||||
response=flask.Response(render_template('plots.html',mycallsign=cfg['mycallsign'],menu_list=cfg['menu']['menu_list'],payload=payload,timer_interval=cfg['plot_refresh_timer']['interval']))
|
||||
return response
|
||||
|
||||
|
||||
@app.route('/cookies.html')
|
||||
@app.route('/cookies.html', methods=['GET'])
|
||||
def cookies():
|
||||
return app.send_static_file('html/cookies.html')
|
||||
|
||||
# return app.send_static_file('html/cookies.html')
|
||||
response=flask.Response(render_template('cookies.html',mycallsign=cfg['mycallsign'],menu_list=cfg['menu']['menu_list']))
|
||||
return response
|
||||
|
||||
@app.route('/sitemap.xml')
|
||||
def sitemap():
|
||||
|
Loading…
Reference in New Issue
Block a user