mirror of
https://framagit.org/la-chariotte/la-chariotte.git
synced 2025-05-04 21:02:01 +02:00
chore: regroup apps (WIP)
This commit is contained in:
parent
5e5a462e45
commit
a1d44667f3
71 changed files with 161 additions and 187 deletions
|
@ -1,6 +0,0 @@
|
||||||
from django.apps import AppConfig
|
|
||||||
|
|
||||||
|
|
||||||
class AccountsConfig(AppConfig):
|
|
||||||
default_auto_field = "django.db.models.BigAutoField"
|
|
||||||
name = "la_chariotte.accounts"
|
|
|
@ -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")
|
|
|
@ -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()
|
|
|
@ -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")),
|
|
||||||
]
|
|
|
@ -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
16
la_chariotte/apps.py
Normal 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"
|
|
@ -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(
|
|
@ -1,6 +0,0 @@
|
||||||
from django.apps import AppConfig
|
|
||||||
|
|
||||||
|
|
||||||
class MailConfig(AppConfig):
|
|
||||||
default_auto_field = "django.db.models.BigAutoField"
|
|
||||||
name = "la_chariotte.mail"
|
|
|
@ -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"
|
|
@ -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)
|
|
|
@ -1,6 +0,0 @@
|
||||||
from django.apps import AppConfig
|
|
||||||
|
|
||||||
|
|
||||||
class OrderConfig(AppConfig):
|
|
||||||
default_auto_field = "django.db.models.BigAutoField"
|
|
||||||
name = "la_chariotte.order"
|
|
|
@ -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",
|
|
||||||
),
|
|
||||||
]
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue