From 566b221536ee349d702d49721f4d14b3a19dd7a4 Mon Sep 17 00:00:00 2001 From: Pierre-antoine Comby Date: Mon, 8 Jul 2019 14:30:58 +0200 Subject: [PATCH 1/7] start note app --- note/__init__.py | 0 note/admin.py | 3 +++ note/apps.py | 5 +++++ note/migrations/__init__.py | 0 note/models.py | 3 +++ note/tests.py | 3 +++ note/views.py | 3 +++ note_kfet/settings.py | 1 + 8 files changed, 18 insertions(+) create mode 100644 note/__init__.py create mode 100644 note/admin.py create mode 100644 note/apps.py create mode 100644 note/migrations/__init__.py create mode 100644 note/models.py create mode 100644 note/tests.py create mode 100644 note/views.py diff --git a/note/__init__.py b/note/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/note/admin.py b/note/admin.py new file mode 100644 index 00000000..8c38f3f3 --- /dev/null +++ b/note/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/note/apps.py b/note/apps.py new file mode 100644 index 00000000..eab40c5e --- /dev/null +++ b/note/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class NoteConfig(AppConfig): + name = 'note' diff --git a/note/migrations/__init__.py b/note/migrations/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/note/models.py b/note/models.py new file mode 100644 index 00000000..71a83623 --- /dev/null +++ b/note/models.py @@ -0,0 +1,3 @@ +from django.db import models + +# Create your models here. diff --git a/note/tests.py b/note/tests.py new file mode 100644 index 00000000..7ce503c2 --- /dev/null +++ b/note/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/note/views.py b/note/views.py new file mode 100644 index 00000000..91ea44a2 --- /dev/null +++ b/note/views.py @@ -0,0 +1,3 @@ +from django.shortcuts import render + +# Create your views here. diff --git a/note_kfet/settings.py b/note_kfet/settings.py index b0fe2eb8..f3d13ccf 100644 --- a/note_kfet/settings.py +++ b/note_kfet/settings.py @@ -47,6 +47,7 @@ INSTALLED_APPS = [ # Note apps 'adherents', + 'note', ] MIDDLEWARE = [ From d0e1920a0d9f695864fd08fdbeebea16ca6ef16e Mon Sep 17 00:00:00 2001 From: Pierre-antoine Comby Date: Mon, 8 Jul 2019 15:24:19 +0200 Subject: [PATCH 2/7] Addings bases Models --- note/models.py | 88 +++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 87 insertions(+), 1 deletion(-) diff --git a/note/models.py b/note/models.py index 71a83623..f069100d 100644 --- a/note/models.py +++ b/note/models.py @@ -1,3 +1,89 @@ +# -*- mode: python; coding: utf-8 -*- +# Copyright (C) 2018-2019 by BDE ENS Paris-Saclay +# SPDX-License-Identifier: GPL-3.0-or-later + +from django.conf import settings +from django.contrib.auth.models import User from django.db import models -# Create your models here. +from django.contrib.contenttypes.models import ContentType +from django.contrib.contenttypes.fields import GenericForeignKey + + +class Alias(models.Model): + """ + A alias labels a Note instance, only for user and clubs + """ + alias = models.TextField( + "alias", + unique = True, + blank = False, + null = False, + ) + limit = models.Q(app_label="note", model="NoteUser") | models.Q(app_label="note",model="NoteClub") + + owner_id = models.PositiveIntegerField() + owner_type = models.ForeignKey(ContentType, + on_delete=models.CASCADE, + limit_choices_to=limit) + owner = GenericForeignKey('owner_type','owner_id') + +class Note(models.Model): + """ + An abstract model, use to add transactions capabilities to a user + """ + + solde = model.IntegerField( + verbose_name=_('solde du compte'), + help_text=_("en centime, l' argent crédité pour cette instance") + ) + active = model.BooleanField( + default = True, + verbose_name=_('etat du compte') + ) + + class Meta: + abstract = True + +class NoteUser(Note): + """ + A Note associated to a User + """ + user = models.OneToOneField( + settings.AUTH_USER_MODEL, + on_delete=models.CASCADE, + ) + class Meta: + verbose_name = _("One's Note") + verbose_name_plural = _("Users Note") + + def __str__(self): + return self.user.get_username() + + aliases = model.ForeignKey(Aliases) + + + +class NoteSpec(Note): + """ + A Note for special Account, where real money enter or leave the system. + - Cash + - Credit Card + - Bank Transfert + - Bank Check + - Refund + """ + account_type = model.CharField( + max_length = 2, + choices = (("CH","chèques"), + ("CB","Carte Bancaire"), + ("VB","Virement Bancaire"), + ("CA","Cash"), + ("RB","Remboursement") + ), + unique = True + ) + +class NoteClub(Note): + #to be added + pass From 80143251c1e327b53438381fd0021808304c5f9a Mon Sep 17 00:00:00 2001 From: Pierre-antoine Comby Date: Mon, 8 Jul 2019 15:26:32 +0200 Subject: [PATCH 3/7] modelS --- note/models.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/note/models.py b/note/models.py index f069100d..3e10d972 100644 --- a/note/models.py +++ b/note/models.py @@ -33,11 +33,11 @@ class Note(models.Model): An abstract model, use to add transactions capabilities to a user """ - solde = model.IntegerField( + solde = models.IntegerField( verbose_name=_('solde du compte'), help_text=_("en centime, l' argent crédité pour cette instance") ) - active = model.BooleanField( + active = models.BooleanField( default = True, verbose_name=_('etat du compte') ) @@ -60,7 +60,7 @@ class NoteUser(Note): def __str__(self): return self.user.get_username() - aliases = model.ForeignKey(Aliases) + aliases = models.ForeignKey(Aliases) @@ -73,7 +73,7 @@ class NoteSpec(Note): - Bank Check - Refund """ - account_type = model.CharField( + account_type = models.CharField( max_length = 2, choices = (("CH","chèques"), ("CB","Carte Bancaire"), From cef95b57da24305bdc3d07be1c89bed34e758b76 Mon Sep 17 00:00:00 2001 From: Pierre-antoine Comby Date: Mon, 8 Jul 2019 15:29:03 +0200 Subject: [PATCH 4/7] add lazy_text --- note/models.py | 1 + 1 file changed, 1 insertion(+) diff --git a/note/models.py b/note/models.py index 3e10d972..e071672c 100644 --- a/note/models.py +++ b/note/models.py @@ -6,6 +6,7 @@ from django.conf import settings from django.contrib.auth.models import User from django.db import models +from django.utils.translation import gettext_lazy as _ from django.contrib.contenttypes.models import ContentType from django.contrib.contenttypes.fields import GenericForeignKey From 7a0efe1aa7b9ef9abbef8296458977f94e54ad5c Mon Sep 17 00:00:00 2001 From: Pierre-antoine Comby Date: Mon, 8 Jul 2019 16:10:48 +0200 Subject: [PATCH 5/7] rm bad foreign key --- note/models.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/note/models.py b/note/models.py index e071672c..d5b2ebdd 100644 --- a/note/models.py +++ b/note/models.py @@ -61,9 +61,6 @@ class NoteUser(Note): def __str__(self): return self.user.get_username() - aliases = models.ForeignKey(Aliases) - - class NoteSpec(Note): """ From 9db72d4f346a1fc07c8e14ca2ee2e106de62e201 Mon Sep 17 00:00:00 2001 From: Pierre-antoine Comby Date: Mon, 8 Jul 2019 16:11:10 +0200 Subject: [PATCH 6/7] register models --- note/admin.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/note/admin.py b/note/admin.py index 8c38f3f3..d7ff9c07 100644 --- a/note/admin.py +++ b/note/admin.py @@ -1,3 +1,9 @@ from django.contrib import admin +from .models import NoteClub,NoteSpec,NoteUser +from .models import Alias # Register your models here. +admin.site.register(NoteClub) +admin.site.register(NoteSpec) +admin.site.register(NoteUser) +admin.site.register(Alias) From 898ed2c23ad01385763e72f5c0d3f7b96f893829 Mon Sep 17 00:00:00 2001 From: Pierre-antoine Comby Date: Mon, 8 Jul 2019 16:11:53 +0200 Subject: [PATCH 7/7] add initial migration --- note/migrations/0001_initial.py | 63 +++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 note/migrations/0001_initial.py diff --git a/note/migrations/0001_initial.py b/note/migrations/0001_initial.py new file mode 100644 index 00000000..5f777cac --- /dev/null +++ b/note/migrations/0001_initial.py @@ -0,0 +1,63 @@ +# Generated by Django 2.2.3 on 2019-07-08 14:08 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ('contenttypes', '0002_remove_content_type_name'), + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ] + + operations = [ + migrations.CreateModel( + name='NoteClub', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('solde', models.IntegerField(help_text="en centime, l' argent crédité pour cette instance", verbose_name='solde du compte')), + ('active', models.BooleanField(default=True, verbose_name='etat du compte')), + ], + options={ + 'abstract': False, + }, + ), + migrations.CreateModel( + name='NoteSpec', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('solde', models.IntegerField(help_text="en centime, l' argent crédité pour cette instance", verbose_name='solde du compte')), + ('active', models.BooleanField(default=True, verbose_name='etat du compte')), + ('account_type', models.CharField(choices=[('CH', 'chèques'), ('CB', 'Carte Bancaire'), ('VB', 'Virement Bancaire'), ('CA', 'Cash'), ('RB', 'Remboursement')], max_length=2, unique=True)), + ], + options={ + 'abstract': False, + }, + ), + migrations.CreateModel( + name='NoteUser', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('solde', models.IntegerField(help_text="en centime, l' argent crédité pour cette instance", verbose_name='solde du compte')), + ('active', models.BooleanField(default=True, verbose_name='etat du compte')), + ('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), + ], + options={ + 'verbose_name': "One's Note", + 'verbose_name_plural': 'Users Note', + }, + ), + migrations.CreateModel( + name='Alias', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('alias', models.TextField(unique=True, verbose_name='alias')), + ('owner_id', models.PositiveIntegerField()), + ('owner_type', models.ForeignKey(limit_choices_to=models.Q(models.Q(('app_label', 'note'), ('model', 'NoteUser')), models.Q(('app_label', 'note'), ('model', 'NoteClub')), _connector='OR'), on_delete=django.db.models.deletion.CASCADE, to='contenttypes.ContentType')), + ], + ), + ]