mirror of
https://framagit.org/la-chariotte/la-chariotte.git
synced 2025-05-04 12:51:50 +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 .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
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
|
||||
|
||||
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(
|
|
@ -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 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"
|
|
@ -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
|
||||
|
||||
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
|
||||
|
|
Loading…
Reference in a new issue