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 .forms import CustomUserChangeForm, CustomUserCreationForm
from .models import CustomUser
from .models import CustomUser, GroupedOrder, Item, Order, OrderAuthor, OrderedItem
class CustomUserAdmin(UserAdmin):
@ -13,3 +13,10 @@ class CustomUserAdmin(UserAdmin):
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
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 import get_user_model
from django.contrib.auth.forms import UserChangeForm, UserCreationForm
from django.forms.utils import to_current_timezone
from django.utils import timezone
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):
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 base36
from django.contrib.auth.models import AbstractUser
from django.core.exceptions import ValidationError
from django.db import models
from django.urls import reverse
@ -9,6 +10,21 @@ from django.utils import timezone
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):
name = models.CharField(
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
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
@ -25,11 +12,94 @@ from django.views.generic.base import TemplateView
from la_chariotte import settings
from la_chariotte.order.views import JoinGroupedOrderView
from la_chariotte.views import accounts, orders
urlpatterns = [
path("admin/", admin.site.urls),
path("commande/", include("la_chariotte.order.urls")),
path("comptes/", include("la_chariotte.accounts.urls")),
path(
"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
# - PasswordResetView sends the mail
# - PasswordResetDoneView shows a success message for the above