|
@@ -6,80 +6,118 @@ a virtual environment (like virtualenv).
|
|
|
|
|
|
Install packages:
|
|
|
|
|
|
- # apt-get install python3-pip python3-virtualenv libyaml-dev
|
|
|
+```bash
|
|
|
+sudo apt-get install python3-pip python3-virtualenv virtualenv libyaml-dev
|
|
|
+```
|
|
|
+
|
|
|
+Retrieve the repository:
|
|
|
+
|
|
|
+```bash
|
|
|
+# Create the base directory:
|
|
|
+mkdir wwm
|
|
|
+cd wwm
|
|
|
+
|
|
|
+# Clone the repo:
|
|
|
+git clone https://code.ffdn.org/FFDN/wifi-with-me.git
|
|
|
+
|
|
|
+# If you need to change to a specific branch:
|
|
|
+cd wifi-with-me
|
|
|
+git checkout myBranch
|
|
|
+cd ..
|
|
|
+```
|
|
|
|
|
|
Create and activate the virtualenv with:
|
|
|
|
|
|
- $ virtualenv -p $(which python3) venv
|
|
|
- $ source venv/bin/activate
|
|
|
+```bash
|
|
|
+virtualenv -p $(which python3) venv
|
|
|
+source venv/bin/activate
|
|
|
+```
|
|
|
|
|
|
We use django framework. Install it from requirements with pip:
|
|
|
|
|
|
- $ pip install -r requirements/base.txt
|
|
|
+```bash
|
|
|
+pip install -r wifi-with-me/requirements/base.txt
|
|
|
+```
|
|
|
|
|
|
For development, install `dev.txt` instead:
|
|
|
|
|
|
- $ pip install -r requirements/dev.txt
|
|
|
+```bash
|
|
|
+pip install -r wifi-with-me/requirements/dev.txt
|
|
|
+```
|
|
|
|
|
|
Set up configuration
|
|
|
====================
|
|
|
|
|
|
-Then create and edit a `wifiwithme/settings/local.py` configuration file
|
|
|
-`wifiwithme/settings/local.py`.
|
|
|
+Then create and edit the configuration file
|
|
|
+`wifi-with-me/wifiwithme/settings/local.py` according to following
|
|
|
+instructions:
|
|
|
|
|
|
Mandatory settings
|
|
|
------------------
|
|
|
|
|
|
You **must** Define some details about your ISP in the ISP variable, eg:
|
|
|
|
|
|
- ISP={
|
|
|
- 'NAME':'FAIMAISON',
|
|
|
- 'TITLE':'Réseau wifi expérimental',
|
|
|
- 'SITE':'//www.faimaison.net',
|
|
|
- 'EMAIL':'bureau (at) faimaison.net',
|
|
|
- 'ZONE':'Nantes et environs',
|
|
|
- 'ADDRESS_EXAMPLE': 'rue du calvaire, nantes',
|
|
|
- 'URL_CONTACT':'//www.faimaison.net/pages/contact.html',
|
|
|
- 'LATITUDE':47.218371,
|
|
|
- 'LONGITUDE':-1.553621,
|
|
|
- 'ZOOM':13,
|
|
|
- 'CNIL':{
|
|
|
- 'LINK':'//www.faimaison.net/files/cnil-faimaison-1819684-withwithme.pdf',
|
|
|
- 'NUMBER':1819684
|
|
|
- }
|
|
|
+```python
|
|
|
+ISP={
|
|
|
+ 'NAME':'FAIMAISON',
|
|
|
+ 'TITLE':'Réseau wifi expérimental',
|
|
|
+ 'SITE':'//www.faimaison.net',
|
|
|
+ 'EMAIL':'bureau (at) faimaison.net',
|
|
|
+ 'ZONE':'Nantes et environs',
|
|
|
+ 'ADDRESS_EXAMPLE': 'rue du calvaire, nantes',
|
|
|
+ 'URL_CONTACT':'//www.faimaison.net/pages/contact.html',
|
|
|
+ 'LATITUDE':47.218371,
|
|
|
+ 'LONGITUDE':-1.553621,
|
|
|
+ 'ZOOM':13,
|
|
|
+ 'CNIL':{
|
|
|
+ 'LINK':'//www.faimaison.net/files/cnil-faimaison-1819684-withwithme.pdf',
|
|
|
+ 'NUMBER':1819684
|
|
|
}
|
|
|
+}
|
|
|
+```
|
|
|
|
|
|
- SITE_URL='https://wifi.faimaison.net
|
|
|
+The wifi-with-me website URL (for links included in emails) defaults to
|
|
|
+`http://localhost:8000`, so it must be customized:
|
|
|
|
|
|
-Optional settings
|
|
|
------------------
|
|
|
-
|
|
|
-### Website URL
|
|
|
+```python
|
|
|
+SITE_URL='https://wifi.faimaison.net'
|
|
|
+```
|
|
|
|
|
|
-The wifi-with-me website URL (for links included in emails :)
|
|
|
+List of domain name(s) under wich the website is accessible:
|
|
|
|
|
|
- SITE_URL="http://example.tld"
|
|
|
+```python
|
|
|
+ALLOWED_HOSTS=['wifi.faimaison.net']
|
|
|
+# Or, for several domains:
|
|
|
+ALLOWED_HOSTS=['wifi.faimaison.net', 'faimaison.net']
|
|
|
+```
|
|
|
|
|
|
+Optional settings
|
|
|
+-----------------
|
|
|
|
|
|
-## URL Prefix
|
|
|
+### Website URL
|
|
|
|
|
|
Optionaly, you can define an url prefix (ex: `/foo/`) so that wifi-with-me is
|
|
|
-accessible under *http://example.com/foo/* :
|
|
|
+accessible under *http://example.com/foo/*:
|
|
|
|
|
|
- URL_PREFIX='foo/'
|
|
|
+```python
|
|
|
+URL_PREFIX='foo/'
|
|
|
+```
|
|
|
|
|
|
### Notifications
|
|
|
|
|
|
-If you to receive notifications on each new contrib, customize those :
|
|
|
+If you want to receive notifications on each new contrib, customize those:
|
|
|
|
|
|
List of notification recipients:
|
|
|
|
|
|
- NOTIFICATION_EMAILS=['admin@example.tld']
|
|
|
+```python
|
|
|
+NOTIFICATION_EMAILS=['admin@example.com', 'admin2@example.com']
|
|
|
+```
|
|
|
|
|
|
Notification sender address:
|
|
|
|
|
|
- DEFAULT_FROM_EMAIL='notifier@example.tld'
|
|
|
-
|
|
|
+```python
|
|
|
+DEFAULT_FROM_EMAIL='notifier@example.tld'
|
|
|
+```
|
|
|
|
|
|
### Data expiration
|
|
|
|
|
@@ -89,10 +127,12 @@ its explicit consent to keep it one more year.
|
|
|
Reminders are sent to the contribution author when expiration date gets
|
|
|
close. By default we send two notifications :
|
|
|
|
|
|
- DATA_EXPIRATION_REMINDERS = [
|
|
|
- 30, # 1 month before
|
|
|
- 7, # 1 week before
|
|
|
- ]
|
|
|
+```python
|
|
|
+DATA_EXPIRATION_REMINDERS = [
|
|
|
+ 30, # 1 month before
|
|
|
+ 7, # 1 week before
|
|
|
+]
|
|
|
+```
|
|
|
|
|
|
You can tweak it to your will or decide to send no reminder (with value `[]`).
|
|
|
|
|
@@ -103,23 +143,34 @@ Migrate from bottle version (optional)
|
|
|
If you used the (old) bottle version of wifi-with-me and want to migrate your
|
|
|
data follow this extra step :
|
|
|
|
|
|
- $ ./manage.py migrate auth
|
|
|
- $ ./manage.py migrate contribmap 0001 --fake
|
|
|
+```bash
|
|
|
+./wifi-with-me/manage.py migrate auth
|
|
|
+./wifi-with-me/manage.py migrate contribmap 0001 --fake
|
|
|
+```
|
|
|
|
|
|
Run development server
|
|
|
======================
|
|
|
|
|
|
+NOTE: For prod environment, replace `./wifi-with-me/manage.py` with
|
|
|
+`DJANGO_SETTINGS_MODULE=wifiwithme.settings.prod ./wifi-with-me/manage.py`.
|
|
|
+
|
|
|
It is required to initialize database first:
|
|
|
|
|
|
- $ ./manage.py migrate
|
|
|
+```bash
|
|
|
+./wifi-with-me/manage.py migrate
|
|
|
+```
|
|
|
|
|
|
Create an admin:
|
|
|
|
|
|
- $ ./manage.py createsuperuser
|
|
|
+```bash
|
|
|
+./wifi-with-me/manage.py createsuperuser
|
|
|
+```
|
|
|
|
|
|
Then launch service with:
|
|
|
|
|
|
- $ ./manage.py runserver
|
|
|
+```bash
|
|
|
+./wifi-with-me/manage.py runserver
|
|
|
+```
|
|
|
|
|
|
You can visit with your browser at <http://127.0.0.1:8000/map/contribute>
|
|
|
|
|
@@ -128,7 +179,9 @@ Drop the database
|
|
|
|
|
|
If you want to **reset all your data**.
|
|
|
|
|
|
- $ rm db.sqlite3
|
|
|
+```bash
|
|
|
+rm db.sqlite3
|
|
|
+```
|
|
|
|
|
|
|
|
|
Run production server
|
|
@@ -138,8 +191,16 @@ Run production server
|
|
|
|
|
|
1. Deploy it [like any django site](https://docs.djangoproject.com/en/1.11/howto/deployment/)
|
|
|
2. Customize [mandatory and optional settings](#set-up-configuration)
|
|
|
-3. Customize `SECRET_KEY` to something really random. Hint: `python -c "import string,random; uni=string.ascii_letters+string.digits+string.punctuation; print(repr(''.join([random.SystemRandom().choice(uni) for i in range(random.randint(45,50))])))"`
|
|
|
+3. Customize `SECRET_KEY` to something really random. Hint:
|
|
|
+
|
|
|
+```bash
|
|
|
+python -c "import string,random; uni=string.ascii_letters+string.digits+string.punctuation; print(repr(''.join([random.SystemRandom().choice(uni) for i in range(random.randint(45,50))])))"
|
|
|
+```
|
|
|
+
|
|
|
4. Set *daily* crons for the two commands that take care of data expiration
|
|
|
handling (run them with `--help` for more information):
|
|
|
- - `./manage.py delete_expired_contribs`
|
|
|
- - `./manage.py send_expiration_reminders`
|
|
|
+
|
|
|
+```bash
|
|
|
+./wifi-with-me/manage.py delete_expired_contribs
|
|
|
+./wifi-with-me/manage.py send_expiration_reminders
|
|
|
+```
|