initial commit

This commit is contained in:
Mandel Dashboard
2026-02-17 23:52:41 +01:00
commit da0d4c7dac
23 changed files with 530 additions and 0 deletions

28
.gitignore vendored Normal file
View File

@@ -0,0 +1,28 @@
.mypy_cache/
.pytest_cache/
.vscode/
__pycache__/
*.py[ocd]
db.sqlite3
develop-eggs
bin
parts
sources
.installed.cfg
.mr.developer.cfg
*.egg-info
eggs/
/static/*
/documents/
/media
!/media/image_not_found.jpg
dist/
build/
lib
pip-selfcheck.json
pyvenv.cfg
.DS_Store
.coverage
coverage.xml
htmlcov/
venv/

85
Jenkinsfile vendored Normal file
View File

@@ -0,0 +1,85 @@
#!/usr/bin/env groovy
pipeline {
agent any
options { disableConcurrentBuilds() }
environment {
PYENVPIPELINE_VIRTUALENV = '1'
}
stages {
stage('Build') {
steps {
sh '''
python3 -m venv .venv
. .venv/bin/activate
pip install coverage
pip install --upgrade pip "setuptools==69.5.1" wheel
make EXTRAS="" install
pip install --upgrade "setuptools==69.5.1" wheel
make migrate loaddata collectstatic
pip install "httpx<0.28"
'''
}
}
stage('Lint') {
steps {
sh '''
. .venv/bin/activate
pip install coverage
make lint
'''
}
}
stage('Test') {
steps {
sh '''
. .venv/bin/activate
pip install coverage
make test
'''
}
post {
always {
junit allowEmptyResults: true, testResults: '**/nosetests.xml'
}
success {
recordCoverage(tools: [[parser: 'COBERTURA', pattern: '**/coverage.xml']])
}
}
}
}
post {
always {
echo 'This will always run'
}
success {
echo 'This will run only if successful'
sh '''
. .venv/bin/activate
pip install coverage
version --plugin=wheel -B${BUILD_NUMBER} --skip-build
git push --tags
'''
build job: 'deployment-stg-create',
quietPeriod: 20,
wait: false,
parameters: [
string(name: 'UPSTREAM_BUILD', value: "smokee2ei1771368759"),
]
}
failure {
emailext subject: "JENKINS-NOTIFICATION: ${currentBuild.currentResult}: Job '${env.JOB_NAME} #${env.BUILD_NUMBER}'",
body: '${SCRIPT, template="groovy-text.template"}',
recipientProviders: [culprits(), brokenBuildSuspects(), brokenTestsSuspects()]
}
unstable {
echo 'This will run only if the run was marked as unstable'
}
changed {
echo 'This will run only if the state of the Pipeline has changed'
echo 'For example, if the Pipeline was previously failing but is now successful'
}
}
}

3
MANIFEST.in Normal file
View File

@@ -0,0 +1,3 @@
graft smokee2ei1771368759
global-exclude *.py[co]
global-exclude __pycache__

59
Makefile Normal file
View File

@@ -0,0 +1,59 @@
.PHONY: fail-if-no-virtualenv all install loaddata test lint black debug undebug
all: install migrate loaddata collectstatic
fail-if-no-virtualenv:
ifndef VIRTUAL_ENV # check for a virtualenv in development environment
ifndef PYENVPIPELINE_VIRTUALENV # check for jenkins pipeline virtualenv
$(error this makefile needs a virtualenv)
endif
endif
ifndef PIP_INDEX_URL
PIP_INDEX_URL=https://pypi.mandelblog.com/mandel/testing/+simple/
endif
ifndef EXTRAS
EXTRAS="[test]"
endif
install: fail-if-no-virtualenv
PIP_INDEX_URL=${PIP_INDEX_URL} pip install --pre --editable .${EXTRAS} setuptools wheel --upgrade --upgrade-strategy=eager --use-deprecated=legacy-resolver
migrate:
manage.py migrate --no-input
loaddata:
-manage.py loaddemodata
collectstatic:
manage.py collectstatic --no-input --verbosity=0
lint: fail-if-no-virtualenv
cat smokee2ei1771368759/ocyan.json |python3 -m json.tool 1>/dev/null
pylint setup.py smokee2ei1771368759/
black:
@echo "No formatter configured in template; add your preferred formatter here."
test: fail-if-no-virtualenv
@coverage run --source='smokee2ei1771368759' `which manage.py` test
@coverage report
@coverage xml
@coverage html
run: fail-if-no-virtualenv lint test migrate collectstatic
manage.py runserver
debug: fail-if-no-virtualenv
PIP_INDEX_URL=${PIP_INDEX_URL} pip install --pre ocyan.plugin.debug
undebug:
PIP_INDEX_URL=${PIP_INDEX_URL} pip uninstall -y ocyan.plugin.debug
live:
@echo "Did you update the version in setup.py? [y/N]" && read ans && [ $$ans = y ]
rm -fr dist
rm -fr build*
version --plugin=wheel --skip-tag
devpi --index=projects/production upload dist/*

85
README.rst Normal file
View File

@@ -0,0 +1,85 @@
Project smokee2ei1771368759
===========================
About smokee2ei1771368759
-------------------------
Ocyan project: smokee2ei1771368759
Installation
------------
Create a virtualenv, you only need to do this once for each project::
mkvirtualenv smokee2ei1771368759
Next build the project, by installing dependencies and creating the database::
make
Running
-------
Activate the virtualenv::
workon smokee2ei1771368759
You can see which virtualenv is activated, because your
terminal will be prefixed with (smokee2ei1771368759).
Next start the development server::
make run
Testing
-------
Testing is done with the default Django testing capabilities. Check the 'Testing in Django' chapter in Django documentation for details.
To run the tests, issue the following command::
make test
Linting
-------
Source code is formatted using the `black`[1] formatter in its default settings. Installing format-on-save support for your editor is highly recommended.
`Pylint`[2] is used for source code analysis.
All utilities are installed via the test extra. This extra is installed by default when using the Makefile.
The following command check style and syntax::
make lint
1. black: https://pypi.org/project/black/
2. pylint: https://pypi.org/project/pylint/
Edit template translation
-------------------------
The translation in templates
Activate the virtualenv::
workon smokee2ei1771368759
Create the locale directory in the root of the project::
mkdir smokee2ei1771368759/locale
Go in the project_name directory::
cd smokee2ei1771368759/
Run this command to create a file with all translatable strings in the project (note: this is only for the dutch translations)::
manage.py makemessages -l nl
Go to your text editor and go in this file::
smokee2ei1771368759/smokee2ei1771368759/locale/nl/LC_MESSAGES/django.po
This file will have all of the translations some will be correct and dont need to be chanced
Edit all the translations u want to change
Delete all of the translation u dont want to chance
save file
Apply the translations::
manage.py compilemessages

12
pylintrc Normal file
View File

@@ -0,0 +1,12 @@
[MASTER]
jobs = 1
load-plugins = pylint_django,pylint_packageinitcheck
django-settings-module = smokee2ei1771368759.settings.base
score = n
ignore = migrations
[MESSAGES CONTROL]
disable = R,C,W5103,W0707,E5110
[TYPECHECK]
ignored-classes = responses

30
pyproject.toml Normal file
View File

@@ -0,0 +1,30 @@
[tool.black]
target_version = ['py36']
exclude = '''
(
migrations/*
| smokee2ei1771368759/main.py
)
'''
[tool.ruff.lint.isort]
known-first-party = ["smokee2ei1771368759"]
section-order = [
"future",
"standard-library",
"third-party",
"wagtail",
"oscar",
"oscarapi",
"oscarextra",
"ocyan",
"first-party",
"local-folder"
]
[tool.ruff.lint.isort.sections]
wagtail = ["wagtail", "wagtail_*"]
oscar = ["oscar"]
oscarapi = ["oscarapi"]
oscarextra = ["oscar_*"]
ocyan = ["ocyan"]

42
setup.py Normal file
View File

@@ -0,0 +1,42 @@
# -*- coding: utf-8 -*-
import json
from setuptools import find_packages, setup
install_requires: list = ["ocyan.main"]
# Add frets dependencies
with open("smokee2ei1771368759/ocyan.json", encoding="utf-8") as fp:
config = json.loads(fp.read())
install_requires.extend(config["ocyan_plugins"])
extras_require: dict = {
"test": [
"pylint-django",
"vdt.versionplugin.wheel",
"coverage",
"ocyan.plugin.testing",
],
"prd": ["psycopg2-binary"],
}
PACKAGE_CLASSIFIERS = [
"License :: Other/Proprietary License",
"Framework :: Ocyan",
]
setup(
name="mandel-smokee2ei1771368759",
version="0.1.0",
url="https://git.mandelblog.com/mandel-projects/smokee2ei1771368759",
author="Motolani Olaiya",
author_email="motolaniolaiya@gmail.com",
description="Ocyan project: smokee2ei1771368759",
packages=find_packages(),
include_package_data=True,
python_requires=">=3.10",
install_requires=install_requires,
extras_require=extras_require,
entry_points={"console_scripts": ["manage.py=smokee2ei1771368759.main:main"]},
classifiers=PACKAGE_CLASSIFIERS,
)

View File

View File

@@ -0,0 +1,9 @@
import os
import sys
def main():
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "smokee2ei1771368759.settings.base")
from django.core.management import execute_from_command_line
execute_from_command_line(sys.argv)

View File

@@ -0,0 +1,60 @@
{
"ocyan_plugins": [
"ocyan.plugin.contact_form",
"ocyan.plugin.cookie_jar",
"ocyan.plugin.demo_data",
"ocyan.plugin.django",
"ocyan.plugin.roadrunner_bs5",
"ocyan.plugin.sentry_logging",
"oxyan.themes",
"ocyan.plugin.varnish",
"ocyan.plugin.wagtail",
"ocyan.plugin.wagtail_blog",
"ocyan.plugin.wagtail_content_page",
"ocyan.plugin.barebone"
],
"settings": {
"cookie_jar": {
"analytical": true,
"functional": true,
"marketing": false,
"social": false
},
"django": {
"description": "",
"domain": "smokee2ei1771368759.nl",
"email_from": "webshop@mandelblog.com",
"email_host": "vps.transip.email",
"email_host_password": "CHANGE_ME",
"email_host_user": "noreply@mandelblog.com",
"email_port": "587",
"email_to": "info@smokee2ei1771368759.nl",
"email_use_tls": true,
"language_code": "nl",
"name": "smokee2ei1771368759",
"username": "administrator"
},
"sentry logging": {
"dsn_secret": ""
},
"themes": {
"theme": "default",
"theme-switcher": false
},
"wagtail": {
"wagtailuserbar_position": "bottom-right"
},
"wagtail content page": {
"actionbuttons": false,
"add_to_cart": false,
"heading": true,
"html": false,
"image": true,
"paragraph": true,
"table": true
},
"wagtail_blog": {
"items_per_page": 10
}
}
}

View File

View File

@@ -0,0 +1,36 @@
"""
Django settings for de tilde project.
For more information on this file, see
https://docs.djangoproject.com/en/2.0/topics/settings/
For the full list of settings and their values, see
https://docs.djangoproject.com/en/2.0/ref/settings/
"""
from pathlib import Path
from configtype.jsonconfig import setup_search_paths
_project_app_path = Path(__file__).parent.parent
BASE_PATH = _project_app_path.parent
BASE_DIR = str(BASE_PATH)
setup_search_paths("/etc/ocyan/", str(_project_app_path))
from ocyan.main.settings import * # pylint:disable=W0401,W0614
INSTALLED_APPS = ["smokee2ei1771368759"] + INSTALLED_APPS
STATIC_ROOT = str(BASE_PATH / "static")
MEDIA_ROOT = str(BASE_PATH / "media")
PRIVATE_MEDIA_ROOT = str(BASE_PATH / "private")
DATABASES = {
"default": {
"ENGINE": "django.db.backends.sqlite3",
"NAME": str(BASE_PATH / "db.sqlite3"),
}
}
SECRET_KEY = "bigqy5u$k##iq)5!i4d#tgi-zm!iva3fgw-hj-1-j+t!!a63=u"

View File

21
smokee2ei1771368759/settings/env/dev.py vendored Normal file
View File

@@ -0,0 +1,21 @@
from ..base import * # pylint:disable=W0401,W0614
try:
from smokee2ei1771368759.json import * # pylint:disable=W0401,W0614,E0611,E0401
except ModuleNotFoundError:
pass
DEBUG = False
STATIC_ROOT = "/srv/www/smokee2ei1771368759/static/"
MEDIA_ROOT = "/srv/www/smokee2ei1771368759/media/"
PRIVATE_MEDIA_ROOT = "/srv/www/smokee2ei1771368759/private/"
ALLOWED_HOSTS = ["*"]
# Force mail to console
EMAIL_BACKEND = "django.core.mail.backends.console.EmailBackend"
EDEN_URL = ["https://search.mandelblog.com:9200"]
# pylint: disable=E0602
WAGTAILSEARCH_BACKENDS["default"]["URLS"] = EDEN_URL
OSCAR_ELASTICSEARCH_SERVER_URLS = EDEN_URL

15
smokee2ei1771368759/settings/env/prd.py vendored Normal file
View File

@@ -0,0 +1,15 @@
from ..base import * # pylint:disable=W0401,W0614
try:
from smokee2ei1771368759.json import * # pylint:disable=W0401,W0614,E0611,E0401
except ModuleNotFoundError:
pass
DEBUG = False
STATIC_ROOT = "/srv/www/smokee2ei1771368759/static/"
MEDIA_ROOT = "/srv/www/smokee2ei1771368759/media/"
PRIVATE_MEDIA_ROOT = "/srv/www/smokee2ei1771368759/private/"
ALLOWED_HOSTS.append("smokee2ei1771368759.%s" % salt_target) # pylint: disable=E0602
# pylint: disable=E0602
WAGTAILSEARCH_BACKENDS["default"]["URLS"] = ["https://search.mandelblog.com:9200"]
EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend"

16
smokee2ei1771368759/settings/env/stg.py vendored Normal file
View File

@@ -0,0 +1,16 @@
from ..base import * # pylint:disable=W0401,W0614
try:
from smokee2ei1771368759.json import * # pylint:disable=W0401,W0614,E0611,E0401
except ModuleNotFoundError:
pass
DEBUG = False
STATIC_ROOT = "/srv/www/smokee2ei1771368759/static/"
MEDIA_ROOT = "/srv/www/smokee2ei1771368759/media/"
PRIVATE_MEDIA_ROOT = "/srv/www/smokee2ei1771368759/private/"
ALLOWED_HOSTS = ["*"]
# Force mail to console
EMAIL_BACKEND = "django.core.mail.backends.console.EmailBackend"

View File

@@ -0,0 +1 @@
from ocyan.main.wsgi import application # pylint: disable=W0611

28
uwsgi-dev.ini Normal file
View File

@@ -0,0 +1,28 @@
[uwsgi]
master = true
chmod-socket = 660
workers = 1
reload-mercy = 30
vacuum = 1
auto-procname = true
enable-threads = false
lazy = 0
no-orphans = true
stats = 127.0.0.1:9191
thunder-lock = false
enable-threads = true
# dev settings
python-autoreload = 1
http = 127.0.0.1:8000
if-env = VIRTUAL_ENV
virtualenv = %(_)
endif =
# Django settings
env = DJANGO_SETTINGS_MODULE=smokee2ei1771368759.settings.base
module = smokee2ei1771368759.wsgi:application
# Spoolers
spooler = spooler
spooler-chdir = %d