소스 검색

first commit

fanch 1 년 전
부모
커밋
a3f7cafa27

+ 44 - 3
src/baby/app/context/new_cycle.py

@@ -1,15 +1,56 @@
+import datetime
 
+from djangotools.common.types import parse_date
 
 from baby.app.context.base import BaseContextData, UserPrefences
+from baby.app.models.const import get_min_period
+from baby.app.models.regle import Regle
 
 
 class ContextData(BaseContextData):
     page = "new_cycle"
 
-    def get_context_data(self, request, action_params, **kwargs):
-        user = request.user
-        return {
+    def ret(self, status=None, message=None):
+        ret =  {
             "title" :  "Nouveau cycle"
         }
+        if status is not None:
+            ret.update({
+                "status" : status,
+                "message" : message,
+                "is_post" : True
+            })
+        else:
+            ret["is_post"] = True
+        return ret
+    def _post(self, request):
+        user = request.user
+        params = request.GET
+        force = params.get("force", False)
+        date = params.get("date",datetime.date.today())
+        if isinstance(date, (list, tuple)):
+            if date: date = date[0]
+            else: date=None
+        today = parse_date(date)
+
+
+        last = Regle.objects.last_regle_before(user, today)
+        if last is not None:
+            days_from_begin = (today - last.date).days
+
+            if days_from_begin == 0:
+                self.ret(False, "Le cycle a déja été initialisé aujourd'hui")
+
+            if days_from_begin < get_min_period(user) and not force:
+                self.ret(False, "Le cycle est trop court")
+
+        Regle.objects.create(user, today)
+        self.ret(True, "Le nouveau cycle a bien été pris en compte")
+
+    def get_context_data(self, request, action_params, **kwargs):
+        if request.method=="POST":
+            return self._post(request)
+        else:
+            return self.ret()
 
 

+ 0 - 45
src/baby/app/context/validate_cycle.py

@@ -1,45 +0,0 @@
-import datetime
-
-from djangotools.common.types import parse_date
-
-from baby.app.context.base import BaseContextData, UserPrefences
-from baby.app.models.const import get_min_period
-from baby.app.models.regle import Regle
-
-class ContextData(BaseContextData):
-    page = "validate_cycle"
-
-    def get_context_data(self, request, action_params, **kwargs):
-        user = request.user
-        params = request.GET
-        force = params.get("force", False)
-        date = params.get("date",datetime.date.today())
-        if isinstance(date, (list, tuple)):
-            if date: date = date[0]
-            else: date=None
-        today = parse_date(date)
-
-
-        last = Regle.objects.last_regle_before(user, today)
-        if last is not None:
-            days_from_begin = (today - last.date).days
-
-            if days_from_begin == 0:
-                return {
-                    "status": False,
-                    "message": "Le cycle a déja été initialisé aujourd'hui"
-                }
-
-            if days_from_begin < get_min_period(user) and not force:
-                return {
-                    "status" :  False,
-                    "message" : "Le cycle est trop court"
-                }
-
-        Regle.objects.create(user, today)
-        return {
-            "status" :  True,
-            "message" : "Le nouveau cycle a bien été pris en compte"
-        }
-
-

+ 46 - 2
src/baby/frontend/static/css/main/main.css

@@ -43,7 +43,7 @@ html {
 }
 
 .tile-title-text {
-    font-size: 32pt;
+    font-size: 22pt;
     font-weight: 600;
     height: 90px;
     padding-top: 10px;
@@ -118,4 +118,48 @@ input {
 
     color: var(--color-1) !important;
     background-color: var(--color-4) !important;
-}
+}
+
+
+.message-success {
+    background-color: var(--color-3);
+    color: var(--color-4);
+    padding:7px;
+    border: 1px solid var(--color-4);
+}
+
+.message-fail {
+    background-color: var(--color-2);
+    color: var(--color-4);
+    padding:7px;
+    border: 1px solid var(--color-4);
+}
+
+
+.invalid-feedback {
+    background-color: none;
+}
+
+
+.btn-submit {
+    background-color: var(--color-3);
+    color: var(--color-4);
+}
+
+.btn-submit:hover {
+    background-color: var(--color-2);
+    color: var(--color-4);
+}
+
+.form-control {
+    background-color: var(--color-1);
+}
+
+.input-group-text {
+    background-color: var(--color-1);
+}
+
+.form-select
+{
+    background-color: var(--color-1);
+}

+ 0 - 41
src/baby/frontend/static/css/parameters/parameters.css

@@ -1,41 +0,0 @@
-.btn-submit {
-    background-color: var(--color-3);
-    color: var(--color-4);
-}
-
-.btn-submit:hover {
-    background-color: var(--color-2);
-    color: var(--color-4);
-}
-
-.form-control {
-    background-color: var(--color-1);
-}
-
-.input-group-text {
-    background-color: var(--color-1);
-}
-
-.form-select
-{
-    background-color: var(--color-1);
-}
-
-.post-success {
-    background-color: var(--color-3);
-    color: var(--color-4);
-    padding:7px;
-    border: 1px solid var(--color-4);
-}
-
-.post-fail {
-    background-color: var(--color-2);
-    color: var(--color-4);
-    padding:7px;
-    border: 1px solid var(--color-4);
-}
-
-
-.invalid-feedback {
-    background-color: none;
-}

+ 7 - 7
src/baby/frontend/templates/calendar.html

@@ -5,12 +5,12 @@
     <meta name="viewport" content="width=device-width, initial-scale=1">
     <title>Baby - {{context.data.month_word}} {{context.data.year}}</title>
     <!-- Bootstrap CSS -->
-    <link rel="stylesheet" href="static/css/vendor/bootstrap.css">
+    <link rel="stylesheet" href="{{context.base_url}}/static/css/vendor/bootstrap.css">
     <!-- Bootstrap Font Icon CSS -->
-    <link rel="stylesheet" href="static/css/vendor/bootstrap-icons.css">
+    <link rel="stylesheet" href="{{context.base_url}}/static/css/vendor/bootstrap-icons.css">
 
-    <link rel="stylesheet" href="static/css/main/main.css">
-    <link rel="stylesheet" href="static/css/calendar/calendar.css">
+    <link rel="stylesheet" href="{{context.base_url}}/static/css/main/main.css">
+    <link rel="stylesheet" href="{{context.base_url}}/static/css/calendar/calendar.css">
 </head>
 <body>
 
@@ -20,7 +20,7 @@
         <div class="calendar">
 
             <div class="calendar-date-selector">
-                <form class="calendar-date-selector-form" action="/calendar">
+                <form class="calendar-date-selector-form" action="calendar">
                     <div class="input-group">
                         <select class="custom-select form-control calendar-date-month" name="month">
                           <option value="01">Janvier</option>
@@ -105,8 +105,8 @@
 
     <!-- Bootstrap JS Bundle with Popper -->
 
-    <script src="static/js/vendor/jquery.js"></script>
-    <script src="static/js/vendor/bootstrap.js"></script>
+    <script src="{{context.base_url}}/static/js/vendor/jquery.js"></script>
+    <script src="{{context.base_url}}/static/js/vendor/bootstrap.js"></script>
     <script>
         $( document ).ready(function() {
             const month = "{{context.data.month}}".padStart(2, '0');

+ 6 - 6
src/baby/frontend/templates/edit.html

@@ -5,12 +5,12 @@
     <meta name="viewport" content="width=device-width, initial-scale=1">
     <title>Baby - Editer les cycles</title>
     <!-- Bootstrap CSS -->
-    <link rel="stylesheet" href="static/css/vendor/bootstrap.css">
+    <link rel="stylesheet" href="{{context.base_url}}/static/css/vendor/bootstrap.css">
     <!-- Bootstrap Font Icon CSS -->
-    <link rel="stylesheet" href="static/css/vendor/bootstrap-icons.css">
+    <link rel="stylesheet" href="{{context.base_url}}/static/css/vendor/bootstrap-icons.css">
 
-    <link rel="stylesheet" href="static/css/main/main.css">
-    <link rel="stylesheet" href="static/css/edit/edit.css">
+    <link rel="stylesheet" href="{{context.base_url}}/static/css/main/main.css">
+    <link rel="stylesheet" href="{{context.base_url}}/static/css/edit/edit.css">
 </head>
 <body>
     {% include "nav.html" %}
@@ -71,8 +71,8 @@
     </main>
 
 
-    <script src="static/js/vendor/jquery.js"></script>
-    <script src="static/js/vendor/bootstrap.js"></script>
+    <script src="{{context.base_url}}/static/js/vendor/jquery.js"></script>
+    <script src="{{context.base_url}}/static/js/vendor/bootstrap.js"></script>
     <script>
         var dest_date = null;
         function remove_regle(date, id){

+ 12 - 12
src/baby/frontend/templates/index.html

@@ -5,12 +5,12 @@
     <meta name="viewport" content="width=device-width, initial-scale=1">
     <title>Including Bootstrap Icons in HTML</title>
     <!-- Bootstrap CSS -->
-    <link rel="stylesheet" href="static/css/vendor/bootstrap.css">
+    <link rel="stylesheet" href="{{context.base_url}}/static/css/vendor/bootstrap.css">
     <!-- Bootstrap Font Icon CSS -->
-    <link rel="stylesheet" href="static/css/vendor/bootstrap-icons.css">
+    <link rel="stylesheet" href="{{context.base_url}}/static/css/vendor/bootstrap-icons.css">
 
-    <link rel="stylesheet" href="static/css/main/main.css">
-    <link rel="stylesheet" href="static/css/accueil/accueil.css">
+    <link rel="stylesheet" href="{{context.base_url}}/static/css/main/main.css">
+    <link rel="stylesheet" href="{{context.base_url}}/static/css/accueil/accueil.css">
 </head>
 <body>
     {% include "nav.html" %}
@@ -18,7 +18,7 @@
         <div class="row tile-holder">
             {% if context.data.value %}
             <!--  Nombre de jour -->
-            <div class="col tile" onclick="location.pathname = '/stats'">
+            <div class="col tile" onclick="location.pathname = '{{context.base_url}}/stats'">
                 <div class="tile-content-transparent">
                     <div class="tile-title-text">
                         {{context.data.offset}}
@@ -30,7 +30,7 @@
             </div>
 
             <!--  Prochaines regles -->
-            <div class="col tile" onclick="location.pathname = '/stats'">
+            <div class="col tile" onclick="location.pathname = '{{context.base_url}}/stats'">
                 <div class="tile-content-transparent">
                     <div class="tile-title-text">
                         {{context.data.end}}
@@ -45,7 +45,7 @@
 
         <div class="row tile-holder">
             <!--  Nouveau cycle -->
-            <div class="col-6 col-xl-4 tile" onclick="location.pathname = '/new_cycle'">
+            <div class="col-6 col-xl-4 tile" onclick="location.pathname = '{{context.base_url}}/new_cycle'">
                 <div class="tile-content">
                     <center>
                         <i class="bi-check-lg tile-img" ></i>
@@ -57,7 +57,7 @@
             </div>
 
             <!--  Calendrier -->
-            <div class="col-6 col-xl-4 tile" onclick="location.pathname = '/calendar'">
+            <div class="col-6 col-xl-4 tile" onclick="location.pathname = '{{context.base_url}}/calendar'">
                 <div class="tile-content">
                     <center>
                         <i class="bi bi-calendar3 tile-img" ></i>
@@ -69,7 +69,7 @@
             </div>
 
             <!--  Editer cycles -->
-            <div class="col-6 col-xl-4 tile" onclick="location.pathname = '/edit'">
+            <div class="col-6 col-xl-4 tile" onclick="location.pathname = '{{context.base_url}}/edit'">
                 <div class="tile-content">
                     <center>
                         <i class="bi bi-pencil tile-img" ></i>
@@ -81,7 +81,7 @@
             </div>
 
             <!--  Parametres -->
-            <div class="col-6 col-xl-4 tile" onclick="location.pathname = '/parameters'">
+            <div class="col-6 col-xl-4 tile" onclick="location.pathname = '{{context.base_url}}/parameters'">
                 <div class="tile-content">
                     <center>
                         <i class="bi bi-gear tile-img" ></i>
@@ -96,7 +96,7 @@
 
     <!-- Bootstrap JS Bundle with Popper -->
 
-    <script src="static/js/vendor/jquery.js"></script>
-    <script src="static/js/vendor/bootstrap.js"></script>
+    <script src="{{context.base_url}}/static/js/vendor/jquery.js"></script>
+    <script src="{{context.base_url}}/static/js/vendor/bootstrap.js"></script>
 </body>
 </html>

+ 7 - 7
src/baby/frontend/templates/login.html

@@ -5,19 +5,19 @@
     <meta name="viewport" content="width=device-width, initial-scale=1">
     <title>Baby - Login</title>
     <!-- Bootstrap CSS -->
-    <link rel="stylesheet" href="static/css/vendor/bootstrap.css">
+    <link rel="stylesheet" href="{{context.base_url}}/static/css/vendor/bootstrap.css">
     <!-- Bootstrap Font Icon CSS -->
-    <link rel="stylesheet" href="static/css/vendor/bootstrap-icons.css">
+    <link rel="stylesheet" href="{{context.base_url}}/static/css/vendor/bootstrap-icons.css">
 
-    <link rel="stylesheet" href="static/css/main/main.css">
-    <link rel="stylesheet" href="static/css/login/login.css">
+    <link rel="stylesheet" href="{{context.base_url}}/static/css/main/main.css">
+    <link rel="stylesheet" href="{{context.base_url}}/static/css/login/login.css">
 </head>
 <body>
     {% include "nav.html" %}
     <main class="container">
         <div class="card">
             <div class="card-body">
-                <form class="stats-period-selector-form" action="/auth" method="post">
+                <form class="stats-period-selector-form" action="auth" method="post">
                     <h5 class="card-title">Login</h5>
                     <p class="card-text">Entrez votre login et mot de passe</p>
                         <div class="input-group mb-3">
@@ -38,7 +38,7 @@
 
     <!-- Bootstrap JS Bundle with Popper -->
 
-    <script src="static/js/vendor/jquery.js"></script>
-    <script src="static/js/vendor/bootstrap.js"></script>
+    <script src="{{context.base_url}}/static/js/vendor/jquery.js"></script>
+    <script src="{{context.base_url}}/static/js/vendor/bootstrap.js"></script>
 </body>
 </html>

+ 6 - 6
src/baby/frontend/templates/nav.html

@@ -1,7 +1,7 @@
 <nav class="navbar navbar-expand-lg">
     
     <div class="container-fluid">
-        <a class="navbar-brand nav-home" href="/"><i class="bi-house"></i></a>
+        <a class="navbar-brand nav-home" href="{{context.base_url}}"><i class="bi-house"></i></a>
         <a class="nav-titre navbar-brand">{{context.data.title}}</a>
         <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
             <span class="navbar-toggler-icon"></span>
@@ -15,12 +15,12 @@
                 <a class="nav-link" href="#">Link</a>
             </li> -->
             {% if context.user.authenticated  %}
-                <li class="nav-item"><a class="nav-link" href="/new_cycle">Valider cycle</a></li>
-                <li class="nav-item"><a class="nav-link" href="/calendar">Calendrier</a></li>
-                <li class="nav-item"><a class="nav-link" href="/parameters">Paramètres</a></li>
-                <li class="nav-item"><a class="nav-link" href="/stats">Stats</a></li>
+                <li class="nav-item"><a class="nav-link" href="{{context.base_url}}/new_cycle">Valider cycle</a></li>
+                <li class="nav-item"><a class="nav-link" href="{{context.base_url}}/calendar">Calendrier</a></li>
+                <li class="nav-item"><a class="nav-link" href="{{context.base_url}}/parameters">Paramètres</a></li>
+                <li class="nav-item"><a class="nav-link" href="{{context.base_url}}/stats">Stats</a></li>
                 <li class="nav-item">
-                    <a class="nav-link" href="/disconnect">Déconnexion</a>
+                    <a class="nav-link" href="{{context.base_url}}//disconnect">Déconnexion</a>
                 </li>
             {% else  %}
             {% endif %}

+ 9 - 9
src/baby/frontend/templates/new_cycle.html

@@ -5,12 +5,12 @@
     <meta name="viewport" content="width=device-width, initial-scale=1">
     <title>Baby - Nouveau cycle</title>
     <!-- Bootstrap CSS -->
-    <link rel="stylesheet" href="static/css/vendor/bootstrap.css">
+    <link rel="stylesheet" href="{{context.base_url}}/static/css/vendor/bootstrap.css">
     <!-- Bootstrap Font Icon CSS -->
-    <link rel="stylesheet" href="static/css/vendor/bootstrap-icons.css">
+    <link rel="stylesheet" href="{{context.base_url}}/static/css/vendor/bootstrap-icons.css">
 
-    <link rel="stylesheet" href="static/css/main/main.css">
-    <link rel="stylesheet" href="static/css/accueil/accueil.css">
+    <link rel="stylesheet" href="{{context.base_url}}/static/css/main/main.css">
+    <link rel="stylesheet" href="{{context.base_url}}/static/css/accueil/accueil.css">
 </head>
 <body>
     {% include "nav.html" %}
@@ -20,7 +20,7 @@
         <div class="row tile-holder">
 
             <!--  Démarrer aujourd'hui -->
-            <div class="col-6 col-xl-4 tile" onclick="location.pathname = '/validate_cycle'">
+            <div class="col-6 col-xl-4 tile" onclick="location.pathname = '{{context.base_url}}/new_cycle'">
                 <div class="tile-content">
                     <center>
                         <i class="bi bi-check tile-img" ></i>
@@ -35,7 +35,7 @@
             <div class="col-6 col-xl-4 tile">
                 <div class="tile-content">
                     <div class="btn tile-title">
-                        <form action="/validate_cycle">
+                        <form action="{{context.base_url}}/new_cycle">
                             <div class="validate_cycle-label">
                                 Choisir une date
                             </div>
@@ -51,7 +51,7 @@
             </div>
 
             <!--  Retour -->
-            <div class="col-6 col-xl-4 tile" onclick="location.pathname = '/'">
+            <div class="col-6 col-xl-4 tile" onclick="location.pathname = '{{context.base_url}}/'">
                 <div class="tile-content">
                     <center>
                         <i class="bi bi-arrow-left tile-img" ></i>
@@ -66,7 +66,7 @@
 
     <!-- Bootstrap JS Bundle with Popper -->
 
-    <script src="static/js/vendor/jquery.js"></script>
-    <script src="static/js/vendor/bootstrap.js"></script>
+    <script src="{{context.base_url}}/static/js/vendor/jquery.js"></script>
+    <script src="{{context.base_url}}/static/js/vendor/bootstrap.js"></script>
 </body>
 </html>

+ 8 - 8
src/baby/frontend/templates/parameters.html

@@ -5,31 +5,31 @@
     <meta name="viewport" content="width=device-width, initial-scale=1">
     <title>Baby - Editer les cycles</title>
     <!-- Bootstrap CSS -->
-    <link rel="stylesheet" href="static/css/vendor/bootstrap.css">
+    <link rel="stylesheet" href="{{context.base_url}}/static/css/vendor/bootstrap.css">
     <!-- Bootstrap Font Icon CSS -->
-    <link rel="stylesheet" href="static/css/vendor/bootstrap-icons.css">
+    <link rel="stylesheet" href="{{context.base_url}}/static/css/vendor/bootstrap-icons.css">
 
-    <link rel="stylesheet" href="static/css/main/main.css">
-    <link rel="stylesheet" href="static/css/parameters/parameters.css">
+    <link rel="stylesheet" href="{{context.base_url}}/static/css/main/main.css">
+    <link rel="stylesheet" href="{{context.base_url}}/static/css/parameters/parameters.css">
 </head>
 <body>
     {% include "nav.html" %}
     <main class="container">
-        <form method="post" action="/parameters">
+        <form method="post" action="parameters">
             {% if context.data.is_post %}
             {% if context.data.status %}
-                <div class="post-success" onclick="remove_message()">
+                <div class="message-success" onclick="remove_message()">
                     Modification effectué avec success
                 </div>
             {% else %}
-                <div class="post-fail"  onclick="remove_message()">
+                <div class="message-fail"  onclick="remove_message()">
                     Des erreurs ont eu lieu, la modification n'a pas eu lieu
                 </div>
                 
             {% endif %}
                 
             {% endif %}
-            {{context.data|safe}}
+
 
             <h3>Interface graphique</h3>
     

+ 7 - 7
src/baby/frontend/templates/stats.html

@@ -5,18 +5,18 @@
     <meta name="viewport" content="width=device-width, initial-scale=1">
     <title>Baby - Editer les cycles</title>
     <!-- Bootstrap CSS -->
-    <link rel="stylesheet" href="static/css/vendor/bootstrap.css">
+    <link rel="stylesheet" href="{{context.base_url}}/static/css/vendor/bootstrap.css">
     <!-- Bootstrap Font Icon CSS -->
-    <link rel="stylesheet" href="static/css/vendor/bootstrap-icons.css">
+    <link rel="stylesheet" href="{{context.base_url}}/static/css/vendor/bootstrap-icons.css">
 
-    <link rel="stylesheet" href="static/css/main/main.css">
-    <link rel="stylesheet" href="static/css/stats/stats.css">
+    <link rel="stylesheet" href="{{context.base_url}}/static/css/main/main.css">
+    <link rel="stylesheet" href="{{context.base_url}}/static/css/stats/stats.css">
 </head>
 <body>
     {% include "nav.html" %}
     <main class="container">
             <div class="stats-period-selector">
-                <form class="stats-period-selector-form" action="/stats">
+                <form class="stats-period-selector-form" action="{{context.base_url}}/stats">
                     <div class="input-group">
                         <select class="custom-select form-control stats-period" name="period">
                             <option value="custom">Période de calcul</option>
@@ -102,8 +102,8 @@
     </main>
 
 
-    <script src="static/js/vendor/jquery.js"></script>
-    <script src="static/js/vendor/bootstrap.js"></script>
+    <script src="{{context.base_url}}/static/js/vendor/jquery.js"></script>
+    <script src="{{context.base_url}}/static/js/vendor/bootstrap.js"></script>
     <script>
     </script>
 </body>

+ 0 - 40
src/baby/frontend/templates/validate_cycle.html

@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<html lang="fr">
-<head>
-    <meta charset="utf-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1">
-    <title>Including Bootstrap Icons in HTML</title>
-    <!-- Bootstrap CSS -->
-    <link rel="stylesheet" href="static/css/vendor/bootstrap.css">
-    <!-- Bootstrap Font Icon CSS -->
-    <link rel="stylesheet" href="static/css/vendor/bootstrap-icons.css">
-
-    <link rel="stylesheet" href="static/css/main/main.css">
-</head>
-<body>
-
-    {% include "nav.html" %}
-    <main class="container">
-        <h1></h1>
-
-        <!--  Nouveau cycle -->
-        <div class="row tile-holder">
-            {% if context.data.status %}
-                <div>
-                    {{ context.data.message }}
-                </div>
-            {% else %}
-                <div>
-                    {{ context.data.message }}
-                </div>
-
-            {% endif %}
-        </div>
-    </main>
-
-    <!-- Bootstrap JS Bundle with Popper -->
-
-    <script src="static/js/vendor/jquery.js"></script>
-    <script src="static/js/vendor/bootstrap.js"></script>
-</body>
-</html>

+ 1 - 1
src/baby/settings/__init__.py

@@ -66,5 +66,5 @@ app_dir = BASE_DIR.parent.parent / "data"
 STATICFILES_DIRS = ["frontend/static"]
 TEMPLATES_DIR = ["frontend/templates"]
 ROOT_TEMPLATE="index.html"
-
+BASE_URL="baby/app/"
 CONFIG = load_settings(globals())