Compare commits
No commits in common. "4738dffc825cce3694e690e65922570a384d792c" and "5a76d58894e060e1306062c27ac970469e67deb8" have entirely different histories.
4738dffc82
...
5a76d58894
34 changed files with 1623 additions and 959 deletions
|
@ -8,14 +8,8 @@ repos:
|
||||||
rev: 23.3.0
|
rev: 23.3.0
|
||||||
hooks:
|
hooks:
|
||||||
- id: black
|
- id: black
|
||||||
- repo: https://github.com/PyCQA/flake8
|
|
||||||
rev: "6.0.0"
|
|
||||||
hooks:
|
|
||||||
- id: flake8
|
|
||||||
args: ["--max-line-length=88", "--extend-ignore=E203"]
|
|
||||||
exclude: "migrations/"
|
|
||||||
- repo: https://github.com/Riverside-Healthcare/djLint
|
- repo: https://github.com/Riverside-Healthcare/djLint
|
||||||
rev: v1.23.3
|
rev: v1.23.1
|
||||||
hooks:
|
hooks:
|
||||||
- id: djlint-django
|
- id: djlint-django
|
||||||
args: ["--reformat"]
|
args: ["--reformat"]
|
||||||
|
@ -24,3 +18,4 @@ repos:
|
||||||
hooks:
|
hooks:
|
||||||
- id: prettier
|
- id: prettier
|
||||||
types_or: ["css", "javascript"]
|
types_or: ["css", "javascript"]
|
||||||
|
exclude: "fontawesome/"
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
from django import forms
|
from django import forms
|
||||||
|
from django.db import models, transaction
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
from .models import Account, Category, Invoice, Snapshot, Transaction
|
from .models import Account, Category, Invoice, Snapshot, Transaction
|
||||||
|
@ -89,8 +90,8 @@ class SnapshotForm(NummiForm):
|
||||||
self.fields["account"].queryset = Account.objects.filter(user=_user)
|
self.fields["account"].queryset = Account.objects.filter(user=_user)
|
||||||
self.fields["transactions"] = forms.MultipleChoiceField(
|
self.fields["transactions"] = forms.MultipleChoiceField(
|
||||||
choices=(
|
choices=(
|
||||||
((_transaction.id), _transaction)
|
((transaction.id), transaction)
|
||||||
for _transaction in Transaction.objects.filter(user=_user)
|
for transaction in Transaction.objects.filter(user=_user)
|
||||||
),
|
),
|
||||||
label=_("Add transactions"),
|
label=_("Add transactions"),
|
||||||
required=False,
|
required=False,
|
||||||
|
|
153
nummi/main/migrations/0001_initial.py
Normal file
153
nummi/main/migrations/0001_initial.py
Normal file
|
@ -0,0 +1,153 @@
|
||||||
|
# Generated by Django 4.0.4 on 2022-05-22 07:45
|
||||||
|
|
||||||
|
import datetime
|
||||||
|
import re
|
||||||
|
import uuid
|
||||||
|
|
||||||
|
import django.core.validators
|
||||||
|
import django.db.models.deletion
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
initial = True
|
||||||
|
|
||||||
|
dependencies = []
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.CreateModel(
|
||||||
|
name="Category",
|
||||||
|
fields=[
|
||||||
|
(
|
||||||
|
"id",
|
||||||
|
models.UUIDField(
|
||||||
|
default=uuid.uuid4,
|
||||||
|
editable=False,
|
||||||
|
primary_key=True,
|
||||||
|
serialize=False,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
(
|
||||||
|
"name",
|
||||||
|
models.CharField(
|
||||||
|
default="New Category",
|
||||||
|
max_length=64,
|
||||||
|
validators=[
|
||||||
|
django.core.validators.RegexValidator(
|
||||||
|
re.compile("^[-\\w]+\\Z"),
|
||||||
|
"Enter a valid “slug” consisting of Unicode letters, numbers, underscores, or hyphens.",
|
||||||
|
"invalid",
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
("icon", models.CharField(default="folder", max_length=64)),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
"ordering": ["name"],
|
||||||
|
},
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name="Transaction",
|
||||||
|
fields=[
|
||||||
|
(
|
||||||
|
"id",
|
||||||
|
models.UUIDField(
|
||||||
|
default=uuid.uuid4,
|
||||||
|
editable=False,
|
||||||
|
primary_key=True,
|
||||||
|
serialize=False,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
("name", models.CharField(default="New Transaction", max_length=256)),
|
||||||
|
("description", models.TextField(blank=True, null=True)),
|
||||||
|
(
|
||||||
|
"value",
|
||||||
|
models.DecimalField(decimal_places=2, default=0, max_digits=12),
|
||||||
|
),
|
||||||
|
("date", models.DateField(default=datetime.date.today)),
|
||||||
|
("trader", models.CharField(blank=True, max_length=128, null=True)),
|
||||||
|
(
|
||||||
|
"category",
|
||||||
|
models.ForeignKey(
|
||||||
|
blank=True,
|
||||||
|
null=True,
|
||||||
|
on_delete=django.db.models.deletion.SET_NULL,
|
||||||
|
to="main.category",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
"ordering": ["-date"],
|
||||||
|
},
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name="Snapshot",
|
||||||
|
fields=[
|
||||||
|
(
|
||||||
|
"id",
|
||||||
|
models.UUIDField(
|
||||||
|
default=uuid.uuid4,
|
||||||
|
editable=False,
|
||||||
|
primary_key=True,
|
||||||
|
serialize=False,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
("date", models.DateField(default=datetime.date.today, unique=True)),
|
||||||
|
(
|
||||||
|
"value",
|
||||||
|
models.DecimalField(decimal_places=2, default=0, max_digits=12),
|
||||||
|
),
|
||||||
|
(
|
||||||
|
"diff",
|
||||||
|
models.DecimalField(
|
||||||
|
decimal_places=2, default=0, editable=False, max_digits=12
|
||||||
|
),
|
||||||
|
),
|
||||||
|
(
|
||||||
|
"previous",
|
||||||
|
models.OneToOneField(
|
||||||
|
blank=True,
|
||||||
|
editable=False,
|
||||||
|
null=True,
|
||||||
|
on_delete=django.db.models.deletion.SET_NULL,
|
||||||
|
to="main.snapshot",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
"ordering": ["-date"],
|
||||||
|
},
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name="Invoice",
|
||||||
|
fields=[
|
||||||
|
(
|
||||||
|
"id",
|
||||||
|
models.UUIDField(
|
||||||
|
default=uuid.uuid4,
|
||||||
|
editable=False,
|
||||||
|
primary_key=True,
|
||||||
|
serialize=False,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
("name", models.CharField(default="New Invoice", max_length=256)),
|
||||||
|
(
|
||||||
|
"file",
|
||||||
|
models.FileField(
|
||||||
|
upload_to="invoices/",
|
||||||
|
validators=[
|
||||||
|
django.core.validators.FileExtensionValidator(["pdf"])
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
(
|
||||||
|
"transaction",
|
||||||
|
models.ForeignKey(
|
||||||
|
on_delete=django.db.models.deletion.CASCADE,
|
||||||
|
to="main.transaction",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
]
|
|
@ -1,947 +0,0 @@
|
||||||
# Generated by Django 4.1.4 on 2023-04-20 15:13
|
|
||||||
|
|
||||||
import datetime
|
|
||||||
import re
|
|
||||||
import uuid
|
|
||||||
|
|
||||||
import django.contrib.postgres.operations
|
|
||||||
import django.core.validators
|
|
||||||
import django.db.models.deletion
|
|
||||||
import main.utils
|
|
||||||
from django.conf import settings
|
|
||||||
from django.db import migrations, models
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
initial = True
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.CreateModel(
|
|
||||||
name="Category",
|
|
||||||
fields=[
|
|
||||||
(
|
|
||||||
"id",
|
|
||||||
models.UUIDField(
|
|
||||||
default=uuid.uuid4,
|
|
||||||
editable=False,
|
|
||||||
primary_key=True,
|
|
||||||
serialize=False,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
(
|
|
||||||
"name",
|
|
||||||
models.CharField(
|
|
||||||
default="Catégorie", max_length=64, verbose_name="Nom"
|
|
||||||
),
|
|
||||||
),
|
|
||||||
(
|
|
||||||
"icon",
|
|
||||||
models.CharField(
|
|
||||||
default="folder", max_length=64, verbose_name="Icône"
|
|
||||||
),
|
|
||||||
),
|
|
||||||
("budget", models.BooleanField(default=True, verbose_name="Budget")),
|
|
||||||
],
|
|
||||||
options={
|
|
||||||
"ordering": ["name"],
|
|
||||||
"verbose_name": "Catégorie",
|
|
||||||
"verbose_name_plural": "Catégories",
|
|
||||||
},
|
|
||||||
),
|
|
||||||
migrations.CreateModel(
|
|
||||||
name="Transaction",
|
|
||||||
fields=[
|
|
||||||
(
|
|
||||||
"id",
|
|
||||||
models.UUIDField(
|
|
||||||
default=uuid.uuid4,
|
|
||||||
editable=False,
|
|
||||||
primary_key=True,
|
|
||||||
serialize=False,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
(
|
|
||||||
"name",
|
|
||||||
models.CharField(
|
|
||||||
default="Transaction", max_length=256, verbose_name="Nom"
|
|
||||||
),
|
|
||||||
),
|
|
||||||
(
|
|
||||||
"description",
|
|
||||||
models.TextField(blank=True, null=True, verbose_name="Description"),
|
|
||||||
),
|
|
||||||
(
|
|
||||||
"value",
|
|
||||||
models.DecimalField(
|
|
||||||
decimal_places=2,
|
|
||||||
default=0,
|
|
||||||
max_digits=12,
|
|
||||||
verbose_name="Valeur",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
(
|
|
||||||
"date",
|
|
||||||
models.DateField(default=datetime.date.today, verbose_name="Date"),
|
|
||||||
),
|
|
||||||
(
|
|
||||||
"trader",
|
|
||||||
models.CharField(
|
|
||||||
blank=True, max_length=128, null=True, verbose_name="Commerçant"
|
|
||||||
),
|
|
||||||
),
|
|
||||||
(
|
|
||||||
"category",
|
|
||||||
models.ForeignKey(
|
|
||||||
blank=True,
|
|
||||||
null=True,
|
|
||||||
on_delete=django.db.models.deletion.SET_NULL,
|
|
||||||
to="main.category",
|
|
||||||
verbose_name="Catégorie",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
(
|
|
||||||
"real_date",
|
|
||||||
models.DateField(blank=True, null=True, verbose_name="Date réelle"),
|
|
||||||
),
|
|
||||||
(
|
|
||||||
"payment",
|
|
||||||
models.CharField(
|
|
||||||
blank=True, max_length=128, null=True, verbose_name="Paiement"
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
options={
|
|
||||||
"ordering": ["-date"],
|
|
||||||
"verbose_name": "Transaction",
|
|
||||||
"verbose_name_plural": "Transactions",
|
|
||||||
},
|
|
||||||
),
|
|
||||||
migrations.CreateModel(
|
|
||||||
name="Invoice",
|
|
||||||
fields=[
|
|
||||||
(
|
|
||||||
"id",
|
|
||||||
models.UUIDField(
|
|
||||||
default=uuid.uuid4,
|
|
||||||
editable=False,
|
|
||||||
primary_key=True,
|
|
||||||
serialize=False,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
(
|
|
||||||
"name",
|
|
||||||
models.CharField(
|
|
||||||
default="Facture", max_length=256, verbose_name="Nom"
|
|
||||||
),
|
|
||||||
),
|
|
||||||
(
|
|
||||||
"file",
|
|
||||||
models.FileField(
|
|
||||||
max_length=128,
|
|
||||||
upload_to="invoices/",
|
|
||||||
validators=[
|
|
||||||
django.core.validators.FileExtensionValidator(["pdf"])
|
|
||||||
],
|
|
||||||
verbose_name="Fichier",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
(
|
|
||||||
"transaction",
|
|
||||||
models.ForeignKey(
|
|
||||||
on_delete=django.db.models.deletion.CASCADE,
|
|
||||||
to="main.transaction",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
options={
|
|
||||||
"verbose_name": "Facture",
|
|
||||||
"verbose_name_plural": "Factures",
|
|
||||||
},
|
|
||||||
),
|
|
||||||
migrations.CreateModel(
|
|
||||||
name="Snapshot",
|
|
||||||
fields=[
|
|
||||||
(
|
|
||||||
"id",
|
|
||||||
models.UUIDField(
|
|
||||||
default=uuid.uuid4,
|
|
||||||
editable=False,
|
|
||||||
primary_key=True,
|
|
||||||
serialize=False,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
(
|
|
||||||
"date",
|
|
||||||
models.DateField(
|
|
||||||
default=datetime.date.today, unique=True, verbose_name="Date"
|
|
||||||
),
|
|
||||||
),
|
|
||||||
(
|
|
||||||
"value",
|
|
||||||
models.DecimalField(
|
|
||||||
decimal_places=2,
|
|
||||||
default=0,
|
|
||||||
max_digits=12,
|
|
||||||
verbose_name="Valeur",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
(
|
|
||||||
"diff",
|
|
||||||
models.DecimalField(
|
|
||||||
blank=True,
|
|
||||||
decimal_places=2,
|
|
||||||
editable=False,
|
|
||||||
max_digits=12,
|
|
||||||
null=True,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
(
|
|
||||||
"previous",
|
|
||||||
models.OneToOneField(
|
|
||||||
blank=True,
|
|
||||||
editable=False,
|
|
||||||
null=True,
|
|
||||||
on_delete=django.db.models.deletion.SET_NULL,
|
|
||||||
to="main.snapshot",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
(
|
|
||||||
"file",
|
|
||||||
models.FileField(
|
|
||||||
blank=True,
|
|
||||||
max_length=128,
|
|
||||||
null=True,
|
|
||||||
upload_to="snapshots/",
|
|
||||||
validators=[
|
|
||||||
django.core.validators.FileExtensionValidator(["pdf"])
|
|
||||||
],
|
|
||||||
verbose_name="Fichier",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
options={
|
|
||||||
"ordering": ["-date"],
|
|
||||||
"verbose_name": "Relevé",
|
|
||||||
"verbose_name_plural": "Relevés",
|
|
||||||
},
|
|
||||||
),
|
|
||||||
django.contrib.postgres.operations.TrigramExtension(),
|
|
||||||
django.contrib.postgres.operations.UnaccentExtension(),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name="invoice",
|
|
||||||
name="file",
|
|
||||||
field=models.FileField(
|
|
||||||
max_length=128,
|
|
||||||
upload_to=main.utils.get_path,
|
|
||||||
validators=[django.core.validators.FileExtensionValidator(["pdf"])],
|
|
||||||
verbose_name="Fichier",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name="invoice",
|
|
||||||
name="transaction",
|
|
||||||
field=models.ForeignKey(
|
|
||||||
editable=False,
|
|
||||||
on_delete=django.db.models.deletion.CASCADE,
|
|
||||||
to="main.transaction",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name="snapshot",
|
|
||||||
name="file",
|
|
||||||
field=models.FileField(
|
|
||||||
blank=True,
|
|
||||||
default="",
|
|
||||||
max_length=256,
|
|
||||||
upload_to=main.utils.get_path,
|
|
||||||
validators=[django.core.validators.FileExtensionValidator(["pdf"])],
|
|
||||||
verbose_name="Fichier",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
migrations.AddField(
|
|
||||||
model_name="category",
|
|
||||||
name="user",
|
|
||||||
field=models.ForeignKey(
|
|
||||||
editable=False,
|
|
||||||
on_delete=django.db.models.deletion.CASCADE,
|
|
||||||
to=settings.AUTH_USER_MODEL,
|
|
||||||
verbose_name="Utilisateur",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
migrations.AddField(
|
|
||||||
model_name="invoice",
|
|
||||||
name="user",
|
|
||||||
field=models.ForeignKey(
|
|
||||||
editable=False,
|
|
||||||
on_delete=django.db.models.deletion.CASCADE,
|
|
||||||
to=settings.AUTH_USER_MODEL,
|
|
||||||
verbose_name="Utilisateur",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
migrations.AddField(
|
|
||||||
model_name="snapshot",
|
|
||||||
name="user",
|
|
||||||
field=models.ForeignKey(
|
|
||||||
editable=False,
|
|
||||||
on_delete=django.db.models.deletion.CASCADE,
|
|
||||||
to=settings.AUTH_USER_MODEL,
|
|
||||||
verbose_name="Utilisateur",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
migrations.AddField(
|
|
||||||
model_name="transaction",
|
|
||||||
name="user",
|
|
||||||
field=models.ForeignKey(
|
|
||||||
editable=False,
|
|
||||||
on_delete=django.db.models.deletion.CASCADE,
|
|
||||||
to=settings.AUTH_USER_MODEL,
|
|
||||||
verbose_name="Utilisateur",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name="snapshot",
|
|
||||||
name="date",
|
|
||||||
field=models.DateField(default=datetime.date.today, verbose_name="Date"),
|
|
||||||
),
|
|
||||||
migrations.CreateModel(
|
|
||||||
name="Account",
|
|
||||||
fields=[
|
|
||||||
(
|
|
||||||
"id",
|
|
||||||
models.UUIDField(
|
|
||||||
default=uuid.uuid4,
|
|
||||||
editable=False,
|
|
||||||
primary_key=True,
|
|
||||||
serialize=False,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
(
|
|
||||||
"name",
|
|
||||||
models.CharField(
|
|
||||||
default="Account", max_length=64, verbose_name="Nom"
|
|
||||||
),
|
|
||||||
),
|
|
||||||
(
|
|
||||||
"icon",
|
|
||||||
models.CharField(
|
|
||||||
default="building-columns", max_length=64, verbose_name="Icône"
|
|
||||||
),
|
|
||||||
),
|
|
||||||
(
|
|
||||||
"user",
|
|
||||||
models.ForeignKey(
|
|
||||||
editable=False,
|
|
||||||
on_delete=django.db.models.deletion.CASCADE,
|
|
||||||
to=settings.AUTH_USER_MODEL,
|
|
||||||
verbose_name="Utilisateur",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
options={
|
|
||||||
"verbose_name": "Account",
|
|
||||||
"verbose_name_plural": "Accounts",
|
|
||||||
"ordering": ["name"],
|
|
||||||
},
|
|
||||||
),
|
|
||||||
migrations.AddField(
|
|
||||||
model_name="snapshot",
|
|
||||||
name="account",
|
|
||||||
field=models.ForeignKey(
|
|
||||||
blank=True,
|
|
||||||
null=True,
|
|
||||||
on_delete=django.db.models.deletion.SET_NULL,
|
|
||||||
to="main.account",
|
|
||||||
verbose_name="Account",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
migrations.AlterModelOptions(
|
|
||||||
name="snapshot",
|
|
||||||
options={
|
|
||||||
"ordering": ["-date"],
|
|
||||||
"verbose_name": "Statement",
|
|
||||||
"verbose_name_plural": "Statements",
|
|
||||||
},
|
|
||||||
),
|
|
||||||
migrations.RemoveField(
|
|
||||||
model_name="snapshot",
|
|
||||||
name="diff",
|
|
||||||
),
|
|
||||||
migrations.RemoveField(
|
|
||||||
model_name="snapshot",
|
|
||||||
name="previous",
|
|
||||||
),
|
|
||||||
migrations.AddField(
|
|
||||||
model_name="snapshot",
|
|
||||||
name="start_date",
|
|
||||||
field=models.DateField(
|
|
||||||
default=datetime.date.today, verbose_name="Start date"
|
|
||||||
),
|
|
||||||
),
|
|
||||||
migrations.AddField(
|
|
||||||
model_name="snapshot",
|
|
||||||
name="start_value",
|
|
||||||
field=models.DecimalField(
|
|
||||||
decimal_places=2, default=0, max_digits=12, verbose_name="Start value"
|
|
||||||
),
|
|
||||||
),
|
|
||||||
migrations.AddField(
|
|
||||||
model_name="transaction",
|
|
||||||
name="snapshot",
|
|
||||||
field=models.ForeignKey(
|
|
||||||
blank=True,
|
|
||||||
null=True,
|
|
||||||
on_delete=django.db.models.deletion.SET_NULL,
|
|
||||||
to="main.snapshot",
|
|
||||||
verbose_name="Statement",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name="snapshot",
|
|
||||||
name="date",
|
|
||||||
field=models.DateField(
|
|
||||||
default=datetime.date.today, verbose_name="End date"
|
|
||||||
),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name="snapshot",
|
|
||||||
name="value",
|
|
||||||
field=models.DecimalField(
|
|
||||||
decimal_places=2, default=0, max_digits=12, verbose_name="End value"
|
|
||||||
),
|
|
||||||
),
|
|
||||||
migrations.AddField(
|
|
||||||
model_name="transaction",
|
|
||||||
name="account",
|
|
||||||
field=models.ForeignKey(
|
|
||||||
blank=True,
|
|
||||||
editable=False,
|
|
||||||
null=True,
|
|
||||||
on_delete=django.db.models.deletion.SET_NULL,
|
|
||||||
to="main.account",
|
|
||||||
verbose_name="Account",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name="transaction",
|
|
||||||
name="snapshot",
|
|
||||||
field=models.ForeignKey(
|
|
||||||
on_delete=django.db.models.deletion.CASCADE,
|
|
||||||
to="main.snapshot",
|
|
||||||
verbose_name="Statement",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name="transaction",
|
|
||||||
name="account",
|
|
||||||
field=models.ForeignKey(
|
|
||||||
editable=False,
|
|
||||||
on_delete=django.db.models.deletion.CASCADE,
|
|
||||||
to="main.account",
|
|
||||||
verbose_name="Account",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
migrations.AddField(
|
|
||||||
model_name="snapshot",
|
|
||||||
name="diff",
|
|
||||||
field=models.DecimalField(
|
|
||||||
decimal_places=2,
|
|
||||||
default=0,
|
|
||||||
editable=False,
|
|
||||||
max_digits=12,
|
|
||||||
verbose_name="Différence",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name="snapshot",
|
|
||||||
name="account",
|
|
||||||
field=models.ForeignKey(
|
|
||||||
on_delete=django.db.models.deletion.CASCADE,
|
|
||||||
to="main.account",
|
|
||||||
verbose_name="Account",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
migrations.AddField(
|
|
||||||
model_name="snapshot",
|
|
||||||
name="sum",
|
|
||||||
field=models.DecimalField(
|
|
||||||
decimal_places=2,
|
|
||||||
default=0,
|
|
||||||
editable=False,
|
|
||||||
max_digits=12,
|
|
||||||
verbose_name="Transaction difference",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
migrations.AlterModelOptions(
|
|
||||||
name="account",
|
|
||||||
options={
|
|
||||||
"ordering": ["name"],
|
|
||||||
"verbose_name": "Compte",
|
|
||||||
"verbose_name_plural": "Comptes",
|
|
||||||
},
|
|
||||||
),
|
|
||||||
migrations.AlterModelOptions(
|
|
||||||
name="snapshot",
|
|
||||||
options={
|
|
||||||
"ordering": ["-date"],
|
|
||||||
"verbose_name": "Relevé",
|
|
||||||
"verbose_name_plural": "Relevés",
|
|
||||||
},
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name="account",
|
|
||||||
name="icon",
|
|
||||||
field=models.CharField(
|
|
||||||
default="building-columns",
|
|
||||||
max_length=64,
|
|
||||||
validators=[
|
|
||||||
django.core.validators.RegexValidator(
|
|
||||||
re.compile("^[-a-zA-Z0-9_]+\\Z"),
|
|
||||||
"Enter a valid “slug” consisting of letters, numbers, underscores or hyphens.",
|
|
||||||
"invalid",
|
|
||||||
)
|
|
||||||
],
|
|
||||||
verbose_name="Icône",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name="account",
|
|
||||||
name="name",
|
|
||||||
field=models.CharField(default="Compte", max_length=64, verbose_name="Nom"),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name="category",
|
|
||||||
name="icon",
|
|
||||||
field=models.CharField(
|
|
||||||
default="folder",
|
|
||||||
max_length=64,
|
|
||||||
validators=[
|
|
||||||
django.core.validators.RegexValidator(
|
|
||||||
re.compile("^[-a-zA-Z0-9_]+\\Z"),
|
|
||||||
"Enter a valid “slug” consisting of letters, numbers, underscores or hyphens.",
|
|
||||||
"invalid",
|
|
||||||
)
|
|
||||||
],
|
|
||||||
verbose_name="Icône",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name="snapshot",
|
|
||||||
name="account",
|
|
||||||
field=models.ForeignKey(
|
|
||||||
on_delete=django.db.models.deletion.CASCADE,
|
|
||||||
to="main.account",
|
|
||||||
verbose_name="Compte",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name="snapshot",
|
|
||||||
name="date",
|
|
||||||
field=models.DateField(
|
|
||||||
default=datetime.date.today, verbose_name="Date de fin"
|
|
||||||
),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name="snapshot",
|
|
||||||
name="start_date",
|
|
||||||
field=models.DateField(
|
|
||||||
default=datetime.date.today, verbose_name="Date de début"
|
|
||||||
),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name="snapshot",
|
|
||||||
name="start_value",
|
|
||||||
field=models.DecimalField(
|
|
||||||
decimal_places=2,
|
|
||||||
default=0,
|
|
||||||
max_digits=12,
|
|
||||||
verbose_name="Valeur de début",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name="snapshot",
|
|
||||||
name="sum",
|
|
||||||
field=models.DecimalField(
|
|
||||||
decimal_places=2,
|
|
||||||
default=0,
|
|
||||||
editable=False,
|
|
||||||
max_digits=12,
|
|
||||||
verbose_name="Différence des transactions",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name="snapshot",
|
|
||||||
name="value",
|
|
||||||
field=models.DecimalField(
|
|
||||||
decimal_places=2, default=0, max_digits=12, verbose_name="Valeur de fin"
|
|
||||||
),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name="transaction",
|
|
||||||
name="account",
|
|
||||||
field=models.ForeignKey(
|
|
||||||
editable=False,
|
|
||||||
on_delete=django.db.models.deletion.CASCADE,
|
|
||||||
to="main.account",
|
|
||||||
verbose_name="Compte",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name="transaction",
|
|
||||||
name="snapshot",
|
|
||||||
field=models.ForeignKey(
|
|
||||||
on_delete=django.db.models.deletion.CASCADE,
|
|
||||||
to="main.snapshot",
|
|
||||||
verbose_name="Relevé",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
migrations.AlterModelOptions(
|
|
||||||
name="account",
|
|
||||||
options={
|
|
||||||
"ordering": ["name"],
|
|
||||||
"verbose_name": "Account",
|
|
||||||
"verbose_name_plural": "Accounts",
|
|
||||||
},
|
|
||||||
),
|
|
||||||
migrations.AlterModelOptions(
|
|
||||||
name="category",
|
|
||||||
options={
|
|
||||||
"ordering": ["name"],
|
|
||||||
"verbose_name": "Category",
|
|
||||||
"verbose_name_plural": "Categories",
|
|
||||||
},
|
|
||||||
),
|
|
||||||
migrations.AlterModelOptions(
|
|
||||||
name="invoice",
|
|
||||||
options={"verbose_name": "Invoice", "verbose_name_plural": "Invoices"},
|
|
||||||
),
|
|
||||||
migrations.AlterModelOptions(
|
|
||||||
name="snapshot",
|
|
||||||
options={
|
|
||||||
"ordering": ["-date"],
|
|
||||||
"verbose_name": "Statement",
|
|
||||||
"verbose_name_plural": "Statements",
|
|
||||||
},
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name="account",
|
|
||||||
name="icon",
|
|
||||||
field=models.CharField(
|
|
||||||
default="building-columns",
|
|
||||||
max_length=64,
|
|
||||||
validators=[
|
|
||||||
django.core.validators.RegexValidator(
|
|
||||||
re.compile("^[-a-zA-Z0-9_]+\\Z"),
|
|
||||||
"Enter a valid “slug” consisting of letters, numbers, underscores or hyphens.",
|
|
||||||
"invalid",
|
|
||||||
)
|
|
||||||
],
|
|
||||||
verbose_name="Icon",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name="account",
|
|
||||||
name="name",
|
|
||||||
field=models.CharField(
|
|
||||||
default="Account", max_length=64, verbose_name="Name"
|
|
||||||
),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name="account",
|
|
||||||
name="user",
|
|
||||||
field=models.ForeignKey(
|
|
||||||
editable=False,
|
|
||||||
on_delete=django.db.models.deletion.CASCADE,
|
|
||||||
to=settings.AUTH_USER_MODEL,
|
|
||||||
verbose_name="User",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name="category",
|
|
||||||
name="icon",
|
|
||||||
field=models.CharField(
|
|
||||||
default="folder",
|
|
||||||
max_length=64,
|
|
||||||
validators=[
|
|
||||||
django.core.validators.RegexValidator(
|
|
||||||
re.compile("^[-a-zA-Z0-9_]+\\Z"),
|
|
||||||
"Enter a valid “slug” consisting of letters, numbers, underscores or hyphens.",
|
|
||||||
"invalid",
|
|
||||||
)
|
|
||||||
],
|
|
||||||
verbose_name="Icon",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name="category",
|
|
||||||
name="name",
|
|
||||||
field=models.CharField(
|
|
||||||
default="Category", max_length=64, verbose_name="Name"
|
|
||||||
),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name="category",
|
|
||||||
name="user",
|
|
||||||
field=models.ForeignKey(
|
|
||||||
editable=False,
|
|
||||||
on_delete=django.db.models.deletion.CASCADE,
|
|
||||||
to=settings.AUTH_USER_MODEL,
|
|
||||||
verbose_name="User",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name="invoice",
|
|
||||||
name="file",
|
|
||||||
field=models.FileField(
|
|
||||||
max_length=128,
|
|
||||||
upload_to=main.utils.get_path,
|
|
||||||
validators=[django.core.validators.FileExtensionValidator(["pdf"])],
|
|
||||||
verbose_name="File",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name="invoice",
|
|
||||||
name="name",
|
|
||||||
field=models.CharField(
|
|
||||||
default="Invoice", max_length=256, verbose_name="Name"
|
|
||||||
),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name="invoice",
|
|
||||||
name="user",
|
|
||||||
field=models.ForeignKey(
|
|
||||||
editable=False,
|
|
||||||
on_delete=django.db.models.deletion.CASCADE,
|
|
||||||
to=settings.AUTH_USER_MODEL,
|
|
||||||
verbose_name="User",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name="snapshot",
|
|
||||||
name="account",
|
|
||||||
field=models.ForeignKey(
|
|
||||||
on_delete=django.db.models.deletion.CASCADE,
|
|
||||||
to="main.account",
|
|
||||||
verbose_name="Account",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name="snapshot",
|
|
||||||
name="date",
|
|
||||||
field=models.DateField(
|
|
||||||
default=datetime.date.today, verbose_name="End date"
|
|
||||||
),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name="snapshot",
|
|
||||||
name="diff",
|
|
||||||
field=models.DecimalField(
|
|
||||||
decimal_places=2,
|
|
||||||
default=0,
|
|
||||||
editable=False,
|
|
||||||
max_digits=12,
|
|
||||||
verbose_name="Difference",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name="snapshot",
|
|
||||||
name="file",
|
|
||||||
field=models.FileField(
|
|
||||||
blank=True,
|
|
||||||
default="",
|
|
||||||
max_length=256,
|
|
||||||
upload_to=main.utils.get_path,
|
|
||||||
validators=[django.core.validators.FileExtensionValidator(["pdf"])],
|
|
||||||
verbose_name="File",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name="snapshot",
|
|
||||||
name="start_date",
|
|
||||||
field=models.DateField(
|
|
||||||
default=datetime.date.today, verbose_name="Start date"
|
|
||||||
),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name="snapshot",
|
|
||||||
name="start_value",
|
|
||||||
field=models.DecimalField(
|
|
||||||
decimal_places=2, default=0, max_digits=12, verbose_name="Start value"
|
|
||||||
),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name="snapshot",
|
|
||||||
name="sum",
|
|
||||||
field=models.DecimalField(
|
|
||||||
decimal_places=2,
|
|
||||||
default=0,
|
|
||||||
editable=False,
|
|
||||||
max_digits=12,
|
|
||||||
verbose_name="Transaction difference",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name="snapshot",
|
|
||||||
name="user",
|
|
||||||
field=models.ForeignKey(
|
|
||||||
editable=False,
|
|
||||||
on_delete=django.db.models.deletion.CASCADE,
|
|
||||||
to=settings.AUTH_USER_MODEL,
|
|
||||||
verbose_name="User",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name="snapshot",
|
|
||||||
name="value",
|
|
||||||
field=models.DecimalField(
|
|
||||||
decimal_places=2, default=0, max_digits=12, verbose_name="End value"
|
|
||||||
),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name="transaction",
|
|
||||||
name="account",
|
|
||||||
field=models.ForeignKey(
|
|
||||||
editable=False,
|
|
||||||
on_delete=django.db.models.deletion.CASCADE,
|
|
||||||
to="main.account",
|
|
||||||
verbose_name="Account",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name="transaction",
|
|
||||||
name="category",
|
|
||||||
field=models.ForeignKey(
|
|
||||||
blank=True,
|
|
||||||
null=True,
|
|
||||||
on_delete=django.db.models.deletion.SET_NULL,
|
|
||||||
to="main.category",
|
|
||||||
verbose_name="Category",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name="transaction",
|
|
||||||
name="name",
|
|
||||||
field=models.CharField(
|
|
||||||
default="Transaction", max_length=256, verbose_name="Name"
|
|
||||||
),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name="transaction",
|
|
||||||
name="payment",
|
|
||||||
field=models.CharField(
|
|
||||||
blank=True, max_length=128, null=True, verbose_name="Payment"
|
|
||||||
),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name="transaction",
|
|
||||||
name="real_date",
|
|
||||||
field=models.DateField(blank=True, null=True, verbose_name="Real date"),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name="transaction",
|
|
||||||
name="snapshot",
|
|
||||||
field=models.ForeignKey(
|
|
||||||
on_delete=django.db.models.deletion.CASCADE,
|
|
||||||
to="main.snapshot",
|
|
||||||
verbose_name="Statement",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name="transaction",
|
|
||||||
name="trader",
|
|
||||||
field=models.CharField(
|
|
||||||
blank=True, max_length=128, null=True, verbose_name="Trader"
|
|
||||||
),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name="transaction",
|
|
||||||
name="user",
|
|
||||||
field=models.ForeignKey(
|
|
||||||
editable=False,
|
|
||||||
on_delete=django.db.models.deletion.CASCADE,
|
|
||||||
to=settings.AUTH_USER_MODEL,
|
|
||||||
verbose_name="User",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name="transaction",
|
|
||||||
name="value",
|
|
||||||
field=models.DecimalField(
|
|
||||||
decimal_places=2, default=0, max_digits=12, verbose_name="Value"
|
|
||||||
),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name="account",
|
|
||||||
name="icon",
|
|
||||||
field=models.SlugField(
|
|
||||||
default="building-columns", max_length=64, verbose_name="Icon"
|
|
||||||
),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name="category",
|
|
||||||
name="icon",
|
|
||||||
field=models.SlugField(
|
|
||||||
default="folder", max_length=64, verbose_name="Icon"
|
|
||||||
),
|
|
||||||
),
|
|
||||||
migrations.AddField(
|
|
||||||
model_name="account",
|
|
||||||
name="default",
|
|
||||||
field=models.BooleanField(default=False, verbose_name="Default"),
|
|
||||||
),
|
|
||||||
migrations.AlterModelOptions(
|
|
||||||
name="account",
|
|
||||||
options={
|
|
||||||
"ordering": ["-default", "name"],
|
|
||||||
"verbose_name": "Account",
|
|
||||||
"verbose_name_plural": "Accounts",
|
|
||||||
},
|
|
||||||
),
|
|
||||||
migrations.AlterModelOptions(
|
|
||||||
name="invoice",
|
|
||||||
options={
|
|
||||||
"ordering": ["transaction", "name"],
|
|
||||||
"verbose_name": "Invoice",
|
|
||||||
"verbose_name_plural": "Invoices",
|
|
||||||
},
|
|
||||||
),
|
|
||||||
migrations.AlterModelOptions(
|
|
||||||
name="snapshot",
|
|
||||||
options={
|
|
||||||
"ordering": ["-date", "account"],
|
|
||||||
"verbose_name": "Statement",
|
|
||||||
"verbose_name_plural": "Statements",
|
|
||||||
},
|
|
||||||
),
|
|
||||||
migrations.AlterModelOptions(
|
|
||||||
name="transaction",
|
|
||||||
options={
|
|
||||||
"ordering": ["-date", "snapshot"],
|
|
||||||
"verbose_name": "Transaction",
|
|
||||||
"verbose_name_plural": "Transactions",
|
|
||||||
},
|
|
||||||
),
|
|
||||||
migrations.RemoveField(
|
|
||||||
model_name="account",
|
|
||||||
name="icon",
|
|
||||||
),
|
|
||||||
migrations.RemoveField(
|
|
||||||
model_name="category",
|
|
||||||
name="icon",
|
|
||||||
),
|
|
||||||
migrations.AddField(
|
|
||||||
model_name="account",
|
|
||||||
name="icon",
|
|
||||||
field=models.SlugField(default="bank", max_length=24, verbose_name="Icon"),
|
|
||||||
),
|
|
||||||
migrations.AddField(
|
|
||||||
model_name="category",
|
|
||||||
name="icon",
|
|
||||||
field=models.SlugField(
|
|
||||||
default="folder", max_length=24, verbose_name="Icon"
|
|
||||||
),
|
|
||||||
),
|
|
||||||
]
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
# Generated by Django 4.0.4 on 2022-05-22 09:15
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
dependencies = [
|
||||||
|
("main", "0001_initial"),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="snapshot",
|
||||||
|
name="date",
|
||||||
|
field=models.DateField(unique=True),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="snapshot",
|
||||||
|
name="diff",
|
||||||
|
field=models.DecimalField(
|
||||||
|
blank=True, decimal_places=2, editable=False, max_digits=12, null=True
|
||||||
|
),
|
||||||
|
),
|
||||||
|
]
|
17
nummi/main/migrations/0003_transaction_real_date.py
Normal file
17
nummi/main/migrations/0003_transaction_real_date.py
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
# Generated by Django 4.0.4 on 2022-05-22 11:35
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
dependencies = [
|
||||||
|
("main", "0002_alter_snapshot_date_alter_snapshot_diff"),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name="transaction",
|
||||||
|
name="real_date",
|
||||||
|
field=models.DateField(blank=True, null=True),
|
||||||
|
),
|
||||||
|
]
|
17
nummi/main/migrations/0004_transaction_payment.py
Normal file
17
nummi/main/migrations/0004_transaction_payment.py
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
# Generated by Django 4.0.4 on 2022-05-22 11:51
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
dependencies = [
|
||||||
|
("main", "0003_transaction_real_date"),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name="transaction",
|
||||||
|
name="payment",
|
||||||
|
field=models.CharField(blank=True, max_length=128, null=True),
|
||||||
|
),
|
||||||
|
]
|
17
nummi/main/migrations/0005_alter_category_name.py
Normal file
17
nummi/main/migrations/0005_alter_category_name.py
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
# Generated by Django 4.0.4 on 2022-05-22 11:56
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
dependencies = [
|
||||||
|
("main", "0004_transaction_payment"),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="category",
|
||||||
|
name="name",
|
||||||
|
field=models.CharField(default="New Category", max_length=64),
|
||||||
|
),
|
||||||
|
]
|
|
@ -0,0 +1,145 @@
|
||||||
|
# Generated by Django 4.1.4 on 2022-12-20 14:26
|
||||||
|
|
||||||
|
import datetime
|
||||||
|
|
||||||
|
import django.core.validators
|
||||||
|
import django.db.models.deletion
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
dependencies = [
|
||||||
|
("main", "0005_alter_category_name"),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterModelOptions(
|
||||||
|
name="category",
|
||||||
|
options={
|
||||||
|
"ordering": ["name"],
|
||||||
|
"verbose_name": "Catégorie",
|
||||||
|
"verbose_name_plural": "Catégories",
|
||||||
|
},
|
||||||
|
),
|
||||||
|
migrations.AlterModelOptions(
|
||||||
|
name="invoice",
|
||||||
|
options={"verbose_name": "Facture", "verbose_name_plural": "Factures"},
|
||||||
|
),
|
||||||
|
migrations.AlterModelOptions(
|
||||||
|
name="snapshot",
|
||||||
|
options={
|
||||||
|
"ordering": ["-date"],
|
||||||
|
"verbose_name": "Relevé",
|
||||||
|
"verbose_name_plural": "Relevés",
|
||||||
|
},
|
||||||
|
),
|
||||||
|
migrations.AlterModelOptions(
|
||||||
|
name="transaction",
|
||||||
|
options={
|
||||||
|
"ordering": ["-date"],
|
||||||
|
"verbose_name": "Transaction",
|
||||||
|
"verbose_name_plural": "Transactions",
|
||||||
|
},
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name="category",
|
||||||
|
name="budget",
|
||||||
|
field=models.BooleanField(default=True, verbose_name="Budget"),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="category",
|
||||||
|
name="icon",
|
||||||
|
field=models.CharField(
|
||||||
|
default="folder", max_length=64, verbose_name="Icône"
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="category",
|
||||||
|
name="name",
|
||||||
|
field=models.CharField(
|
||||||
|
default="Catégorie", max_length=64, verbose_name="Nom"
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="invoice",
|
||||||
|
name="file",
|
||||||
|
field=models.FileField(
|
||||||
|
upload_to="invoices/",
|
||||||
|
validators=[django.core.validators.FileExtensionValidator(["pdf"])],
|
||||||
|
verbose_name="Fichier",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="invoice",
|
||||||
|
name="name",
|
||||||
|
field=models.CharField(
|
||||||
|
default="Facture", max_length=256, verbose_name="Nom"
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="snapshot",
|
||||||
|
name="date",
|
||||||
|
field=models.DateField(unique=True, verbose_name="Date"),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="snapshot",
|
||||||
|
name="value",
|
||||||
|
field=models.DecimalField(
|
||||||
|
decimal_places=2, default=0, max_digits=12, verbose_name="Valeur"
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="transaction",
|
||||||
|
name="category",
|
||||||
|
field=models.ForeignKey(
|
||||||
|
blank=True,
|
||||||
|
null=True,
|
||||||
|
on_delete=django.db.models.deletion.SET_NULL,
|
||||||
|
to="main.category",
|
||||||
|
verbose_name="Catégorie",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="transaction",
|
||||||
|
name="date",
|
||||||
|
field=models.DateField(default=datetime.date.today, verbose_name="Date"),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="transaction",
|
||||||
|
name="description",
|
||||||
|
field=models.TextField(blank=True, null=True, verbose_name="Description"),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="transaction",
|
||||||
|
name="name",
|
||||||
|
field=models.CharField(
|
||||||
|
default="Transaction", max_length=256, verbose_name="Nom"
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="transaction",
|
||||||
|
name="payment",
|
||||||
|
field=models.CharField(
|
||||||
|
blank=True, max_length=128, null=True, verbose_name="Paiement"
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="transaction",
|
||||||
|
name="real_date",
|
||||||
|
field=models.DateField(blank=True, null=True, verbose_name="Date réelle"),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="transaction",
|
||||||
|
name="trader",
|
||||||
|
field=models.CharField(
|
||||||
|
blank=True, max_length=128, null=True, verbose_name="Commerçant"
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="transaction",
|
||||||
|
name="value",
|
||||||
|
field=models.DecimalField(
|
||||||
|
decimal_places=2, default=0, max_digits=12, verbose_name="Valeur"
|
||||||
|
),
|
||||||
|
),
|
||||||
|
]
|
|
@ -0,0 +1,44 @@
|
||||||
|
# Generated by Django 4.1.4 on 2022-12-21 08:53
|
||||||
|
|
||||||
|
import datetime
|
||||||
|
|
||||||
|
import django.core.validators
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
dependencies = [
|
||||||
|
("main", "0006_alter_category_options_alter_invoice_options_and_more"),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name="snapshot",
|
||||||
|
name="file",
|
||||||
|
field=models.FileField(
|
||||||
|
blank=True,
|
||||||
|
max_length=128,
|
||||||
|
null=True,
|
||||||
|
upload_to="snapshots/",
|
||||||
|
validators=[django.core.validators.FileExtensionValidator(["pdf"])],
|
||||||
|
verbose_name="Fichier",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="invoice",
|
||||||
|
name="file",
|
||||||
|
field=models.FileField(
|
||||||
|
max_length=128,
|
||||||
|
upload_to="invoices/",
|
||||||
|
validators=[django.core.validators.FileExtensionValidator(["pdf"])],
|
||||||
|
verbose_name="Fichier",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="snapshot",
|
||||||
|
name="date",
|
||||||
|
field=models.DateField(
|
||||||
|
default=datetime.date.today, unique=True, verbose_name="Date"
|
||||||
|
),
|
||||||
|
),
|
||||||
|
]
|
15
nummi/main/migrations/0008_auto_20221221_1657.py
Normal file
15
nummi/main/migrations/0008_auto_20221221_1657.py
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
# Generated by Django 4.1.4 on 2022-12-21 15:57
|
||||||
|
|
||||||
|
from django.contrib.postgres.operations import TrigramExtension, UnaccentExtension
|
||||||
|
from django.db import migrations
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
dependencies = [
|
||||||
|
("main", "0007_snapshot_file_alter_invoice_file_alter_snapshot_date"),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
TrigramExtension(),
|
||||||
|
UnaccentExtension(),
|
||||||
|
]
|
|
@ -0,0 +1,46 @@
|
||||||
|
# Generated by Django 4.1.4 on 2022-12-28 11:20
|
||||||
|
|
||||||
|
import django.core.validators
|
||||||
|
import django.db.models.deletion
|
||||||
|
import main.models
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
dependencies = [
|
||||||
|
("main", "0008_auto_20221221_1657"),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="invoice",
|
||||||
|
name="file",
|
||||||
|
field=models.FileField(
|
||||||
|
max_length=128,
|
||||||
|
upload_to=main.models.get_path,
|
||||||
|
validators=[django.core.validators.FileExtensionValidator(["pdf"])],
|
||||||
|
verbose_name="Fichier",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="invoice",
|
||||||
|
name="transaction",
|
||||||
|
field=models.ForeignKey(
|
||||||
|
editable=False,
|
||||||
|
on_delete=django.db.models.deletion.CASCADE,
|
||||||
|
to="main.transaction",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="snapshot",
|
||||||
|
name="file",
|
||||||
|
field=models.FileField(
|
||||||
|
blank=True,
|
||||||
|
default="",
|
||||||
|
max_length=256,
|
||||||
|
upload_to=main.models.get_path,
|
||||||
|
validators=[django.core.validators.FileExtensionValidator(["pdf"])],
|
||||||
|
verbose_name="Fichier",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
]
|
|
@ -0,0 +1,59 @@
|
||||||
|
# Generated by Django 4.1.4 on 2022-12-29 18:03
|
||||||
|
|
||||||
|
import django.db.models.deletion
|
||||||
|
from django.conf import settings
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
dependencies = [
|
||||||
|
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||||
|
("main", "0009_alter_invoice_file_alter_invoice_transaction_and_more"),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name="category",
|
||||||
|
name="user",
|
||||||
|
field=models.ForeignKey(
|
||||||
|
default=1,
|
||||||
|
on_delete=django.db.models.deletion.CASCADE,
|
||||||
|
to=settings.AUTH_USER_MODEL,
|
||||||
|
verbose_name="Utilisateur",
|
||||||
|
),
|
||||||
|
preserve_default=False,
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name="invoice",
|
||||||
|
name="user",
|
||||||
|
field=models.ForeignKey(
|
||||||
|
default=1,
|
||||||
|
on_delete=django.db.models.deletion.CASCADE,
|
||||||
|
to=settings.AUTH_USER_MODEL,
|
||||||
|
verbose_name="Utilisateur",
|
||||||
|
),
|
||||||
|
preserve_default=False,
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name="snapshot",
|
||||||
|
name="user",
|
||||||
|
field=models.ForeignKey(
|
||||||
|
default=1,
|
||||||
|
on_delete=django.db.models.deletion.CASCADE,
|
||||||
|
to=settings.AUTH_USER_MODEL,
|
||||||
|
verbose_name="Utilisateur",
|
||||||
|
),
|
||||||
|
preserve_default=False,
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name="transaction",
|
||||||
|
name="user",
|
||||||
|
field=models.ForeignKey(
|
||||||
|
default=1,
|
||||||
|
on_delete=django.db.models.deletion.CASCADE,
|
||||||
|
to=settings.AUTH_USER_MODEL,
|
||||||
|
verbose_name="Utilisateur",
|
||||||
|
),
|
||||||
|
preserve_default=False,
|
||||||
|
),
|
||||||
|
]
|
|
@ -0,0 +1,55 @@
|
||||||
|
# Generated by Django 4.1.4 on 2022-12-29 18:14
|
||||||
|
|
||||||
|
import django.db.models.deletion
|
||||||
|
from django.conf import settings
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
dependencies = [
|
||||||
|
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||||
|
("main", "0010_category_user_invoice_user_snapshot_user_and_more"),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="category",
|
||||||
|
name="user",
|
||||||
|
field=models.ForeignKey(
|
||||||
|
editable=False,
|
||||||
|
on_delete=django.db.models.deletion.CASCADE,
|
||||||
|
to=settings.AUTH_USER_MODEL,
|
||||||
|
verbose_name="Utilisateur",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="invoice",
|
||||||
|
name="user",
|
||||||
|
field=models.ForeignKey(
|
||||||
|
editable=False,
|
||||||
|
on_delete=django.db.models.deletion.CASCADE,
|
||||||
|
to=settings.AUTH_USER_MODEL,
|
||||||
|
verbose_name="Utilisateur",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="snapshot",
|
||||||
|
name="user",
|
||||||
|
field=models.ForeignKey(
|
||||||
|
editable=False,
|
||||||
|
on_delete=django.db.models.deletion.CASCADE,
|
||||||
|
to=settings.AUTH_USER_MODEL,
|
||||||
|
verbose_name="Utilisateur",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="transaction",
|
||||||
|
name="user",
|
||||||
|
field=models.ForeignKey(
|
||||||
|
editable=False,
|
||||||
|
on_delete=django.db.models.deletion.CASCADE,
|
||||||
|
to=settings.AUTH_USER_MODEL,
|
||||||
|
verbose_name="Utilisateur",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
]
|
19
nummi/main/migrations/0012_alter_snapshot_date.py
Normal file
19
nummi/main/migrations/0012_alter_snapshot_date.py
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
# Generated by Django 4.1.4 on 2022-12-29 18:22
|
||||||
|
|
||||||
|
import datetime
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
dependencies = [
|
||||||
|
("main", "0011_alter_category_user_alter_invoice_user_and_more"),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="snapshot",
|
||||||
|
name="date",
|
||||||
|
field=models.DateField(default=datetime.date.today, verbose_name="Date"),
|
||||||
|
),
|
||||||
|
]
|
|
@ -0,0 +1,79 @@
|
||||||
|
# Generated by Django 4.1.4 on 2022-12-29 18:32
|
||||||
|
|
||||||
|
import uuid
|
||||||
|
|
||||||
|
import django.db.models.deletion
|
||||||
|
from django.conf import settings
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
dependencies = [
|
||||||
|
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||||
|
("main", "0012_alter_snapshot_date"),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.CreateModel(
|
||||||
|
name="Account",
|
||||||
|
fields=[
|
||||||
|
(
|
||||||
|
"id",
|
||||||
|
models.UUIDField(
|
||||||
|
default=uuid.uuid4,
|
||||||
|
editable=False,
|
||||||
|
primary_key=True,
|
||||||
|
serialize=False,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
(
|
||||||
|
"name",
|
||||||
|
models.CharField(
|
||||||
|
default="Account", max_length=64, verbose_name="Nom"
|
||||||
|
),
|
||||||
|
),
|
||||||
|
(
|
||||||
|
"icon",
|
||||||
|
models.CharField(
|
||||||
|
default="folder", max_length=64, verbose_name="Icône"
|
||||||
|
),
|
||||||
|
),
|
||||||
|
(
|
||||||
|
"user",
|
||||||
|
models.ForeignKey(
|
||||||
|
editable=False,
|
||||||
|
on_delete=django.db.models.deletion.CASCADE,
|
||||||
|
to=settings.AUTH_USER_MODEL,
|
||||||
|
verbose_name="Utilisateur",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
"verbose_name": "Account",
|
||||||
|
"verbose_name_plural": "Accounts",
|
||||||
|
"ordering": ["name"],
|
||||||
|
},
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name="snapshot",
|
||||||
|
name="account",
|
||||||
|
field=models.ForeignKey(
|
||||||
|
blank=True,
|
||||||
|
null=True,
|
||||||
|
on_delete=django.db.models.deletion.SET_NULL,
|
||||||
|
to="main.account",
|
||||||
|
verbose_name="Account",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name="transaction",
|
||||||
|
name="account",
|
||||||
|
field=models.ForeignKey(
|
||||||
|
blank=True,
|
||||||
|
null=True,
|
||||||
|
on_delete=django.db.models.deletion.SET_NULL,
|
||||||
|
to="main.account",
|
||||||
|
verbose_name="Account",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
]
|
19
nummi/main/migrations/0014_alter_account_icon.py
Normal file
19
nummi/main/migrations/0014_alter_account_icon.py
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
# Generated by Django 4.1.4 on 2022-12-29 20:05
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
dependencies = [
|
||||||
|
("main", "0013_account_snapshot_account_transaction_account"),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="account",
|
||||||
|
name="icon",
|
||||||
|
field=models.CharField(
|
||||||
|
default="building-columns", max_length=64, verbose_name="Icône"
|
||||||
|
),
|
||||||
|
),
|
||||||
|
]
|
|
@ -0,0 +1,70 @@
|
||||||
|
# Generated by Django 4.1.4 on 2022-12-29 20:26
|
||||||
|
|
||||||
|
import datetime
|
||||||
|
|
||||||
|
import django.db.models.deletion
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
dependencies = [
|
||||||
|
("main", "0014_alter_account_icon"),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterModelOptions(
|
||||||
|
name="snapshot",
|
||||||
|
options={
|
||||||
|
"ordering": ["-date"],
|
||||||
|
"verbose_name": "Statement",
|
||||||
|
"verbose_name_plural": "Statements",
|
||||||
|
},
|
||||||
|
),
|
||||||
|
migrations.RemoveField(
|
||||||
|
model_name="snapshot",
|
||||||
|
name="diff",
|
||||||
|
),
|
||||||
|
migrations.RemoveField(
|
||||||
|
model_name="snapshot",
|
||||||
|
name="previous",
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name="snapshot",
|
||||||
|
name="start_date",
|
||||||
|
field=models.DateField(
|
||||||
|
default=datetime.date.today, verbose_name="Start date"
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name="snapshot",
|
||||||
|
name="start_value",
|
||||||
|
field=models.DecimalField(
|
||||||
|
decimal_places=2, default=0, max_digits=12, verbose_name="Start value"
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name="transaction",
|
||||||
|
name="snapshot",
|
||||||
|
field=models.ForeignKey(
|
||||||
|
blank=True,
|
||||||
|
null=True,
|
||||||
|
on_delete=django.db.models.deletion.SET_NULL,
|
||||||
|
to="main.snapshot",
|
||||||
|
verbose_name="Statement",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="snapshot",
|
||||||
|
name="date",
|
||||||
|
field=models.DateField(
|
||||||
|
default=datetime.date.today, verbose_name="End date"
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="snapshot",
|
||||||
|
name="value",
|
||||||
|
field=models.DecimalField(
|
||||||
|
decimal_places=2, default=0, max_digits=12, verbose_name="End value"
|
||||||
|
),
|
||||||
|
),
|
||||||
|
]
|
|
@ -0,0 +1,45 @@
|
||||||
|
# Generated by Django 4.1.4 on 2022-12-29 20:32
|
||||||
|
|
||||||
|
import django.db.models.deletion
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
def set_snapshot(apps, schema_editor):
|
||||||
|
Transaction = apps.get_model("main", "Transaction")
|
||||||
|
Snapshot = apps.get_model("main", "Snapshot")
|
||||||
|
for transaction in Transaction.objects.filter(snapshot__isnull=True):
|
||||||
|
transaction.snapshot = (
|
||||||
|
Snapshot.objects.filter(user=transaction.user).order_by("-date").first()
|
||||||
|
)
|
||||||
|
transaction.save()
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
dependencies = [
|
||||||
|
("main", "0015_alter_snapshot_options_remove_snapshot_diff_and_more"),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="transaction",
|
||||||
|
name="account",
|
||||||
|
field=models.ForeignKey(
|
||||||
|
blank=True,
|
||||||
|
editable=False,
|
||||||
|
null=True,
|
||||||
|
on_delete=django.db.models.deletion.SET_NULL,
|
||||||
|
to="main.account",
|
||||||
|
verbose_name="Account",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.RunPython(set_snapshot),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="transaction",
|
||||||
|
name="snapshot",
|
||||||
|
field=models.ForeignKey(
|
||||||
|
on_delete=django.db.models.deletion.CASCADE,
|
||||||
|
to="main.snapshot",
|
||||||
|
verbose_name="Statement",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
]
|
44
nummi/main/migrations/0017_alter_transaction_account.py
Normal file
44
nummi/main/migrations/0017_alter_transaction_account.py
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
# Generated by Django 4.1.4 on 2022-12-29 20:34
|
||||||
|
|
||||||
|
import django.db.models.deletion
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
def set_account(apps, schema_editor):
|
||||||
|
Transaction = apps.get_model("main", "Transaction")
|
||||||
|
Snapshot = apps.get_model("main", "Snapshot")
|
||||||
|
Account = apps.get_model("main", "Account")
|
||||||
|
for snapshot in Snapshot.objects.filter(account__isnull=True):
|
||||||
|
account = Account.objects.filter(user=snapshot.user).first()
|
||||||
|
if account is None:
|
||||||
|
account = Account(user=snapshot.user)
|
||||||
|
account.save()
|
||||||
|
snapshot.account = account
|
||||||
|
snapshot.save()
|
||||||
|
for transaction in Transaction.objects.filter(
|
||||||
|
account__isnull=True, snapshot__isnull=False
|
||||||
|
):
|
||||||
|
transaction.account = transaction.snapshot.account
|
||||||
|
transaction.save()
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
atomic = False
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
("main", "0016_alter_transaction_account_alter_transaction_snapshot"),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.RunPython(set_account, atomic=True),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="transaction",
|
||||||
|
name="account",
|
||||||
|
field=models.ForeignKey(
|
||||||
|
editable=False,
|
||||||
|
on_delete=django.db.models.deletion.CASCADE,
|
||||||
|
to="main.account",
|
||||||
|
verbose_name="Account",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
]
|
|
@ -0,0 +1,33 @@
|
||||||
|
# Generated by Django 4.1.4 on 2022-12-29 20:56
|
||||||
|
|
||||||
|
import django.db.models.deletion
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
dependencies = [
|
||||||
|
("main", "0017_alter_transaction_account"),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name="snapshot",
|
||||||
|
name="diff",
|
||||||
|
field=models.DecimalField(
|
||||||
|
decimal_places=2,
|
||||||
|
default=0,
|
||||||
|
editable=False,
|
||||||
|
max_digits=12,
|
||||||
|
verbose_name="Différence",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="snapshot",
|
||||||
|
name="account",
|
||||||
|
field=models.ForeignKey(
|
||||||
|
on_delete=django.db.models.deletion.CASCADE,
|
||||||
|
to="main.account",
|
||||||
|
verbose_name="Account",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
]
|
23
nummi/main/migrations/0019_snapshot_sum.py
Normal file
23
nummi/main/migrations/0019_snapshot_sum.py
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
# Generated by Django 4.1.4 on 2022-12-29 20:57
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
dependencies = [
|
||||||
|
("main", "0018_snapshot_diff_alter_snapshot_account"),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name="snapshot",
|
||||||
|
name="sum",
|
||||||
|
field=models.DecimalField(
|
||||||
|
decimal_places=2,
|
||||||
|
default=0,
|
||||||
|
editable=False,
|
||||||
|
max_digits=12,
|
||||||
|
verbose_name="Transaction difference",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
]
|
|
@ -0,0 +1,140 @@
|
||||||
|
# Generated by Django 4.1.4 on 2022-12-29 21:15
|
||||||
|
|
||||||
|
import datetime
|
||||||
|
import re
|
||||||
|
|
||||||
|
import django.core.validators
|
||||||
|
import django.db.models.deletion
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
dependencies = [
|
||||||
|
("main", "0019_snapshot_sum"),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterModelOptions(
|
||||||
|
name="account",
|
||||||
|
options={
|
||||||
|
"ordering": ["name"],
|
||||||
|
"verbose_name": "Compte",
|
||||||
|
"verbose_name_plural": "Comptes",
|
||||||
|
},
|
||||||
|
),
|
||||||
|
migrations.AlterModelOptions(
|
||||||
|
name="snapshot",
|
||||||
|
options={
|
||||||
|
"ordering": ["-date"],
|
||||||
|
"verbose_name": "Relevé",
|
||||||
|
"verbose_name_plural": "Relevés",
|
||||||
|
},
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="account",
|
||||||
|
name="icon",
|
||||||
|
field=models.CharField(
|
||||||
|
default="building-columns",
|
||||||
|
max_length=64,
|
||||||
|
validators=[
|
||||||
|
django.core.validators.RegexValidator(
|
||||||
|
re.compile("^[-a-zA-Z0-9_]+\\Z"),
|
||||||
|
"Enter a valid “slug” consisting of letters, numbers, underscores or hyphens.",
|
||||||
|
"invalid",
|
||||||
|
)
|
||||||
|
],
|
||||||
|
verbose_name="Icône",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="account",
|
||||||
|
name="name",
|
||||||
|
field=models.CharField(default="Compte", max_length=64, verbose_name="Nom"),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="category",
|
||||||
|
name="icon",
|
||||||
|
field=models.CharField(
|
||||||
|
default="folder",
|
||||||
|
max_length=64,
|
||||||
|
validators=[
|
||||||
|
django.core.validators.RegexValidator(
|
||||||
|
re.compile("^[-a-zA-Z0-9_]+\\Z"),
|
||||||
|
"Enter a valid “slug” consisting of letters, numbers, underscores or hyphens.",
|
||||||
|
"invalid",
|
||||||
|
)
|
||||||
|
],
|
||||||
|
verbose_name="Icône",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="snapshot",
|
||||||
|
name="account",
|
||||||
|
field=models.ForeignKey(
|
||||||
|
on_delete=django.db.models.deletion.CASCADE,
|
||||||
|
to="main.account",
|
||||||
|
verbose_name="Compte",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="snapshot",
|
||||||
|
name="date",
|
||||||
|
field=models.DateField(
|
||||||
|
default=datetime.date.today, verbose_name="Date de fin"
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="snapshot",
|
||||||
|
name="start_date",
|
||||||
|
field=models.DateField(
|
||||||
|
default=datetime.date.today, verbose_name="Date de début"
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="snapshot",
|
||||||
|
name="start_value",
|
||||||
|
field=models.DecimalField(
|
||||||
|
decimal_places=2,
|
||||||
|
default=0,
|
||||||
|
max_digits=12,
|
||||||
|
verbose_name="Valeur de début",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="snapshot",
|
||||||
|
name="sum",
|
||||||
|
field=models.DecimalField(
|
||||||
|
decimal_places=2,
|
||||||
|
default=0,
|
||||||
|
editable=False,
|
||||||
|
max_digits=12,
|
||||||
|
verbose_name="Différence des transactions",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="snapshot",
|
||||||
|
name="value",
|
||||||
|
field=models.DecimalField(
|
||||||
|
decimal_places=2, default=0, max_digits=12, verbose_name="Valeur de fin"
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="transaction",
|
||||||
|
name="account",
|
||||||
|
field=models.ForeignKey(
|
||||||
|
editable=False,
|
||||||
|
on_delete=django.db.models.deletion.CASCADE,
|
||||||
|
to="main.account",
|
||||||
|
verbose_name="Compte",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="transaction",
|
||||||
|
name="snapshot",
|
||||||
|
field=models.ForeignKey(
|
||||||
|
on_delete=django.db.models.deletion.CASCADE,
|
||||||
|
to="main.snapshot",
|
||||||
|
verbose_name="Relevé",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
]
|
|
@ -0,0 +1,295 @@
|
||||||
|
# Generated by Django 4.1.4 on 2022-12-31 08:51
|
||||||
|
|
||||||
|
import datetime
|
||||||
|
import re
|
||||||
|
|
||||||
|
import django.core.validators
|
||||||
|
import django.db.models.deletion
|
||||||
|
import main.models
|
||||||
|
from django.conf import settings
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
dependencies = [
|
||||||
|
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||||
|
("main", "0020_alter_account_options_alter_snapshot_options_and_more"),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterModelOptions(
|
||||||
|
name="account",
|
||||||
|
options={
|
||||||
|
"ordering": ["name"],
|
||||||
|
"verbose_name": "Account",
|
||||||
|
"verbose_name_plural": "Accounts",
|
||||||
|
},
|
||||||
|
),
|
||||||
|
migrations.AlterModelOptions(
|
||||||
|
name="category",
|
||||||
|
options={
|
||||||
|
"ordering": ["name"],
|
||||||
|
"verbose_name": "Category",
|
||||||
|
"verbose_name_plural": "Categories",
|
||||||
|
},
|
||||||
|
),
|
||||||
|
migrations.AlterModelOptions(
|
||||||
|
name="invoice",
|
||||||
|
options={"verbose_name": "Invoice", "verbose_name_plural": "Invoices"},
|
||||||
|
),
|
||||||
|
migrations.AlterModelOptions(
|
||||||
|
name="snapshot",
|
||||||
|
options={
|
||||||
|
"ordering": ["-date"],
|
||||||
|
"verbose_name": "Statement",
|
||||||
|
"verbose_name_plural": "Statements",
|
||||||
|
},
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="account",
|
||||||
|
name="icon",
|
||||||
|
field=models.CharField(
|
||||||
|
default="building-columns",
|
||||||
|
max_length=64,
|
||||||
|
validators=[
|
||||||
|
django.core.validators.RegexValidator(
|
||||||
|
re.compile("^[-a-zA-Z0-9_]+\\Z"),
|
||||||
|
"Enter a valid “slug” consisting of letters, numbers, underscores or hyphens.",
|
||||||
|
"invalid",
|
||||||
|
)
|
||||||
|
],
|
||||||
|
verbose_name="Icon",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="account",
|
||||||
|
name="name",
|
||||||
|
field=models.CharField(
|
||||||
|
default="Account", max_length=64, verbose_name="Name"
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="account",
|
||||||
|
name="user",
|
||||||
|
field=models.ForeignKey(
|
||||||
|
editable=False,
|
||||||
|
on_delete=django.db.models.deletion.CASCADE,
|
||||||
|
to=settings.AUTH_USER_MODEL,
|
||||||
|
verbose_name="User",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="category",
|
||||||
|
name="icon",
|
||||||
|
field=models.CharField(
|
||||||
|
default="folder",
|
||||||
|
max_length=64,
|
||||||
|
validators=[
|
||||||
|
django.core.validators.RegexValidator(
|
||||||
|
re.compile("^[-a-zA-Z0-9_]+\\Z"),
|
||||||
|
"Enter a valid “slug” consisting of letters, numbers, underscores or hyphens.",
|
||||||
|
"invalid",
|
||||||
|
)
|
||||||
|
],
|
||||||
|
verbose_name="Icon",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="category",
|
||||||
|
name="name",
|
||||||
|
field=models.CharField(
|
||||||
|
default="Category", max_length=64, verbose_name="Name"
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="category",
|
||||||
|
name="user",
|
||||||
|
field=models.ForeignKey(
|
||||||
|
editable=False,
|
||||||
|
on_delete=django.db.models.deletion.CASCADE,
|
||||||
|
to=settings.AUTH_USER_MODEL,
|
||||||
|
verbose_name="User",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="invoice",
|
||||||
|
name="file",
|
||||||
|
field=models.FileField(
|
||||||
|
max_length=128,
|
||||||
|
upload_to=main.models.get_path,
|
||||||
|
validators=[django.core.validators.FileExtensionValidator(["pdf"])],
|
||||||
|
verbose_name="File",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="invoice",
|
||||||
|
name="name",
|
||||||
|
field=models.CharField(
|
||||||
|
default="Invoice", max_length=256, verbose_name="Name"
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="invoice",
|
||||||
|
name="user",
|
||||||
|
field=models.ForeignKey(
|
||||||
|
editable=False,
|
||||||
|
on_delete=django.db.models.deletion.CASCADE,
|
||||||
|
to=settings.AUTH_USER_MODEL,
|
||||||
|
verbose_name="User",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="snapshot",
|
||||||
|
name="account",
|
||||||
|
field=models.ForeignKey(
|
||||||
|
on_delete=django.db.models.deletion.CASCADE,
|
||||||
|
to="main.account",
|
||||||
|
verbose_name="Account",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="snapshot",
|
||||||
|
name="date",
|
||||||
|
field=models.DateField(
|
||||||
|
default=datetime.date.today, verbose_name="End date"
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="snapshot",
|
||||||
|
name="diff",
|
||||||
|
field=models.DecimalField(
|
||||||
|
decimal_places=2,
|
||||||
|
default=0,
|
||||||
|
editable=False,
|
||||||
|
max_digits=12,
|
||||||
|
verbose_name="Difference",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="snapshot",
|
||||||
|
name="file",
|
||||||
|
field=models.FileField(
|
||||||
|
blank=True,
|
||||||
|
default="",
|
||||||
|
max_length=256,
|
||||||
|
upload_to=main.models.get_path,
|
||||||
|
validators=[django.core.validators.FileExtensionValidator(["pdf"])],
|
||||||
|
verbose_name="File",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="snapshot",
|
||||||
|
name="start_date",
|
||||||
|
field=models.DateField(
|
||||||
|
default=datetime.date.today, verbose_name="Start date"
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="snapshot",
|
||||||
|
name="start_value",
|
||||||
|
field=models.DecimalField(
|
||||||
|
decimal_places=2, default=0, max_digits=12, verbose_name="Start value"
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="snapshot",
|
||||||
|
name="sum",
|
||||||
|
field=models.DecimalField(
|
||||||
|
decimal_places=2,
|
||||||
|
default=0,
|
||||||
|
editable=False,
|
||||||
|
max_digits=12,
|
||||||
|
verbose_name="Transaction difference",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="snapshot",
|
||||||
|
name="user",
|
||||||
|
field=models.ForeignKey(
|
||||||
|
editable=False,
|
||||||
|
on_delete=django.db.models.deletion.CASCADE,
|
||||||
|
to=settings.AUTH_USER_MODEL,
|
||||||
|
verbose_name="User",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="snapshot",
|
||||||
|
name="value",
|
||||||
|
field=models.DecimalField(
|
||||||
|
decimal_places=2, default=0, max_digits=12, verbose_name="End value"
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="transaction",
|
||||||
|
name="account",
|
||||||
|
field=models.ForeignKey(
|
||||||
|
editable=False,
|
||||||
|
on_delete=django.db.models.deletion.CASCADE,
|
||||||
|
to="main.account",
|
||||||
|
verbose_name="Account",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="transaction",
|
||||||
|
name="category",
|
||||||
|
field=models.ForeignKey(
|
||||||
|
blank=True,
|
||||||
|
null=True,
|
||||||
|
on_delete=django.db.models.deletion.SET_NULL,
|
||||||
|
to="main.category",
|
||||||
|
verbose_name="Category",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="transaction",
|
||||||
|
name="name",
|
||||||
|
field=models.CharField(
|
||||||
|
default="Transaction", max_length=256, verbose_name="Name"
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="transaction",
|
||||||
|
name="payment",
|
||||||
|
field=models.CharField(
|
||||||
|
blank=True, max_length=128, null=True, verbose_name="Payment"
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="transaction",
|
||||||
|
name="real_date",
|
||||||
|
field=models.DateField(blank=True, null=True, verbose_name="Real date"),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="transaction",
|
||||||
|
name="snapshot",
|
||||||
|
field=models.ForeignKey(
|
||||||
|
on_delete=django.db.models.deletion.CASCADE,
|
||||||
|
to="main.snapshot",
|
||||||
|
verbose_name="Statement",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="transaction",
|
||||||
|
name="trader",
|
||||||
|
field=models.CharField(
|
||||||
|
blank=True, max_length=128, null=True, verbose_name="Trader"
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="transaction",
|
||||||
|
name="user",
|
||||||
|
field=models.ForeignKey(
|
||||||
|
editable=False,
|
||||||
|
on_delete=django.db.models.deletion.CASCADE,
|
||||||
|
to=settings.AUTH_USER_MODEL,
|
||||||
|
verbose_name="User",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="transaction",
|
||||||
|
name="value",
|
||||||
|
field=models.DecimalField(
|
||||||
|
decimal_places=2, default=0, max_digits=12, verbose_name="Value"
|
||||||
|
),
|
||||||
|
),
|
||||||
|
]
|
|
@ -0,0 +1,26 @@
|
||||||
|
# Generated by Django 4.1.4 on 2022-12-31 08:53
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
dependencies = [
|
||||||
|
("main", "0021_alter_account_options_alter_category_options_and_more"),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="account",
|
||||||
|
name="icon",
|
||||||
|
field=models.SlugField(
|
||||||
|
default="building-columns", max_length=64, verbose_name="Icon"
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="category",
|
||||||
|
name="icon",
|
||||||
|
field=models.SlugField(
|
||||||
|
default="folder", max_length=64, verbose_name="Icon"
|
||||||
|
),
|
||||||
|
),
|
||||||
|
]
|
55
nummi/main/migrations/0023_auto_20221231_1741.py
Normal file
55
nummi/main/migrations/0023_auto_20221231_1741.py
Normal file
|
@ -0,0 +1,55 @@
|
||||||
|
# Generated by Django 4.1.4 on 2022-12-31 16:41
|
||||||
|
|
||||||
|
import pathlib
|
||||||
|
|
||||||
|
import main.models
|
||||||
|
from django.conf import settings
|
||||||
|
from django.db import migrations
|
||||||
|
|
||||||
|
|
||||||
|
def move_files(apps, schema_editor):
|
||||||
|
Invoice = apps.get_model("main", "Invoice")
|
||||||
|
Snapshot = apps.get_model("main", "Snapshot")
|
||||||
|
|
||||||
|
for invoice in Invoice.objects.all():
|
||||||
|
print(f"Invoice {invoice.pk}")
|
||||||
|
if invoice.file is None:
|
||||||
|
invoice.delete()
|
||||||
|
continue
|
||||||
|
try:
|
||||||
|
initial_path = pathlib.Path(invoice.file.path)
|
||||||
|
except ValueError:
|
||||||
|
invoice.delete()
|
||||||
|
continue
|
||||||
|
if invoice.file is None or not initial_path.exists():
|
||||||
|
print(f"!!! Path {initial_path} does not exist")
|
||||||
|
invoice.delete()
|
||||||
|
continue
|
||||||
|
prev_file = invoice.file.path
|
||||||
|
invoice.file.save(main.models.get_path(invoice, None), invoice.file)
|
||||||
|
pathlib.Path(prev_file).unlink()
|
||||||
|
|
||||||
|
for snapshot in Snapshot.objects.filter(file__isnull=False):
|
||||||
|
print(f"Snapshot {snapshot.pk}")
|
||||||
|
try:
|
||||||
|
initial_path = pathlib.Path(snapshot.file.path)
|
||||||
|
except ValueError:
|
||||||
|
snapshot.file = None
|
||||||
|
snapshot.save()
|
||||||
|
continue
|
||||||
|
if not initial_path.exists():
|
||||||
|
print(f"!!! Path {initial_path} does not exist")
|
||||||
|
snapshot.file = None
|
||||||
|
snapshot.save()
|
||||||
|
continue
|
||||||
|
prev_file = snapshot.file.path
|
||||||
|
snapshot.file.save(main.models.get_path(snapshot, None), snapshot.file)
|
||||||
|
pathlib.Path(prev_file).unlink()
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
dependencies = [
|
||||||
|
("main", "0022_alter_account_icon_alter_category_icon"),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [migrations.RunPython(move_files)]
|
17
nummi/main/migrations/0024_account_default.py
Normal file
17
nummi/main/migrations/0024_account_default.py
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
# Generated by Django 4.1.4 on 2022-12-31 18:04
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
dependencies = [
|
||||||
|
("main", "0023_auto_20221231_1741"),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name="account",
|
||||||
|
name="default",
|
||||||
|
field=models.BooleanField(default=False, verbose_name="Default"),
|
||||||
|
),
|
||||||
|
]
|
|
@ -0,0 +1,66 @@
|
||||||
|
# Generated by Django 4.1.4 on 2023-04-19 08:00
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
dependencies = [
|
||||||
|
("main", "0024_account_default"),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterModelOptions(
|
||||||
|
name="account",
|
||||||
|
options={
|
||||||
|
"ordering": ["-default", "name"],
|
||||||
|
"verbose_name": "Account",
|
||||||
|
"verbose_name_plural": "Accounts",
|
||||||
|
},
|
||||||
|
),
|
||||||
|
migrations.AlterModelOptions(
|
||||||
|
name="invoice",
|
||||||
|
options={
|
||||||
|
"ordering": ["transaction", "name"],
|
||||||
|
"verbose_name": "Invoice",
|
||||||
|
"verbose_name_plural": "Invoices",
|
||||||
|
},
|
||||||
|
),
|
||||||
|
migrations.AlterModelOptions(
|
||||||
|
name="snapshot",
|
||||||
|
options={
|
||||||
|
"ordering": ["-date", "account"],
|
||||||
|
"verbose_name": "Statement",
|
||||||
|
"verbose_name_plural": "Statements",
|
||||||
|
},
|
||||||
|
),
|
||||||
|
migrations.AlterModelOptions(
|
||||||
|
name="transaction",
|
||||||
|
options={
|
||||||
|
"ordering": ["-date", "snapshot"],
|
||||||
|
"verbose_name": "Transaction",
|
||||||
|
"verbose_name_plural": "Transactions",
|
||||||
|
},
|
||||||
|
),
|
||||||
|
migrations.RemoveField(
|
||||||
|
model_name="account",
|
||||||
|
name="icon",
|
||||||
|
),
|
||||||
|
migrations.RemoveField(
|
||||||
|
model_name="category",
|
||||||
|
name="icon",
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name="account",
|
||||||
|
name="uicon",
|
||||||
|
field=models.SlugField(
|
||||||
|
allow_unicode=True, default="🏦", max_length=1, verbose_name="Icon"
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name="category",
|
||||||
|
name="uicon",
|
||||||
|
field=models.SlugField(
|
||||||
|
allow_unicode=True, default="📂", max_length=1, verbose_name="Icon"
|
||||||
|
),
|
||||||
|
),
|
||||||
|
]
|
|
@ -0,0 +1,22 @@
|
||||||
|
# Generated by Django 4.1.4 on 2023-04-19 08:06
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
dependencies = [
|
||||||
|
("main", "0025_alter_account_options_alter_invoice_options_and_more"),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="account",
|
||||||
|
name="uicon",
|
||||||
|
field=models.CharField(default="🏦", max_length=1, verbose_name="Icon"),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="category",
|
||||||
|
name="uicon",
|
||||||
|
field=models.CharField(default="📂", max_length=1, verbose_name="Icon"),
|
||||||
|
),
|
||||||
|
]
|
|
@ -0,0 +1,32 @@
|
||||||
|
# Generated by Django 4.1.4 on 2023-04-19 13:10
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
dependencies = [
|
||||||
|
("main", "0026_alter_account_uicon_alter_category_uicon"),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.RemoveField(
|
||||||
|
model_name="account",
|
||||||
|
name="uicon",
|
||||||
|
),
|
||||||
|
migrations.RemoveField(
|
||||||
|
model_name="category",
|
||||||
|
name="uicon",
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name="account",
|
||||||
|
name="icon",
|
||||||
|
field=models.SlugField(default="bank", max_length=16, verbose_name="Icon"),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name="category",
|
||||||
|
name="icon",
|
||||||
|
field=models.SlugField(
|
||||||
|
default="folder", max_length=16, verbose_name="Icon"
|
||||||
|
),
|
||||||
|
),
|
||||||
|
]
|
|
@ -0,0 +1,24 @@
|
||||||
|
# Generated by Django 4.1.4 on 2023-04-19 13:43
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
dependencies = [
|
||||||
|
("main", "0027_remove_account_uicon_remove_category_uicon_and_more"),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="account",
|
||||||
|
name="icon",
|
||||||
|
field=models.SlugField(default="bank", max_length=24, verbose_name="Icon"),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="category",
|
||||||
|
name="icon",
|
||||||
|
field=models.SlugField(
|
||||||
|
default="folder", max_length=24, verbose_name="Icon"
|
||||||
|
),
|
||||||
|
),
|
||||||
|
]
|
|
@ -3,9 +3,10 @@ import pathlib
|
||||||
import uuid
|
import uuid
|
||||||
|
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.core.validators import FileExtensionValidator
|
from django.core.validators import FileExtensionValidator, validate_slug
|
||||||
from django.db import models, transaction
|
from django.db import models, transaction
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
|
from django.utils.text import format_lazy
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
from .utils import get_path
|
from .utils import get_path
|
||||||
|
|
|
@ -9,7 +9,7 @@ from django.contrib.postgres.search import (
|
||||||
)
|
)
|
||||||
from django.core.exceptions import PermissionDenied
|
from django.core.exceptions import PermissionDenied
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.http import HttpResponse
|
from django.http import HttpResponse, HttpResponseRedirect
|
||||||
from django.shortcuts import get_object_or_404, redirect
|
from django.shortcuts import get_object_or_404, redirect
|
||||||
from django.urls import reverse_lazy
|
from django.urls import reverse_lazy
|
||||||
from django.views import View
|
from django.views import View
|
||||||
|
|
|
@ -102,7 +102,20 @@ DATABASES = CONFIG.get(
|
||||||
# Password validation
|
# Password validation
|
||||||
# https://docs.djangoproject.com/en/4.0/ref/settings/#auth-password-validators
|
# https://docs.djangoproject.com/en/4.0/ref/settings/#auth-password-validators
|
||||||
|
|
||||||
AUTH_PASSWORD_VALIDATORS = []
|
AUTH_PASSWORD_VALIDATORS = [
|
||||||
|
{
|
||||||
|
"NAME": "django.contrib.auth.password_validation.UserAttributeSimilarityValidator",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"NAME": "django.contrib.auth.password_validation.MinimumLengthValidator",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"NAME": "django.contrib.auth.password_validation.CommonPasswordValidator",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"NAME": "django.contrib.auth.password_validation.NumericPasswordValidator",
|
||||||
|
},
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
# Internationalization
|
# Internationalization
|
||||||
|
|
Loading…
Reference in a new issue