mirror of
https://framagit.org/la-chariotte/la-chariotte.git
synced 2025-05-04 21:02:01 +02:00
Merge branch 'feat-sqlite-support' into 'develop'
feature: Enable sqlite3 support and make it default (close #97) Closes #97 See merge request la-chariotte/la-chariotte!130
This commit is contained in:
commit
345f52bc8e
9 changed files with 89 additions and 14 deletions
|
@ -6,6 +6,7 @@ tests:
|
||||||
image: python:3.11
|
image: python:3.11
|
||||||
variables:
|
variables:
|
||||||
DJANGO_SETTINGS_MODULE: "la_chariotte.settings"
|
DJANGO_SETTINGS_MODULE: "la_chariotte.settings"
|
||||||
|
DB_ENGINE: "django.db.backends.postgresql"
|
||||||
DB_NAME: "postgres"
|
DB_NAME: "postgres"
|
||||||
DB_USER: "postgres"
|
DB_USER: "postgres"
|
||||||
DB_PASSWORD: "mysecretpassword"
|
DB_PASSWORD: "mysecretpassword"
|
||||||
|
@ -30,3 +31,21 @@ tests:
|
||||||
- git fetch origin develop ; diff-cover coverage.xml --fail-under=90 --compare-branch origin/develop --diff-range-notation '..'
|
- git fetch origin develop ; diff-cover coverage.xml --fail-under=90 --compare-branch origin/develop --diff-range-notation '..'
|
||||||
- echo "Tests done."
|
- echo "Tests done."
|
||||||
|
|
||||||
|
sqlite:
|
||||||
|
stage: test
|
||||||
|
image: python:3.11
|
||||||
|
variables:
|
||||||
|
DJANGO_SETTINGS_MODULE: "la_chariotte.settings"
|
||||||
|
script:
|
||||||
|
- export CACHE_PATH="/venvs/${CI_PROJECT_NAME}/$(date +week-%V-%Y)"
|
||||||
|
- if [[ "$CI_COMMIT_BRANCH" == *"--no-cache"* ]] ; then export CACHE_PATH="/venvs/$CI_COMMIT_SHORT_SHA"; fi
|
||||||
|
- echo "Creating virtual env..."
|
||||||
|
- if [ ! -d $CACHE_PATH/venv ] ; then python3.11 -m venv $CACHE_PATH/venv ; fi
|
||||||
|
- $CACHE_PATH/venv/bin/pip install --upgrade pip
|
||||||
|
- echo "Virtual env created."
|
||||||
|
- echo "Checking database migrations with sqlite..."
|
||||||
|
- source $CACHE_PATH/venv/bin/activate
|
||||||
|
- pip cache purge
|
||||||
|
- pip install -e ".[dev]"
|
||||||
|
- python3 manage.py migrate
|
||||||
|
- echo "sqlite database migrations successful"
|
||||||
|
|
|
@ -5,6 +5,14 @@ All notable changes to this project will be documented in this file.
|
||||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
|
||||||
since 0.4.1, and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
since 0.4.1, and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||||
|
|
||||||
|
## UNRELEASED (XXXX-YY-ZZ)
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
|
- SQLite is now a supported database engine for easier deployment;
|
||||||
|
use `"ENGINE": "django.db.backends.sqlite3"` in the settings to enable it;
|
||||||
|
the `"NAME"` setting is a relative path for the DB file, from the working directory
|
||||||
|
|
||||||
## 1.3.0 (2024-11-02)
|
## 1.3.0 (2024-11-02)
|
||||||
|
|
||||||
This is a small release, with a few features and bugfixes. The code is now
|
This is a small release, with a few features and bugfixes. The code is now
|
||||||
|
|
|
@ -22,18 +22,18 @@ class Migration(migrations.Migration):
|
||||||
verbose_name="ID",
|
verbose_name="ID",
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
("first_name", models.CharField(verbose_name="Prénom")),
|
("first_name", models.CharField(max_length=256, verbose_name="Prénom")),
|
||||||
("last_name", models.CharField(verbose_name="Nom")),
|
("last_name", models.CharField(max_length=256, verbose_name="Nom")),
|
||||||
(
|
(
|
||||||
"phone",
|
"phone",
|
||||||
models.CharField(
|
models.CharField(max_length=256,
|
||||||
help_text="Pour vous que l'organisateur·ice vous contacte en cas de besoin",
|
help_text="Pour vous que l'organisateur·ice vous contacte en cas de besoin",
|
||||||
verbose_name="Numéro de téléphone",
|
verbose_name="Numéro de téléphone",
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
"email",
|
"email",
|
||||||
models.CharField(
|
models.CharField(max_length=256,
|
||||||
verbose_name="Pour vous que l'organisateur·ice vous contacte en cas de besoin"
|
verbose_name="Pour vous que l'organisateur·ice vous contacte en cas de besoin"
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|
|
@ -17,7 +17,7 @@ class Migration(migrations.Migration):
|
||||||
migrations.AlterField(
|
migrations.AlterField(
|
||||||
model_name="orderauthor",
|
model_name="orderauthor",
|
||||||
name="email",
|
name="email",
|
||||||
field=models.CharField(
|
field=models.CharField(max_length=256,
|
||||||
help_text="Pour vous que l'organisateur·ice vous contacte en cas de besoin",
|
help_text="Pour vous que l'organisateur·ice vous contacte en cas de besoin",
|
||||||
verbose_name="Adresse mail",
|
verbose_name="Adresse mail",
|
||||||
),
|
),
|
||||||
|
|
|
@ -12,7 +12,7 @@ class Migration(migrations.Migration):
|
||||||
migrations.AlterField(
|
migrations.AlterField(
|
||||||
model_name="orderauthor",
|
model_name="orderauthor",
|
||||||
name="email",
|
name="email",
|
||||||
field=models.CharField(
|
field=models.CharField(max_length=256,
|
||||||
help_text="Pour que l'organisateur·ice vous contacte en cas de besoin",
|
help_text="Pour que l'organisateur·ice vous contacte en cas de besoin",
|
||||||
verbose_name="Adresse mail",
|
verbose_name="Adresse mail",
|
||||||
),
|
),
|
||||||
|
@ -20,7 +20,7 @@ class Migration(migrations.Migration):
|
||||||
migrations.AlterField(
|
migrations.AlterField(
|
||||||
model_name="orderauthor",
|
model_name="orderauthor",
|
||||||
name="phone",
|
name="phone",
|
||||||
field=models.CharField(
|
field=models.CharField(max_length=256,
|
||||||
help_text="Pour que l'organisateur·ice vous contacte en cas de besoin",
|
help_text="Pour que l'organisateur·ice vous contacte en cas de besoin",
|
||||||
verbose_name="Numéro de téléphone",
|
verbose_name="Numéro de téléphone",
|
||||||
),
|
),
|
||||||
|
|
|
@ -45,12 +45,12 @@ class Migration(migrations.Migration):
|
||||||
migrations.AddField(
|
migrations.AddField(
|
||||||
model_name="groupedorder",
|
model_name="groupedorder",
|
||||||
name="code",
|
name="code",
|
||||||
field=models.CharField(auto_created=True, null=True),
|
field=models.CharField(max_length=256, auto_created=True, null=True),
|
||||||
),
|
),
|
||||||
migrations.RunPython(set_code_default, reverse_set_code_default),
|
migrations.RunPython(set_code_default, reverse_set_code_default),
|
||||||
migrations.AlterField(
|
migrations.AlterField(
|
||||||
model_name="groupedorder",
|
model_name="groupedorder",
|
||||||
name="code",
|
name="code",
|
||||||
field=models.CharField(auto_created=True),
|
field=models.CharField(max_length=256, auto_created=True),
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
|
|
|
@ -0,0 +1,46 @@
|
||||||
|
# Generated by Django 4.2.19 on 2025-03-02 15:06
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
("order", "0029_set_phone_mandatory_for_existing_orders"),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="groupedorder",
|
||||||
|
name="code",
|
||||||
|
field=models.CharField(auto_created=True, max_length=256),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="orderauthor",
|
||||||
|
name="email",
|
||||||
|
field=models.CharField(
|
||||||
|
help_text="Pour que l'organisateur·ice vous contacte en cas de besoin",
|
||||||
|
max_length=256,
|
||||||
|
verbose_name="Adresse mail",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="orderauthor",
|
||||||
|
name="first_name",
|
||||||
|
field=models.CharField(max_length=256, verbose_name="Prénom"),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="orderauthor",
|
||||||
|
name="last_name",
|
||||||
|
field=models.CharField(max_length=256, verbose_name="Nom"),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="orderauthor",
|
||||||
|
name="phone",
|
||||||
|
field=models.CharField(
|
||||||
|
help_text="Pour que l'organisateur·ice vous contacte en cas de besoin",
|
||||||
|
max_length=256,
|
||||||
|
verbose_name="Numéro de téléphone",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
]
|
|
@ -25,7 +25,7 @@ class GroupedOrder(models.Model):
|
||||||
max_length=100, null=True, blank=True, verbose_name="Lieu de livraison"
|
max_length=100, null=True, blank=True, verbose_name="Lieu de livraison"
|
||||||
)
|
)
|
||||||
description = models.TextField("Description", null=True, blank=True)
|
description = models.TextField("Description", null=True, blank=True)
|
||||||
code = models.CharField(auto_created=True)
|
code = models.CharField(max_length=256, auto_created=True)
|
||||||
is_phone_mandatory = models.BooleanField(
|
is_phone_mandatory = models.BooleanField(
|
||||||
default=False, verbose_name="Numéro de téléphone obligatoire"
|
default=False, verbose_name="Numéro de téléphone obligatoire"
|
||||||
)
|
)
|
||||||
|
@ -101,13 +101,15 @@ class GroupedOrder(models.Model):
|
||||||
class OrderAuthor(models.Model):
|
class OrderAuthor(models.Model):
|
||||||
"""Used when a user orders (with or without an account)"""
|
"""Used when a user orders (with or without an account)"""
|
||||||
|
|
||||||
first_name = models.CharField(verbose_name="Prénom")
|
first_name = models.CharField(max_length=256, verbose_name="Prénom")
|
||||||
last_name = models.CharField(verbose_name="Nom")
|
last_name = models.CharField(max_length=256, verbose_name="Nom")
|
||||||
phone = models.CharField(
|
phone = models.CharField(
|
||||||
|
max_length=256,
|
||||||
verbose_name="Numéro de téléphone",
|
verbose_name="Numéro de téléphone",
|
||||||
help_text="Pour que l'organisateur·ice vous contacte en cas de besoin",
|
help_text="Pour que l'organisateur·ice vous contacte en cas de besoin",
|
||||||
)
|
)
|
||||||
email = models.CharField(
|
email = models.CharField(
|
||||||
|
max_length=256,
|
||||||
verbose_name="Adresse mail",
|
verbose_name="Adresse mail",
|
||||||
help_text="Pour que l'organisateur·ice vous contacte en cas de besoin",
|
help_text="Pour que l'organisateur·ice vous contacte en cas de besoin",
|
||||||
)
|
)
|
||||||
|
|
|
@ -85,8 +85,8 @@ WSGI_APPLICATION = "la_chariotte.wsgi.application"
|
||||||
|
|
||||||
DATABASES = {
|
DATABASES = {
|
||||||
"default": {
|
"default": {
|
||||||
"ENGINE": "django.db.backends.postgresql",
|
"ENGINE": os.getenv("DB_ENGINE", "django.db.backends.sqlite3"),
|
||||||
"NAME": os.getenv("DB_NAME", "chariotte"),
|
"NAME": os.getenv("DB_NAME", "chariotte.sqlite3"),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue