mirror of
https://gitlab.crans.org/bde/nk20
synced 2025-11-17 20:07:52 +01:00
Compare commits
6 Commits
translatio
...
567651c43c
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
567651c43c | ||
|
|
af36d1427a | ||
|
|
75a59e0a7a | ||
|
|
af39bf7068 | ||
|
|
dde1baa25c | ||
|
|
7a7ee47e0b |
1
.gitignore
vendored
1
.gitignore
vendored
@@ -48,7 +48,6 @@ backups/
|
|||||||
env/
|
env/
|
||||||
venv/
|
venv/
|
||||||
db.sqlite3
|
db.sqlite3
|
||||||
shell.nix
|
|
||||||
|
|
||||||
# ansibles customs host
|
# ansibles customs host
|
||||||
ansible/host_vars/*.yaml
|
ansible/host_vars/*.yaml
|
||||||
|
|||||||
@@ -338,13 +338,13 @@ class SogeCredit(models.Model):
|
|||||||
last_name=self.user.last_name,
|
last_name=self.user.last_name,
|
||||||
first_name=self.user.first_name,
|
first_name=self.user.first_name,
|
||||||
bank="Société générale",
|
bank="Société générale",
|
||||||
valid=False,
|
valid=True,
|
||||||
)
|
)
|
||||||
credit_transaction._force_save = True
|
credit_transaction._force_save = True
|
||||||
credit_transaction.save()
|
credit_transaction.save()
|
||||||
credit_transaction.refresh_from_db()
|
credit_transaction.refresh_from_db()
|
||||||
self.credit_transaction = credit_transaction
|
self.credit_transaction = credit_transaction
|
||||||
elif not self.valid_legacy:
|
elif not self.valid:
|
||||||
self.credit_transaction.amount = self.amount
|
self.credit_transaction.amount = self.amount
|
||||||
self.credit_transaction._force_save = True
|
self.credit_transaction._force_save = True
|
||||||
self.credit_transaction.save()
|
self.credit_transaction.save()
|
||||||
@@ -371,7 +371,7 @@ class SogeCredit(models.Model):
|
|||||||
The Sogé credit may be created after the user already paid its memberships.
|
The Sogé credit may be created after the user already paid its memberships.
|
||||||
We query transactions and update the credit, if it is unvalid.
|
We query transactions and update the credit, if it is unvalid.
|
||||||
"""
|
"""
|
||||||
if self.valid_legacy or not self.pk:
|
if self.valid or not self.pk:
|
||||||
return
|
return
|
||||||
|
|
||||||
# Soge do not pay BDE and kfet memberships since 2022
|
# Soge do not pay BDE and kfet memberships since 2022
|
||||||
@@ -403,7 +403,7 @@ class SogeCredit(models.Model):
|
|||||||
self.transactions.add(m.transaction)
|
self.transactions.add(m.transaction)
|
||||||
|
|
||||||
for tr in self.transactions.all():
|
for tr in self.transactions.all():
|
||||||
tr.valid = False
|
tr.valid = True
|
||||||
tr.save()
|
tr.save()
|
||||||
|
|
||||||
def invalidate(self):
|
def invalidate(self):
|
||||||
@@ -411,7 +411,7 @@ class SogeCredit(models.Model):
|
|||||||
Invalidating a Société générale delete the transaction of the bank if it was already created.
|
Invalidating a Société générale delete the transaction of the bank if it was already created.
|
||||||
Treasurers must know what they do, With Great Power Comes Great Responsibility...
|
Treasurers must know what they do, With Great Power Comes Great Responsibility...
|
||||||
"""
|
"""
|
||||||
if self.valid_legacy:
|
if self.valid:
|
||||||
self.credit_transaction.valid = False
|
self.credit_transaction.valid = False
|
||||||
self.credit_transaction.save()
|
self.credit_transaction.save()
|
||||||
for tr in self.transactions.all():
|
for tr in self.transactions.all():
|
||||||
@@ -420,7 +420,7 @@ class SogeCredit(models.Model):
|
|||||||
tr.save()
|
tr.save()
|
||||||
|
|
||||||
def validate(self, force=False):
|
def validate(self, force=False):
|
||||||
if self.valid_legacy and not force:
|
if self.valid and not force:
|
||||||
# The credit is already done
|
# The credit is already done
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -428,6 +428,7 @@ class SogeCredit(models.Model):
|
|||||||
self.invalidate()
|
self.invalidate()
|
||||||
# Refresh credit amount
|
# Refresh credit amount
|
||||||
self.save()
|
self.save()
|
||||||
|
self.valid = True
|
||||||
self.credit_transaction.valid = True
|
self.credit_transaction.valid = True
|
||||||
self.credit_transaction._force_save = True
|
self.credit_transaction._force_save = True
|
||||||
self.credit_transaction.save()
|
self.credit_transaction.save()
|
||||||
|
|||||||
@@ -56,6 +56,7 @@ class InvoiceTable(tables.Table):
|
|||||||
model = Invoice
|
model = Invoice
|
||||||
template_name = 'django_tables2/bootstrap4.html'
|
template_name = 'django_tables2/bootstrap4.html'
|
||||||
fields = ('id', 'name', 'object', 'acquitted', 'invoice',)
|
fields = ('id', 'name', 'object', 'acquitted', 'invoice',)
|
||||||
|
order_by = ('-id',)
|
||||||
|
|
||||||
|
|
||||||
class RemittanceTable(tables.Table):
|
class RemittanceTable(tables.Table):
|
||||||
|
|||||||
@@ -359,7 +359,7 @@ class TestSogeCredits(TestCase):
|
|||||||
))
|
))
|
||||||
self.assertRedirects(response, reverse("treasury:manage_soge_credit", args=(soge_credit.pk,)), 302, 200)
|
self.assertRedirects(response, reverse("treasury:manage_soge_credit", args=(soge_credit.pk,)), 302, 200)
|
||||||
soge_credit.refresh_from_db()
|
soge_credit.refresh_from_db()
|
||||||
self.assertTrue(soge_credit.valid_legacy)
|
self.assertTrue(soge_credit.valid)
|
||||||
self.user.note.refresh_from_db()
|
self.user.note.refresh_from_db()
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
Transaction.objects.filter(Q(source=self.user.note) | Q(destination=self.user.note)).count(), 3)
|
Transaction.objects.filter(Q(source=self.user.note) | Q(destination=self.user.note)).count(), 3)
|
||||||
|
|||||||
@@ -417,7 +417,7 @@ class SogeCreditListView(LoginRequiredMixin, ProtectQuerysetMixin, SingleTableVi
|
|||||||
)
|
)
|
||||||
|
|
||||||
if "valid" not in self.request.GET or not self.request.GET["valid"]:
|
if "valid" not in self.request.GET or not self.request.GET["valid"]:
|
||||||
qs = qs.filter(credit_transaction__valid=False)
|
qs = qs.filter(valid=False)
|
||||||
|
|
||||||
return qs
|
return qs
|
||||||
|
|
||||||
|
|||||||
@@ -680,7 +680,7 @@ class TestWEIRegistration(TestCase):
|
|||||||
self.assertTrue(soge_credit.exists())
|
self.assertTrue(soge_credit.exists())
|
||||||
soge_credit = soge_credit.get()
|
soge_credit = soge_credit.get()
|
||||||
self.assertTrue(membership.transaction in soge_credit.transactions.all())
|
self.assertTrue(membership.transaction in soge_credit.transactions.all())
|
||||||
self.assertFalse(membership.transaction.valid)
|
self.assertTrue(membership.transaction.valid)
|
||||||
|
|
||||||
# Check that if the WEI is started, we can't update a wei
|
# Check that if the WEI is started, we can't update a wei
|
||||||
self.wei.date_start = date(2000, 1, 1)
|
self.wei.date_start = date(2000, 1, 1)
|
||||||
|
|||||||
34
shell-static.nix
Executable file
34
shell-static.nix
Executable file
@@ -0,0 +1,34 @@
|
|||||||
|
# This is a workaround meant for use with the nix package manager. If you don't know what it is or don't use it, please ignore this file.
|
||||||
|
#
|
||||||
|
# The nk20 javascript static location are hardcoded for imperative system.
|
||||||
|
# This make ./manage.py collectstatic hard to use with nixos.
|
||||||
|
#
|
||||||
|
# A workaround is to enter a FHSUserEnv with the static placed under /share/javascript/<static>.
|
||||||
|
# This emulate a debian like system and enable collecting static normally with ./manage.py collectstatics.
|
||||||
|
# The regular shell.nix should be enough for other configurations.
|
||||||
|
#
|
||||||
|
# Warning, you are still supposed to use pip package with a venv !
|
||||||
|
{ pkgs ? import <nixpkgs> {} }:
|
||||||
|
(pkgs.buildFHSUserEnv {
|
||||||
|
name = "pipzone";
|
||||||
|
targetPkgs = pkgs: (with pkgs;
|
||||||
|
let
|
||||||
|
fhs-static = stdenv.mkDerivation {
|
||||||
|
name = "fhs-static";
|
||||||
|
buildCommand = ''
|
||||||
|
mkdir -p $out/share/javascript/bootstrap4
|
||||||
|
mkdir -p $out/share/javascript/jquery
|
||||||
|
ln -s ${python39Packages.xstatic-bootstrap}/lib/python3.9/site-packages/xstatic/pkg/bootstrap/data/* $out/share/javascript/bootstrap4
|
||||||
|
ln -s ${python39Packages.xstatic-jquery}/lib/python3.9/site-packages/xstatic/pkg/jquery/data/* $out/share/javascript/jquery
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
in [
|
||||||
|
fhs-static
|
||||||
|
python39
|
||||||
|
gettext
|
||||||
|
python39Packages.pip
|
||||||
|
python39Packages.virtualenv
|
||||||
|
python39Packages.setuptools
|
||||||
|
]);
|
||||||
|
runScript = "bash";
|
||||||
|
}).env
|
||||||
23
shell.nix
Executable file
23
shell.nix
Executable file
@@ -0,0 +1,23 @@
|
|||||||
|
# This is meant for use with the nix package manager. If you don't know what it is or don't use it, please ignore this file.
|
||||||
|
#
|
||||||
|
# This shell.nix contains all dependencies require to create a venv and pip install -r requirements.txt.
|
||||||
|
#
|
||||||
|
# Please check shell-static.nix for running ./manage.py collectstatics.
|
||||||
|
{ pkgs ? import <nixpkgs> {} }:
|
||||||
|
pkgs.mkShell {
|
||||||
|
buildInputs = with pkgs; [
|
||||||
|
python39
|
||||||
|
python39Packages.pip
|
||||||
|
python39Packages.setuptools
|
||||||
|
gettext
|
||||||
|
|
||||||
|
];
|
||||||
|
shellHook = ''
|
||||||
|
# Tells pip to put packages into $PIP_PREFIX instead of the usual locations.
|
||||||
|
# See https://pip.pypa.io/en/stable/user_guide/#environment-variables.
|
||||||
|
export PIP_PREFIX=$(pwd)/_build/pip_packages
|
||||||
|
export PYTHONPATH="$PIP_PREFIX/${pkgs.python39.sitePackages}:$PYTHONPATH"
|
||||||
|
export PATH="$PIP_PREFIX/bin:$PATH"
|
||||||
|
unset SOURCE_DATE_EPOCH
|
||||||
|
'';
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user