Compare commits

...

15 Commits

9 changed files with 31 additions and 22 deletions

View File

@ -26,8 +26,7 @@ Deployed on:
* Bootstrap the application via [xppl/app.py](xppl/app.py).
* Added [Makefile](Makefile) targets for installing [RQLite](https://github.com/rqlite/rqlite).
* Run [isort](https://isort.readthedocs.io/en/latest/) and [pylava](https://github.com/pylava/pylava)
code audit tools over the source to use PEP 8 style, catch any erroneous
imports, unused variables etc. with some basic static analysis.
code audit tools over the source.
* Use a new [Hypothesis](https://web.hypothes.is/) API key.
### Fixed

View File

@ -7,7 +7,7 @@ The [XPUB] library living at [Varia].
[XPUB]: http://xpub.nl/
[Varia]: https://varia.zone/
# Change It
# Run It Locally
Please note, the following instructions have only been tested on the Debian Stretch OS.
@ -26,6 +26,8 @@ $ pipenv install --dev --three
$ pipenv run devserver
```
The local development web server will now be available.
If you need to check the database contents, run:
```bash
@ -56,10 +58,11 @@ The XPPL is made up of a few parts:
* The [Flask] application and it's dependencies.
* The [RQLite] database.
* The [Syncthing] integration for uploads.
* The Nginx reverse proxy.
* The Let's Encrypt web certificates.
* The [Nginx reverse proxy].
* The [Let's Encrypt web certificates].
If you know [Ansible] (it's just YAML), you can just [read the entire configuration].
If you know [Ansible](https://www.ansible.com/overview/how-ansible-works) (it's
just YAML), you can just [read the entire configuration].
On the varia.zone machine, you can check the running services with:
@ -85,6 +88,7 @@ No backups are configured right now.
[Flask]: http://flask.pocoo.org/
[RQLite]: https://github.com/rqlite/rqlite
[Syncthing]: https://docs.syncthing.net/
[Nginx reverse proxy]: https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/
[Let's Encrypt web certificates]: https://certbot.eff.org/
[Syncthing UI]: https://vvvvvvaria.org/st/
[read the entire configuration]: ansible/plays/main.yml
[Ansible]: https://www.ansible.com/overview/how-ansible-works
[read the entire configuration]: ansible/plays/setup.yml

View File

@ -17,11 +17,11 @@ $ sudo apt install -y ansible
## Setup a New XPPL
```bash
$ ansible-playbook --limit varia-zone --ask-become-pass plays/setup.yml
$ ansible-playbook --limit varia.zone --ask-become-pass plays/setup.yml
```
## Deploy a New XPPL Version
```bash
$ ansible-playbook --limit varia-zone --ask-become-pass plays/deploy.yml
$ ansible-playbook --limit varia.zone --ask-become-pass plays/deploy.yml
```

View File

@ -1,2 +1,2 @@
[managed]
[all]
varia.zone ansible_ssh_port=12345

View File

@ -1,6 +1,9 @@
---
- hosts: managed
# Just deploy a new version of the the XPPL.
# Depends on setup.yml being ran first to set things up.
- hosts: all
pre_tasks:
- name: Shutdown the running XPPL for the deployment.
become: true
@ -17,4 +20,4 @@
become: true
supervisorctl:
name: 'xppl:'
state: stopped
state: started

View File

@ -1,6 +1,9 @@
---
- hosts: managed
# Setup all necessary infrastructure for the project.
# Install the project and get it running under supervisor.
- hosts: all
roles:
- role: perms # Setup users and groups
- role: git # Clone the project source

View File

@ -6,7 +6,7 @@ from flask import request
def get_annotations():
# TODO(decentral1se): remove this from the source
KEY = "6879-H5GbA2KyFIeEUM1BubjVTLP8yM3GMyHgOAjjNe_GBxY"
KEY = "6879-n8AksBoSB7kYoQ3eEwzpEr3nFQEmSp3XN-0PcKL_Sik"
# a dictionary containing necessary http headers
headers = {
@ -15,7 +15,7 @@ def get_annotations():
"Authorization": "Bearer %s" % KEY
}
base_url = "https://hypothes.is/api/search?user=varia_annotator@hypothes.is"
base_url = "https://hypothes.is/api/search?user=xpub@hypothes.is"
search_url = "".join([base_url])
@ -45,7 +45,7 @@ def get_annot_results(annot, name):
data = {
'text': item['text'],
'extract': item['target'][0]['selector'][2]['exact'],
'title': item['document']['title'], 'url': item['uri']
'title': item['uri'][37:], 'url': item['uri']
}
res.append(data)
else:
@ -54,7 +54,7 @@ def get_annot_results(annot, name):
data = {
'text': item['text'],
'extract': item['target'][0]['selector'][1]['exact'],
'title': item['document']['title'], 'url': item['uri']
'title': item['uri'][37:], 'url': item['uri']
}
res.append(data)
return res
@ -71,7 +71,7 @@ def get_annot_book(annot, name):
data = {
'text': item['text'],
'extract': item['target'][0]['selector'][2]['exact'],
'title': item['document']['title'], 'url': item['uri']
'title': item['uri'][37:], 'url': item['uri']
}
res.append(data)
else:
@ -80,7 +80,7 @@ def get_annot_book(annot, name):
data = {
'text': item['text'],
'extract': item['target'][0]['selector'][1]['exact'],
'title': item['document']['title'], 'url': item['uri']
'title': item['uri'][37:], 'url': item['uri']
}
res.append(data)
return res

View File

@ -11,7 +11,7 @@
{%for book in books%}
{%if book.file == row.uri%}
<p align="right" style="font-family:archivo narrow;font-size:10px;">Book</p>
<a href="books/{{book.id}}"><p align="right" style="font-family:archivo narrow;font-size:18px;">{{book.title}}</p></a><br>
<a href="books/{{book.id}}"><p align="right" style="font-family:archivo narrow;font-size:18px;">{{book.file}}</p></a><br>
{% endif %}
{% endfor %}

View File

@ -19,7 +19,7 @@
{% for book in stack.books %}
{% if loop.length >= 5 %}
{% if loop.index == 6 %}
<p style='color:red;'>Your stack is getting a little too big. Are these next books really relevant?</p>
<p style='color:red;'>Your stack is getting a little big. Proceed.</p>
<br>
<br>
{% endif %}