Update the production branch #82

Merged
heinzel merged 35 commits from master into production 2024-09-16 08:50:39 +02:00
6 changed files with 54 additions and 69 deletions
Showing only changes of commit 05da45f271 - Show all commits

View File

@@ -1,12 +1,11 @@
REQUIREMENTS REQUIREMENTS
============ ============
- Python 3 - Python >= 3
- Python package virtualenv (in most cases this is distributed or installed together with python) - Django and some other python packages, that will be installed throughout
- Django (will be installed automatically) the installation process
- Several additional django related python packages (will be installed automatically)
For production use you surly want a real web server that supports WSGI For production use you surly want a real web server that supports WSGI
(e.g. Apache httpd with mod_wsgi) and a real Database like PostgreSQL. (e.g. Apache httpd with mod_wsgi) and a real Database like PostgreSQL (psycopg2).
QUICK INSTALLATION FOR THE IMPATIENT QUICK INSTALLATION FOR THE IMPATIENT
@@ -24,14 +23,11 @@ INSTALLATION
It is strongly recommended to create a separated python environment It is strongly recommended to create a separated python environment
for this django project. But it is not exactly necessary. for this django project. But it is not exactly necessary.
The creation of a separated python environment is very easy with the
virtualenv tool (a python package).
If you decide to not use virtualenv, proceed with step 2. If you decide to not use virtualenv, proceed with step 2.
- Create the python environment in a directory called ./env/python: - Create the python environment in a directory called ./env/python:
``virtualenv --prompt="(dav)" ./env/python`` ``python -m venv --prompt="(dav)" ./env/python``
- If you use a posix compatible shell (like bash, the linux default shell), - If you use a posix compatible shell (like bash, the linux default shell),
you have to activate the environment for the current shell session you have to activate the environment for the current shell session
@@ -50,16 +46,25 @@ If you have left the session or deactivated the environment and want to
reactivate the environment (e.g. to execute a python command) use the reactivate the environment (e.g. to execute a python command) use the
previous ``source ...`` command. previous ``source ...`` command.
2. Install files 2. Install requirements
---------------- -----------------------
- ``python -m pip install -r requirements.txt``
3. Install project code in development mode
-------------------------------------------
- ``python -m pip install -e .``
4. Setup django project directory
---------------------------------
- ``python setup.py develop``
- ``django-dav-events-admin setup ./env/django`` - ``django-dav-events-admin setup ./env/django``
The django project directory ('./env/django' within the previous example) The django project directory ('./env/django' within the previous example)
will be called *project root* for now on. will be called *project root* for now on.
3. Enable modules 5. Enable modules
----------------- -----------------
Our web application consist of several modules, that care about single Our web application consist of several modules, that care about single
aspects of the whole picture. aspects of the whole picture.

View File

@@ -1,20 +0,0 @@
PYTHON := python
DEPLOY_DIR ?= /var/www/wsgi/django-dav-events
.PHONY: default help test deploy
default: help
help:
@echo "The make stuff is used by our CI/CD buildbot."
test:
tox
deploy:
git -C "$(DEPLOY_DIR)/src/django-dav-events" pull
"$(DEPLOY_DIR)/python/bin/python" "$(DEPLOY_DIR)/django/manage.py" migrate --noinput
"$(DEPLOY_DIR)/python/bin/python" "$(DEPLOY_DIR)/django/manage.py" collectstatic --noinput
touch "$(DEPLOY_DIR)/django/main/wsgi.py"

View File

@@ -1,6 +1,8 @@
ABOUT ABOUT
===== =====
This is the DAV Events django project. django-dav-events is a django based web app to drive the
"Touren- & Kurseportal" of
"Sektion Karlsruhe im Deutschen Alpenverein (DAV) e.V."
REQUIREMENTS REQUIREMENTS

6
requirements.txt Normal file
View File

@@ -0,0 +1,6 @@
babel
django<3.3
django-bootstrap3
django-countries
django-datetime-widget2
setuptools

View File

@@ -6,17 +6,7 @@ from setuptools import setup, find_packages
from setuptools import Command from setuptools import Command
class MyCommand(Command): class SetupPythonEnvironment(Command):
user_options = []
def initialize_options(self):
pass
def finalize_options(self):
pass
class SetupPythonEnvironment(MyCommand):
description = 'create a (virtual) python environment' description = 'create a (virtual) python environment'
def run(self): def run(self):
@@ -54,7 +44,7 @@ class SetupPythonEnvironment(MyCommand):
print('- All others: source %s/bin/activate' % path) print('- All others: source %s/bin/activate' % path)
class QuickSetup(MyCommand): class QuickSetup(Command):
description = 'create a typical installation for developing' description = 'create a typical installation for developing'
def run(self): def run(self):
@@ -94,7 +84,7 @@ class QuickSetup(MyCommand):
setup( setup(
name='django-dav-events', name='django-dav-events',
version='2.1.2', version='2.2.1',
description='A django based web application project to organize DAV Events.', description='A django based web application project to organize DAV Events.',
url='https://dev.heinzelwerk.de/git/DAV-KA/django-dav-events', url='https://dev.heinzelwerk.de/git/DAV-KA/django-dav-events',
author='Jens Kleineheismann', author='Jens Kleineheismann',
@@ -105,26 +95,9 @@ setup(
}, },
packages=find_packages(), packages=find_packages(),
include_package_data=True, include_package_data=True,
test_suite='tests.test_suite',
entry_points={ entry_points={
'console_scripts': [ 'console_scripts': [
'django-dav-admin = dav_base.console_scripts.admin:main', 'django-dav-admin = dav_base.console_scripts.admin:main',
], ],
}, },
install_requires=[
'babel',
#'django >= 1.11, < 2.0',
'django >= 1.11, < 3.3',
# 'django-extensions',
'django-bootstrap3',
'django-countries',
'django-datetime-widget2',
'pytz',
'selenium',
'setuptools',
'coverage',
],
extras_require={
'production': ['psycopg2'],
},
) )

29
tox.ini
View File

@@ -1,10 +1,29 @@
[tox] [tox]
envlist = py311, py312 envlist = fresh, coverage
[testenv] [testenv]
recreate = false
setenv = setenv =
PYTHONPATH = . PYTHONPATH = .
commands = python --version deps = -r{toxinidir}/requirements.txt
python -m coverage run tests selenium
coverage report --skip-covered commands_pre = python --version
python -m django --version
commands = python tests
[testenv:fast]
description = Only run the testsuite
[testenv:fresh]
description = Run tests in freshly created environment (with coverage)
recreate = true
deps = {[testenv]deps}
coverage
commands_pre = {[testenv]commands_pre}
python -m coverage --version
commands = python -m coverage run tests
[testenv:coverage]
description = Report test coverage
deps = {[testenv:fresh]deps}
commands = python -m coverage report --skip-covered