commit 0d62e72d72922a84e41c9f2cc21977b794784d1c Merge: 79fee63 85f2a81 Author: reverend <reverend@reverend2048.de> Date: Tue Sep 22 21:55:18 2020 +0200 Merge branch 'develop' into refactor/models commit 79fee631d7ac28509067ecdd74078f1a2f6e0be2 Author: reverend <reverend@reverend2048.de> Date: Tue Sep 22 21:54:32 2020 +0200 Updating references for related name commit 8e07e79df2de2601f2e2eadfdd37eb7c719c51b0 Author: reverend <reverend@reverend2048.de> Date: Tue Sep 22 21:53:31 2020 +0200 Generating of related names fix commit 5fd804f37a805ae4707e13c3d941bdde3660afea Merge: 8cc1d3e 3b526c9 Author: reverend <reverend@reverend2048.de> Date: Tue Sep 22 21:01:48 2020 +0200 Merge branch 'develop' into refactor/models commit 8cc1d3e690211dba6451e86569f00078b23e0621 Author: reverend <reverend@reverend2048.de> Date: Tue Sep 22 20:21:08 2020 +0200 Tests commit 7c0591e5397f892b1f6fb80725a693c21f90468a Author: reverend <reverend@reverend2048.de> Date: Fri Sep 18 23:53:39 2020 +0200 Testing PlaceAsset commit 2e7b49ad1a15173565c81e7eb8bb3f35b9f622a6 Author: reverend <reverend@reverend2048.de> Date: Fri Sep 18 22:25:08 2020 +0200 Restructuring models commit eb7d03b08b326f9115e70d0fd9ed5d0fc229a362 Author: reverend <reverend@reverend2048.de> Date: Fri Sep 18 22:01:54 2020 +0200 Abstract class Expireable commit 2b51e741bb5734c5a578beeadef7819fe58b2223 Author: reverend <reverend@reverend2048.de> Date: Fri Sep 18 21:54:07 2020 +0200 Abstract Model for PlaceAsset (i.e. Photoalbums)
lostplaces-backend
lostplaces-backend is a django (3.x) based webproject. It once wants to become a software which allows a group of urban explorers to manage, document and share the locations of lost places while not exposing too much / any information to the public.
The software is currently in early development status, neither scope, datamodel(s) nor features are finalized yet. Therefore we would not recommend to download or install this piece of software anywhere - except your local django dev server.
We value privacy as a whole, all resources the frontend requires will be shipped with lostplace's distribution. We also try to minimize the use of JavaScript as far as we can and try to offer JS-less alternatives where we can.
Features
- Manage lost places with lots of useful information.
- OSM-Maps
- Sensitive information is not accessible for anonymous (not logged in) users.
- User self registration using a voucher system, only people you invite can join your instance.
- Collaboration, every user can add informations like tags, photos and external links to your place.
Dependencies
Right now it depends on the following non-core Python 3 libraries. These can be installed using the package manager of your distribution or into the venv locally.
- django is a high-level Python Web framework that encourages rapid development and clean, pragmatic design.
- easy-thumbnails A powerful, yet easy to implement thumbnailing application for Django 1.11+.
- image Image cropping for django.
- django-widget-tweaks Tweak the form field rendering in templates, not in python-level form definitions.
- django-taggit A simpler approach to tagging with Django.
Bundled Dependencies
We also leverage some other great OpenSource projects' code. We bundle those in the distribution to obsolete the need to pull those files from monitored CDNs.
- OpenLayers [6.4.3] OpenLayers makes it easy to put a dynamic map in any web page. It can display map tiles, vector data and markers loaded from any source.
- Crimson Pro font [1.002] Crimson Pro is a serif typeface family: Contemporary, clear, classic and rounded/open.
- Montserrat [7.210] A beautiful sans serif typeface.
Installing a development instance
Clone the repository
git clone https://git.mowoe.com/reverend/lostplaces-backend.git
Setting up a (pipenv) virtual environment for development
After having obtained the repository contents (either via .zip download or git clone), you can easily setup a pipenv virtual environment. The repo provides a Pipfile for easy dependency management that does not mess with your system.
$ cd lostplaces-backend
$ pipenv install
$ pipenv shell
(lostplaces-backend) $ django_lostplaces/manage.py makemigrations
(lostplaces-backend) $ django_lostplaces/manage.py migrate
(lostplaces-backend) $ django_lostplaces/manage.py createsuperuser
(lostplaces-backend) $ django_lostplaces/manage.py runserver --ipv6
Returning to the venv
$ cd lostplaces-backend
$ pipenv shell
(lostplaces-backend) $ pipenv update # If dependencies changed, or updates available
(lostplaces-backend) $ django_lostplaces/manage.py makemigrations # If datamodels changed
(lostplaces-backend) $ django_lostplaces/manage.py migrate # If datamodels changed
(lostplaces-backend) $ django_lostplaces/manage.py runserver --ipv6
Visit: admin for administrative backend or frontend.
Happy developing ;-)
Installing a productive instance
Currently there are two ways to deploy the lostplaces project:
- Cloning this repository, including the configured django instance.
- Install the package and setup the django instance yourself.
Cloning the repository
Essentially, this is the same as installing a development instance, but without the development server (manage.py runserver) and something powerful (Apache, NGINX) instead. You have to configure the webserver to work with the *SGI Api respectively, reference django's guide for deployment for further information.
You also should setup a dedicated database server, the built-in SQLite file is not recommended for production use. Reference django's guide for databases for further information.
Before making the django instance public, you should tweak the config settings.py
:
- Change the secret key, the one found in the config is already public. Choose something secure (i.e. this).
- Turn off debug mode by setting
DEBUG = False
. - Tune the localization settings, see django's documentation.
Run django_lostplaces/managy.py collectstatic
and you should be ready to go.
Installing lostplaces to an existing django instance
Installing django and the django_lostplaces app
If you haven't already setup a django instance, see django's documentation.
After that, download the desired release (probably the latest one) from the releases page and install it using pip install --user name-of-the-file.tar.gz
Note: You can run pip install without the --user flag, which will require root privileges and introduces potential security issues.
Configuring the django instance
Now configure your settings.py
as follows:
- Add the following apps to the django project.
INSTALLED_APPS = [
...
'django_lostplaces',
'easy_thumbnails',
'widget_tweaks',
'django_taggit'
]
- Set the URL's and Root-directories for file handling, for example:
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static_files')
MEDIA_URL = '/uploads/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'uploads')
- Set the URL's for login, for example:
LOGIN_URL = reverse_lazy('login')
LOGIN_REDIRECT_URL = reverse_lazy('django_lostplaces_home')
LOGOUT_REDIRECT_URL = reverse_lazy('django_lostplaces_home')
Configuring the URL's
In the urls.py
configure the urlpatterns
like this:
urlpatterns = [
path('admin/', admin.site.urls),
path('signup/', SignUpView.as_view(), name='signup'), # If you want to use lostplaces' sign up view.
path('explorers/', include('django.contrib.auth.urls')), # You can change the 'explorers/' to whatever you desire.
path('', include('django_lostplaces.urls')), # In this configuration django_lostplaces will be at the top level of you website, change '' to 'django_lostplaces/', if you don't want this.
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) # So django can deliver user uploaded files.
Before making the django instance public, you should tweak the config settings.py
:
- Change the secret key, the one found in the config is already public. Choose something secure (i.e. this).
- Turn off debug mode by setting
DEBUG = False
. - Tune the localization settings, see django's documentation.
- Set a new (random) SECRET_KEY in settings.py, e. g.:
base64 /dev/urandom | head -c50
Run django_lostplaces/manage.py collectstatic
you should be ready to go.