mirror of
				https://gitlab.crans.org/bde/nk20
				synced 2025-10-31 15:50:03 +01:00 
			
		
		
		
	Merge branch 'master' into cas
This commit is contained in:
		
							
								
								
									
										48
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										48
									
								
								README.md
									
									
									
									
									
								
							| @@ -40,7 +40,7 @@ On supposera pour la suite que vous utiliser debian/ubuntu sur un serveur tout n | ||||
|  | ||||
|         $ cp nginx_note.conf_example nginx_note.conf | ||||
|  | ||||
| *** Modifier le fichier pour etre en accord avec le reste de votre config *** | ||||
| ***Modifier le fichier pour être en accord avec le reste de votre config*** | ||||
|  | ||||
|     On utilise uwsgi et Nginx pour gérer le coté serveu : | ||||
|  | ||||
| @@ -107,10 +107,9 @@ On supposera pour la suite que vous utiliser debian/ubuntu sur un serveur tout n | ||||
|  | ||||
| 6. Variable d'environnement et Migrations | ||||
|          | ||||
|       | ||||
|  | ||||
| Ensuite on (re)bascule dans l'environement virtuel et on lance les migrations | ||||
|          | ||||
|  | ||||
|         $ source /env/bin/activate | ||||
|         (env)$ ./manage.py check # pas de bétise qui traine | ||||
|         (env)$ ./manage.py makemigrations | ||||
| @@ -127,7 +126,8 @@ Il est possible de travailler sur une instance Docker. | ||||
|      | ||||
|         $ git clone git@gitlab.crans.org:bde/nk20.git | ||||
|  | ||||
| 2. Dans le fichier `docker_compose.yml`, qu'on suppose déjà configuré, ajouter les lignes suivantes, en les adaptant à la configuration voulue : | ||||
| 2. Dans le fichier `docker_compose.yml`, qu'on suppose déjà configuré, | ||||
|    ajouter les lignes suivantes, en les adaptant à la configuration voulue : | ||||
|  | ||||
|         nk20: | ||||
|           build: /chemin/vers/nk20 | ||||
| @@ -143,38 +143,39 @@ Il est possible de travailler sur une instance Docker. | ||||
|  | ||||
|         $ docker-compose up -d nk20 | ||||
|  | ||||
| ## Installer en local | ||||
| ## Installer un serveur de développement | ||||
|  | ||||
| Il est tout-à-fait possible de travailler en local, vive `./manage.py runserver` ! | ||||
| Avec `./manage.py runserver` il est très rapide de mettre en place | ||||
| un serveur de développement par exemple sur son ordinateur. | ||||
|  | ||||
| 1. Cloner le dépôt là où vous voulez : | ||||
|  | ||||
|         $ git clone git@gitlab.crans.org:bde/nk20.git | ||||
|         $ git clone git@gitlab.crans.org:bde/nk20.git && cd nk20 | ||||
|  | ||||
| 2. Initialiser l'environnement Virtuel | ||||
|          | ||||
|         $ cd nk20 | ||||
|         $ virtualenv env | ||||
|         $ source /env/bin/activate | ||||
| 2. Créer un environnement Python isolé | ||||
|    pour ne pas interférer avec les versions de paquets systèmes : | ||||
|  | ||||
|         $ python3 -m venv venv | ||||
|         $ source venv/bin/activate | ||||
|         (env)$ pip install -r requirements.txt | ||||
|  | ||||
| 3. Migrations: | ||||
| 3. Migrations et chargement des données initiales : | ||||
|  | ||||
|         (env)$ ./manage.py makemigrations | ||||
|         (env)$ ./manage.py migrate | ||||
|         (env)$ ./manage.py loaddata initial | ||||
|  | ||||
| 4. Enjoy: | ||||
|  | ||||
|         (env)$ ./manage.py runserver | ||||
|  | ||||
| ## Minimal Setup | ||||
|  | ||||
| 1. Créer un superuser : | ||||
| 4. Créer un super-utilisateur : | ||||
|  | ||||
|         (env)$ ./manage.py createsuperuser | ||||
|  | ||||
| Avec ce dernier vous pouvez vous connecter à l'interface admin de Django, avoir | ||||
| accès à la doc auto-générée du projet, jouer avec des models, etc ... | ||||
| 5. Enjoy : | ||||
|  | ||||
|         (env)$ ./manage.py runserver 0.0.0.0:8000 | ||||
|  | ||||
| En mettant `0.0.0.0:8000` après `runserver`, vous rendez votre instance Django | ||||
| accessible depuis l'ensemble de votre réseau, pratique pour tester le rendu | ||||
| de la note sur un téléphone ! | ||||
|  | ||||
| ## Cahier des Charges  | ||||
|  | ||||
| @@ -182,4 +183,5 @@ Il est disponible [ici](https://wiki.crans.org/NoteKfet/NoteKfet2018/CdC). | ||||
|  | ||||
| ## Documentation | ||||
|  | ||||
| La documentation est générée par django et son module admindocs. **Commenter votre code !* | ||||
| La documentation est générée par django et son module admindocs. | ||||
| **Commenter votre code !** | ||||
|   | ||||
							
								
								
									
										26
									
								
								apps/member/fixtures/initial.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								apps/member/fixtures/initial.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,26 @@ | ||||
| [ | ||||
|     { | ||||
|         "model": "member.club", | ||||
|         "pk": 1, | ||||
|         "fields": { | ||||
|             "name": "BDE", | ||||
|             "email": "tresorerie.bde@example.com", | ||||
|             "membership_fee": 5, | ||||
|             "membership_duration": "396 00:00:00", | ||||
|             "membership_start": "213 00:00:00", | ||||
|             "membership_end": "273 00:00:00" | ||||
|         } | ||||
|     }, | ||||
|     { | ||||
|         "model": "member.club", | ||||
|         "pk": 2, | ||||
|         "fields": { | ||||
|             "name": "Kfet", | ||||
|             "email": "tresorerie.bde@example.com", | ||||
|             "membership_fee": 35, | ||||
|             "membership_duration": "396 00:00:00", | ||||
|             "membership_start": "213 00:00:00", | ||||
|             "membership_end": "273 00:00:00" | ||||
|         } | ||||
|     } | ||||
| ] | ||||
							
								
								
									
										220
									
								
								apps/note/fixtures/initial.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										220
									
								
								apps/note/fixtures/initial.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,220 @@ | ||||
| [ | ||||
|     { | ||||
|         "model": "note.note", | ||||
|         "pk": 1, | ||||
|         "fields": { | ||||
|             "polymorphic_ctype": 22, | ||||
|             "balance": 0, | ||||
|             "is_active": true, | ||||
|             "display_image": "", | ||||
|             "created_at": "2020-02-20T20:02:48.778Z" | ||||
|         } | ||||
|     }, | ||||
|     { | ||||
|         "model": "note.note", | ||||
|         "pk": 2, | ||||
|         "fields": { | ||||
|             "polymorphic_ctype": 22, | ||||
|             "balance": 0, | ||||
|             "is_active": true, | ||||
|             "display_image": "", | ||||
|             "created_at": "2020-02-20T20:06:39.546Z" | ||||
|         } | ||||
|     }, | ||||
|     { | ||||
|         "model": "note.note", | ||||
|         "pk": 3, | ||||
|         "fields": { | ||||
|             "polymorphic_ctype": 22, | ||||
|             "balance": 0, | ||||
|             "is_active": true, | ||||
|             "display_image": "", | ||||
|             "created_at": "2020-02-20T20:06:43.049Z" | ||||
|         } | ||||
|     }, | ||||
|     { | ||||
|         "model": "note.note", | ||||
|         "pk": 4, | ||||
|         "fields": { | ||||
|             "polymorphic_ctype": 22, | ||||
|             "balance": 0, | ||||
|             "is_active": true, | ||||
|             "display_image": "", | ||||
|             "created_at": "2020-02-20T20:06:50.996Z" | ||||
|         } | ||||
|     }, | ||||
|     { | ||||
|         "model": "note.note", | ||||
|         "pk": 5, | ||||
|         "fields": { | ||||
|             "polymorphic_ctype": 21, | ||||
|             "balance": 0, | ||||
|             "is_active": true, | ||||
|             "display_image": "", | ||||
|             "created_at": "2020-02-20T20:09:38.615Z" | ||||
|         } | ||||
|     }, | ||||
|     { | ||||
|         "model": "note.note", | ||||
|         "pk": 6, | ||||
|         "fields": { | ||||
|             "polymorphic_ctype": 21, | ||||
|             "balance": 0, | ||||
|             "is_active": true, | ||||
|             "display_image": "", | ||||
|             "created_at": "2020-02-20T20:16:14.753Z" | ||||
|         } | ||||
|     }, | ||||
|     { | ||||
|         "model": "note.notespecial", | ||||
|         "pk": 1, | ||||
|         "fields": { | ||||
|             "special_type": "Esp\u00e8ces" | ||||
|         } | ||||
|     }, | ||||
|     { | ||||
|         "model": "note.notespecial", | ||||
|         "pk": 2, | ||||
|         "fields": { | ||||
|             "special_type": "Carte bancaire" | ||||
|         } | ||||
|     }, | ||||
|     { | ||||
|         "model": "note.notespecial", | ||||
|         "pk": 3, | ||||
|         "fields": { | ||||
|             "special_type": "Ch\u00e8que" | ||||
|         } | ||||
|     }, | ||||
|     { | ||||
|         "model": "note.notespecial", | ||||
|         "pk": 4, | ||||
|         "fields": { | ||||
|             "special_type": "Virement bancaire" | ||||
|         } | ||||
|     }, | ||||
|     { | ||||
|         "model": "note.noteclub", | ||||
|         "pk": 5, | ||||
|         "fields": { | ||||
|             "club": 1 | ||||
|         } | ||||
|     }, | ||||
|     { | ||||
|         "model": "note.noteclub", | ||||
|         "pk": 6, | ||||
|         "fields": { | ||||
|             "club": 2 | ||||
|         } | ||||
|     }, | ||||
|     { | ||||
|         "model": "note.alias", | ||||
|         "pk": 1, | ||||
|         "fields": { | ||||
|             "name": "Esp\u00e8ces", | ||||
|             "normalized_name": "especes", | ||||
|             "note": 1 | ||||
|         } | ||||
|     }, | ||||
|     { | ||||
|         "model": "note.alias", | ||||
|         "pk": 2, | ||||
|         "fields": { | ||||
|             "name": "Carte bancaire", | ||||
|             "normalized_name": "cartebancaire", | ||||
|             "note": 2 | ||||
|         } | ||||
|     }, | ||||
|     { | ||||
|         "model": "note.alias", | ||||
|         "pk": 3, | ||||
|         "fields": { | ||||
|             "name": "Ch\u00e8que", | ||||
|             "normalized_name": "cheque", | ||||
|             "note": 3 | ||||
|         } | ||||
|     }, | ||||
|     { | ||||
|         "model": "note.alias", | ||||
|         "pk": 4, | ||||
|         "fields": { | ||||
|             "name": "Virement bancaire", | ||||
|             "normalized_name": "virementbancaire", | ||||
|             "note": 4 | ||||
|         } | ||||
|     }, | ||||
|     { | ||||
|         "model": "note.alias", | ||||
|         "pk": 5, | ||||
|         "fields": { | ||||
|             "name": "BDE", | ||||
|             "normalized_name": "bde", | ||||
|             "note": 5 | ||||
|         } | ||||
|     }, | ||||
|     { | ||||
|         "model": "note.alias", | ||||
|         "pk": 6, | ||||
|         "fields": { | ||||
|             "name": "Kfet", | ||||
|             "normalized_name": "kfet", | ||||
|             "note": 6 | ||||
|         } | ||||
|     }, | ||||
|     { | ||||
|         "model": "note.transactioncategory", | ||||
|         "pk": 1, | ||||
|         "fields": { | ||||
|             "name": "Soft" | ||||
|         } | ||||
|     }, | ||||
|     { | ||||
|         "model": "note.transactioncategory", | ||||
|         "pk": 2, | ||||
|         "fields": { | ||||
|             "name": "Pulls" | ||||
|         } | ||||
|     }, | ||||
|     { | ||||
|         "model": "note.transactioncategory", | ||||
|         "pk": 3, | ||||
|         "fields": { | ||||
|             "name": "Gala" | ||||
|         } | ||||
|     }, | ||||
|     { | ||||
|         "model": "note.transactioncategory", | ||||
|         "pk": 4, | ||||
|         "fields": { | ||||
|             "name": "Clubs" | ||||
|         } | ||||
|     }, | ||||
|     { | ||||
|         "model": "note.transactioncategory", | ||||
|         "pk": 5, | ||||
|         "fields": { | ||||
|             "name": "Bouffe" | ||||
|         } | ||||
|     }, | ||||
|     { | ||||
|         "model": "note.transactioncategory", | ||||
|         "pk": 6, | ||||
|         "fields": { | ||||
|             "name": "BDA" | ||||
|         } | ||||
|     }, | ||||
|     { | ||||
|         "model": "note.transactioncategory", | ||||
|         "pk": 7, | ||||
|         "fields": { | ||||
|             "name": "Autre" | ||||
|         } | ||||
|     }, | ||||
|     { | ||||
|         "model": "note.transactioncategory", | ||||
|         "pk": 8, | ||||
|         "fields": { | ||||
|             "name": "Alcool" | ||||
|         } | ||||
|     } | ||||
| ] | ||||
| @@ -2,20 +2,28 @@ | ||||
| # SPDX-License-Identifier: GPL-3.0-or-later | ||||
|  | ||||
|  | ||||
| def save_user_note(instance, created, **_kwargs): | ||||
| def save_user_note(instance, created, raw, **_kwargs): | ||||
|     """ | ||||
|     Hook to create and save a note when an user is updated | ||||
|     """ | ||||
|     if raw: | ||||
|         # When provisionning data, do not try to autocreate | ||||
|         return | ||||
|  | ||||
|     if created: | ||||
|         from .models import NoteUser | ||||
|         NoteUser.objects.create(user=instance) | ||||
|     instance.note.save() | ||||
|  | ||||
|  | ||||
| def save_club_note(instance, created, **_kwargs): | ||||
| def save_club_note(instance, created, raw, **_kwargs): | ||||
|     """ | ||||
|     Hook to create and save a note when a club is updated | ||||
|     """ | ||||
|     if raw: | ||||
|         # When provisionning data, do not try to autocreate | ||||
|         return | ||||
|  | ||||
|     if created: | ||||
|         from .models import NoteClub | ||||
|         NoteClub.objects.create(club=instance) | ||||
|   | ||||
							
								
								
									
										10
									
								
								note_kfet/fixtures/initial.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								note_kfet/fixtures/initial.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,10 @@ | ||||
| [ | ||||
|     { | ||||
|         "model": "sites.site", | ||||
|         "pk": 1, | ||||
|         "fields": { | ||||
|             "domain": "localhost", | ||||
|             "name": "La Note Kfet \ud83c\udf7b" | ||||
|         } | ||||
|     } | ||||
| ] | ||||
| @@ -166,6 +166,8 @@ USE_TZ = True | ||||
|  | ||||
| LOCALE_PATHS = [os.path.join(BASE_DIR, "locale")] | ||||
|  | ||||
| FIXTURE_DIRS = [os.path.join(BASE_DIR, "note_kfet/fixtures")] | ||||
|  | ||||
| # Static files (CSS, JavaScript, Images) | ||||
| # https://docs.djangoproject.com/en/2.2/howto/static-files/ | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user