chore: regroup apps (WIP)

This commit is contained in:
Alexis Métaireau 2024-04-15 10:49:20 +02:00
parent 5e5a462e45
commit a1d44667f3
No known key found for this signature in database
GPG key ID: 1C21B876828E5FF2
71 changed files with 161 additions and 187 deletions

View file

@ -1,6 +0,0 @@
from django.apps import AppConfig
class AccountsConfig(AppConfig):
default_auto_field = "django.db.models.BigAutoField"
name = "la_chariotte.accounts"

View file

@ -1,37 +0,0 @@
from crispy_bulma.layout import Submit
from crispy_forms.helper import FormHelper
from crispy_forms.layout import Layout
from django import forms
from django.contrib.auth.forms import UserChangeForm, UserCreationForm
from .models import CustomUser
class CustomUserCreationForm(UserCreationForm):
class Meta:
model = CustomUser
fields = ("username", "first_name", "last_name", "password1", "password2")
widgets = {
"username": forms.TextInput(
attrs={
"placeholder": "exemple@mail.fr",
}
),
}
helper = FormHelper()
helper.form_class = "form-horizontal"
helper.layout = Layout(
"username",
"first_name",
"last_name",
"password1",
"password2",
Submit("submit", "Valider", css_class="is-primary"),
)
class CustomUserChangeForm(UserChangeForm): # pas encore utilisé - pour la V1
class Meta:
model = CustomUser
fields = ("email", "first_name", "last_name")

View file

@ -1,17 +0,0 @@
from django.contrib.auth.models import AbstractUser
from django.db import models
class CustomUser(AbstractUser):
EMAIL_FIELD = "username"
username = models.EmailField(
"Email",
unique=True,
error_messages={
"unique": "Un·e utilisateur·ice avec cette adresse mail existe déjà.",
},
)
def __str__(self):
return self.get_full_name()

View file

@ -1,10 +0,0 @@
from django.urls import include, path
from django.views.generic import TemplateView
from . import views
app_name = "accounts"
urlpatterns = [
path("inscription/", views.SignUpView.as_view(), name="signup"),
path("", include("django.contrib.auth.urls")),
]

View file

@ -2,7 +2,7 @@ from django.contrib import admin
from django.contrib.auth.admin import UserAdmin from django.contrib.auth.admin import UserAdmin
from .forms import CustomUserChangeForm, CustomUserCreationForm from .forms import CustomUserChangeForm, CustomUserCreationForm
from .models import CustomUser from .models import CustomUser, GroupedOrder, Item, Order, OrderAuthor, OrderedItem
class CustomUserAdmin(UserAdmin): class CustomUserAdmin(UserAdmin):
@ -13,3 +13,10 @@ class CustomUserAdmin(UserAdmin):
admin.site.register(CustomUser, CustomUserAdmin) admin.site.register(CustomUser, CustomUserAdmin)
admin.site.register(GroupedOrder)
admin.site.register(Order)
admin.site.register(Item)
admin.site.register(OrderedItem)
admin.site.register(OrderAuthor)

16
la_chariotte/apps.py Normal file
View file

@ -0,0 +1,16 @@
from django.apps import AppConfig
class AccountsConfig(AppConfig):
default_auto_field = "django.db.models.BigAutoField"
name = "la_chariotte.accounts"
class MailConfig(AppConfig):
default_auto_field = "django.db.models.BigAutoField"
name = "la_chariotte.mail"
class OrderConfig(AppConfig):
default_auto_field = "django.db.models.BigAutoField"
name = "la_chariotte.order"

View file

@ -1,12 +1,48 @@
import datetime import datetime
from crispy_bulma.layout import Submit
from crispy_forms.helper import FormHelper
from crispy_forms.layout import Layout
from django import forms from django import forms
from django.contrib.auth import get_user_model from django.contrib.auth import get_user_model
from django.contrib.auth.forms import UserChangeForm, UserCreationForm
from django.forms.utils import to_current_timezone from django.forms.utils import to_current_timezone
from django.utils import timezone from django.utils import timezone
from la_chariotte.order.models import GroupedOrder, Item from la_chariotte.order.models import GroupedOrder, Item
from .models import CustomUser
class CustomUserCreationForm(UserCreationForm):
class Meta:
model = CustomUser
fields = ("username", "first_name", "last_name", "password1", "password2")
widgets = {
"username": forms.TextInput(
attrs={
"placeholder": "exemple@mail.fr",
}
),
}
helper = FormHelper()
helper.form_class = "form-horizontal"
helper.layout = Layout(
"username",
"first_name",
"last_name",
"password1",
"password2",
Submit("submit", "Valider", css_class="is-primary"),
)
class CustomUserChangeForm(UserChangeForm): # pas encore utilisé - pour la V1
class Meta:
model = CustomUser
fields = ("email", "first_name", "last_name")
class GroupedOrderForm(forms.ModelForm): class GroupedOrderForm(forms.ModelForm):
deadline_date = forms.DateField( deadline_date = forms.DateField(

View file

@ -1,6 +0,0 @@
from django.apps import AppConfig
class MailConfig(AppConfig):
default_auto_field = "django.db.models.BigAutoField"
name = "la_chariotte.mail"

View file

@ -1,6 +1,7 @@
import random import random
import base36 import base36
from django.contrib.auth.models import AbstractUser
from django.core.exceptions import ValidationError from django.core.exceptions import ValidationError
from django.db import models from django.db import models
from django.urls import reverse from django.urls import reverse
@ -9,6 +10,21 @@ from django.utils import timezone
from la_chariotte.settings import AUTH_USER_MODEL from la_chariotte.settings import AUTH_USER_MODEL
class CustomUser(AbstractUser):
EMAIL_FIELD = "username"
username = models.EmailField(
"Email",
unique=True,
error_messages={
"unique": "Un·e utilisateur·ice avec cette adresse mail existe déjà.",
},
)
def __str__(self):
return self.get_full_name()
class GroupedOrder(models.Model): class GroupedOrder(models.Model):
name = models.CharField( name = models.CharField(
max_length=100, null=True, verbose_name="Titre de la commande" max_length=100, null=True, verbose_name="Titre de la commande"

View file

@ -1,9 +0,0 @@
from django.contrib import admin
from .models import GroupedOrder, Item, Order, OrderAuthor, OrderedItem
admin.site.register(GroupedOrder)
admin.site.register(Order)
admin.site.register(Item)
admin.site.register(OrderedItem)
admin.site.register(OrderAuthor)

View file

@ -1,6 +0,0 @@
from django.apps import AppConfig
class OrderConfig(AppConfig):
default_auto_field = "django.db.models.BigAutoField"
name = "la_chariotte.order"

View file

@ -1,80 +0,0 @@
from django.urls import path
from . import views
app_name = "order"
urlpatterns = [
path("", views.IndexView.as_view(), name="index"),
path(
"<str:code>/",
views.GroupedOrderDetailView.as_view(),
name="grouped_order_detail",
),
path(
"<str:code>/ics/",
views.GroupedOrderEventView.as_view(),
name="grouped_order_event",
),
path(
"<str:code>/gerer",
views.GroupedOrderOverview.as_view(),
name="grouped_order_overview",
),
path("<str:code>/commander/", views.place_order, name="order"),
path(
"<str:code>/<int:pk>/confirmation/",
views.OrderDetailView.as_view(),
name="order_confirm",
),
path(
"<str:code>/gerer/<int:pk>/supprimer",
views.OrderDeleteView.as_view(),
name="order_delete",
),
path("creer", views.GroupedOrderCreateView.as_view(), name="create_grouped_order"),
path(
"<str:code>/gerer-produits",
views.GroupedOrderAddItemsView.as_view(),
name="manage_items",
),
path(
"<str:code>/modifier",
views.GroupedOrderUpdateView.as_view(),
name="update_grouped_order",
),
path(
"<str:code>/supprimer",
views.GroupedOrderDeleteView.as_view(),
name="delete_grouped_order",
),
path(
"<str:code>/dupliquer",
views.GroupedOrderDuplicateView.as_view(),
name="duplicate_grouped_order",
),
path(
"<str:code>/gerer-produits/nouveau",
views.ItemCreateView.as_view(),
name="item_create",
),
path(
"<str:code>/gerer-produits/<int:pk>/supprimer",
views.ItemDeleteView.as_view(),
name="item_delete",
),
path(
"<str:code>/gerer/imprimer",
views.DownloadGroupedOrderSheetView.as_view(),
name="grouped_order_sheet",
),
path(
"<str:code>/gerer/liste-mails",
views.ExportGroupOrderEmailAdressesToDownloadView.as_view(),
name="email_list",
),
path(
"<str:code>/gerer/csv",
views.ExportGroupedOrderToCSVView.as_view(),
name="grouped_order_csv_export",
),
]

View file

@ -1,17 +1,4 @@
"""la_chariotte URL Configuration """la_chariotte URL Configuration
The `urlpatterns` list routes URLs to views. For more information please see:
https://docs.djangoproject.com/en/4.1/topics/http/urls/
Examples:
Function views
1. Add an import: from my_app import views
2. Add a URL to urlpatterns: path('', views.home, name='home')
Class-based views
1. Add an import: from other_app.views import Home
2. Add a URL to urlpatterns: path('', Home.as_view(), name='home')
Including another URLconf
1. Import the include() function: from django.urls import include, path
2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
""" """
from django.contrib import admin from django.contrib import admin
@ -25,11 +12,94 @@ from django.views.generic.base import TemplateView
from la_chariotte import settings from la_chariotte import settings
from la_chariotte.order.views import JoinGroupedOrderView from la_chariotte.order.views import JoinGroupedOrderView
from la_chariotte.views import accounts, orders
urlpatterns = [ urlpatterns = [
path("admin/", admin.site.urls), path("admin/", admin.site.urls),
path("commande/", include("la_chariotte.order.urls")), path(
path("comptes/", include("la_chariotte.accounts.urls")), "commande/",
[
path("", orders.IndexView.as_view(), name="index"),
path(
"<str:code>/",
orders.GroupedOrderDetailView.as_view(),
name="grouped_order_detail",
),
path(
"<str:code>/ics/",
orders.GroupedOrderEventView.as_view(),
name="grouped_order_event",
),
path(
"<str:code>/gerer",
orders.GroupedOrderOverview.as_view(),
name="grouped_order_overview",
),
path("<str:code>/commander/", orders.place_order, name="order"),
path(
"<str:code>/<int:pk>/confirmation/",
orders.OrderDetailView.as_view(),
name="order_confirm",
),
path(
"<str:code>/gerer/<int:pk>/supprimer",
orders.OrderDeleteView.as_view(),
name="order_delete",
),
path(
"creer",
orders.GroupedOrderCreateView.as_view(),
name="create_grouped_order",
),
path(
"<str:code>/gerer-produits",
orders.GroupedOrderAddItemsView.as_view(),
name="manage_items",
),
path(
"<str:code>/modifier",
orders.GroupedOrderUpdateView.as_view(),
name="update_grouped_order",
),
path(
"<str:code>/supprimer",
orders.GroupedOrderDeleteView.as_view(),
name="delete_grouped_order",
),
path(
"<str:code>/dupliquer",
orders.GroupedOrderDuplicateView.as_view(),
name="duplicate_grouped_order",
),
path(
"<str:code>/gerer-produits/nouveau",
orders.ItemCreateView.as_view(),
name="item_create",
),
path(
"<str:code>/gerer-produits/<int:pk>/supprimer",
orders.ItemDeleteView.as_view(),
name="item_delete",
),
path(
"<str:code>/gerer/imprimer",
orders.DownloadGroupedordersheetView.as_view(),
name="grouped_order_sheet",
),
path(
"<str:code>/gerer/liste-mails",
orders.ExportGroupOrderEmailAdressesToDownloadView.as_view(),
name="email_list",
),
path(
"<str:code>/gerer/csv",
orders.ExportGroupedOrderToCSVView.as_view(),
name="grouped_order_csv_export",
),
],
),
path("comptes/", include("django.contrib.auth.urls")),
path("comptes/inscription/", accounts.SignUpView.as_view(), name="signup"),
# Some paths for accounts are easier to leave here # Some paths for accounts are easier to leave here
# - PasswordResetView sends the mail # - PasswordResetView sends the mail
# - PasswordResetDoneView shows a success message for the above # - PasswordResetDoneView shows a success message for the above