diff --git a/grandlyon_iodas/extra/scripts/checkDuplicate.py b/grandlyon_iodas/extra/scripts/checkDuplicate.py new file mode 100644 index 0000000..dd99244 --- /dev/null +++ b/grandlyon_iodas/extra/scripts/checkDuplicate.py @@ -0,0 +1,17 @@ +""" +Vérifie qu'il n'existe pas déja un formulaire soumis par l'utilisateur connecté ayant le meme dpap (numéro de dossier papier) +""" +# id du champ contenant le DPAP +field_id = [x for x in form_objects.formdef.fields if x.varname == 'dpap'][0].id + +noDuplicate = '' +try: + form_user_name_identifier_0 +except NameError: + # Si user anonyme on le laisse passer + noDuplicate = True +else: + # Si user connecté on check un eventuel doublon : False si doublon, True si pas doublon + noDuplicate = bool(len([x for x in form_objects.formdef.data_class().select() if x.get_user() and x.data.get(field_id) == form_var_dpap and x.get_user().name_identifiers[0] == form_user_name_identifier_0 and not x.is_draft()]) == 0) + +result = noDuplicate diff --git a/grandlyon_iodas/extra/static/social.css b/grandlyon_iodas/extra/static/social.css new file mode 100644 index 0000000..e678f76 --- /dev/null +++ b/grandlyon_iodas/extra/static/social.css @@ -0,0 +1,332 @@ +/* Test suivi PH */ +.formdef-suivi-dossier-ph .steps-1, +.formdef-suivi-dossier-ph div#rub_service div#receipt-intro, +.formdef-suivi-dossier-ph div#rub_service .wait .evolution-metadata, +.formdef-suivi-dossier-ph div#rub_service #evolutions.open::before, +.formdef-suivi-dossier-ph ul#evolutions > li.detail ~ li.detail, +.formdef-suivi-dossier-ph ul#evolutions > li.wait ~ li.wait, +.formdef-suivi-dossier-ph ul#evolutions li span.item, +.formdef-suivi-dossier-ph ul#evolutions li.None, +.formdef-suivi-dossier-ph ul#evolutions > .detail .status, +.formdef-suivi-dossier-ph ul#evolutions > .detail .time, +.formdef-suivi-dossier-ph ul#evolutions > .detail .user, +.formdef-suivi-dossier-ph ul#evolutions:after, +.formdef-suivi-dossier-ph input.infoInput:checked ~ li div.commentaire, +.formdef-suivi-dossier-ph input.infoInput:checked ~ li div.arrowUp, +.formdef-suivi-dossier-ph input[name="etape"] { + display: none; +} +.formdef-suivi-dossier-ph h2.foldable { + display: none !important; +} +/* form */ +.formdef-suivi-dossier-ph div#rub_service form { + padding: 0; +} +.formdef-suivi-dossier-ph div#rub_service h3 { + padding: 20px 0 20px 25px; + font-size: 1.3em; +} +.formdef-suivi-dossier-ph div.widget { + padding: 0 25px; +} +.formdef-suivi-dossier-ph div.submit { + height: 0; +} +.formdef-suivi-dossier-ph #var_dpap { + margin-bottom: 0; + padding: 5px 62px 30px 20px; +} +.formdef-suivi-dossier-ph .wrapperSearch { + background-color: #E3E3E3; + margin: 0; + width: 100%; +} +.formdef-suivi-dossier-ph h3.wrapperSearch { + width: calc(100% - 25px); +} +.formdef-suivi-dossier-ph div#gauche + div#rub_service div.buttons .submit-button button { + background: #DA0D02; + color: white; + margin: 0; + padding: 0; + height: 27px; + border-radius: 0 5px 5px 0; + position: relative; + top: -73px; + text-indent: -55px; + line-height: 0; +} +.formdef-suivi-dossier-ph div#gauche + div#rub_service div.buttons .submit-button button:after { + font-family: FontAwesome; + content: "\f002"; + padding: 0 1em; + text-indent: 0; + line-height: initial; +} +/* historique */ +@media screen and (min-width: 1000px) { + .formdef-suivi-dossier-ph div#rub_service div.contact#receipt-intro { + display: block; + position: absolute; + top: -46px; + left: 108%; + width: 40%; + background-color: #fff; + padding: 10px; + border-radius: 5px; + } + .formdef-suivi-dossier-ph div#rub_service div.colform#receipt-intro { + position: relative; + top: 1px; + left: 104%; + width: 35%; + } +} +.formdef-suivi-dossier-ph div#rub_service div.contform { + height: 0px; +} +.formdef-suivi-dossier-ph .detail { + font-size: 1.1em; +} +.formdef-suivi-dossier-ph .emphasized { + color: darkred; + font-size: 1.15em; + font-weight: bold; +} +.formdef-suivi-dossier-ph div#rub_service h3#procedure { + position: relative; + left: -40px; + margin-bottom: 2.5ex; + padding: 0; + font-size: 1.35em; +} +.formdef-suivi-dossier-ph div#rub_service div.contact#receipt-intro h3 { + margin: 0; + padding: 10px 0; +} +.formdef-suivi-dossier-ph div#rub_service .wait { + margin-bottom: 0; +} +.formdef-suivi-dossier-ph ul#evolutions { + overflow: visible; +} +.formdef-suivi-dossier-ph ul#evolutions.open { + margin-top:0 !important; +} +.formdef-suivi-dossier-ph ul#evolutions ul.suivi { + padding: 0 0 20px 0; +} +.formdef-suivi-dossier-ph ul#evolutions ul.suivi li { + list-style-type: none; + margin: 0; +} +.formdef-suivi-dossier-ph ul#evolutions ul.taches { + padding: 0px; + margin: 0px; +} +.formdef-suivi-dossier-ph ul#evolutions ul.taches > li { + margin: 0 0 15px 0; +} +.formdef-suivi-dossier-ph ul#evolutions ul.demande li { + margin: 0; +} +.formdef-suivi-dossier-ph ul#evolutions span.step { + box-sizing: border-box; + position: absolute; + left: -14px; + width: 15px; + height: 15px; + border-radius: 20px; + border: 1px solid #363636; +} +.formdef-suivi-dossier-ph ul#evolutions span.enCours { + color: #363636; + background-color: #fff; + margin-top: 3px; + color: #fff; +} +.formdef-suivi-dossier-ph ul#evolutions span.fini { + background-color: #363636; + color: #363636; + margin-top: 6px; +} +.formdef-suivi-dossier-ph ul#evolutions .etape { + font-size: 1.2em; + line-height: 1.8em; +} +.formdef-suivi-dossier-ph ul#evolutions .currentStep { + font-size: 1.25em; + color: #98e478; +} +.formdef-suivi-dossier-ph ul#evolutions li.listEtape:last-child::before { + position: absolute; + top: 25px; + left: -8px; + width: 3px; + height: 100%; + content: " "; + background: #fff; +} +/* comments */ +.formdef-suivi-dossier-ph ul#evolutions div.commentaire { + background-color: #E3E3E3; + border-radius: 5px; + padding: 15px; +} +.formdef-suivi-dossier-ph ul#evolutions div.arrowUp { + width: 0; + height: 0; + position: relative; + left: 15px; + border-left: 8px solid transparent; + border-right: 8px solid transparent; + border-bottom: 8px solid #E3E3E3; + padding-top: 5px; +} +/* opinions */ +.formdef-suivi-dossier-ph ul#evolutions div.Accord, .formdef-suivi-dossier-ph ul#evolutions div.Rejet, .formdef-suivi-dossier-ph ul#evolutions div.Refus, .formdef-suivi-dossier-ph ul#evolutions div.suspension { + width: 20px; + height: 30px; + float: left; + line-height: 0; + color: #fff; + font-weight: bold; +} +.formdef-suivi-dossier-ph ul#evolutions div.suspension { + height: 15px; +} +.formdef-suivi-dossier-ph ul#evolutions div.Rejet:before, +.formdef-suivi-dossier-ph ul#evolutions div.Refus:before, +.formdef-suivi-dossier-ph ul#evolutions div.suspension:before, +.formdef-suivi-dossier-ph ul#evolutions div.Accord:before { + content: "✖"; + margin: 0; + border: none; + width: 10px; + height: 7px; + border-radius: 100%; + background-color: #961111; + color: #fff; + text-align: center; + font-size: 0.81em; + overflow: hidden; + float: left; + padding: 9px 4px 0 3px; +} +.formdef-suivi-dossier-ph ul#evolutions div.Accord:before { + content: "✔"; + background-color: #86bd3c; + width: 11px; + height: 8px; +} +.formdef-suivi-dossier-ph ul#evolutions div.suspension:before, +.formdef-suivi-dossier-ph ul#evolutions div.mais:before { + content: "..."; + padding: 7px 4px 0 3px; + height: 10px; + background-color: #ff782a; +} +.formdef-suivi-dossier-ph ul#evolutions span.noOpinion { + width: 20px; + height: 50px; + float: left; +} +.formdef-suivi-dossier-ph ul#evolutions #maj { + font-size: 0.8em; +} +.formdef-suivi-dossier-ph ul#evolutions .missing::before { + content: "✖"; + color: darkred; +} +.formdef-suivi-dossier-ph ul#evolutions .check::before { + content: "✔"; + color: #86bd3c; +} +.formdef-suivi-dossier-ph ul#evolutions ul.suivi::before { + position: absolute; + /*top: 90px;*/ + left: 0; + width: 1px; + height: calc(100% - 120px); + content: " "; + background: #363636; +} +/* info button to display old comments */ +.formdef-suivi-dossier-ph .infoBt { + visibility: hidden; + cursor: pointer; + font-weight: bold; + font-size: 1.3em; + color: #2f2f7b; + float: right; +} +.formdef-suivi-dossier-ph input.infoInput { + visibility: hidden; +} +.formdef-suivi-dossier-ph .comment ~ .infoBt { + visibility: visible; +} +/* accordeon */ +.formdef-suivi-dossier-ph .suivi > li { + position: relative; + padding: 0 0 0 35px; + border-bottom: 1px solid white; +} +.formdef-suivi-dossier-ph .suivi > li label#phase:after { + content: "►"; + float: right; +} +.formdef-suivi-dossier-ph .suivi > li input:checked + label#phase:after { + content: "▼"; +} +.formdef-suivi-dossier-ph .suivi > li input + label#phase { + cursor: pointer; + border-radius: 3px; + font-weight: bold; + display: block; + padding: 7.5px 15px; + background-color: #2A2E4B; + color: #fff; +} +.formdef-suivi-dossier-ph .suivi > li input ~ div { + display: none; + height: 0px; + max-height: 0; + padding: 0; + opacity: 0; + -webkit-transition: all 1s ease; + transition: all 1s ease; +} +.formdef-suivi-dossier-ph .suivi > li input:checked + label#phase { + background-color: #2A2E4B; + color: #fff; +} +.formdef-suivi-dossier-ph .suivi > li input:checked ~ div { + display: block; + height: 100%; + max-height: 1000px; + opacity: 1; + -webkit-transition: all 1s ease; + transition: all 1s ease; +} +/* Bouton Grandlyon Connect */ +.formdef-suivi-dossier-ph div.connect-buttons a { + background: #DA0D02; + color: white; + border-radius: 40px; + display: block; + max-width: 275px; + padding: 0.5em; + font-weight: bold; + text-decoration: none; + } +.formdef-suivi-dossier-ph div.connect-buttons::before { + position: absolute; + top: 5px; + left: -18px; + width: 3px; + height: 100%; + content: " "; + background: #fff; + } diff --git a/grandlyon_iodas/migrations/0001_initial.pyc b/grandlyon_iodas/migrations/0001_initial.pyc new file mode 100644 index 0000000..b07ef17 Binary files /dev/null and b/grandlyon_iodas/migrations/0001_initial.pyc differ diff --git a/grandlyon_iodas/migrations/__init__.pyc b/grandlyon_iodas/migrations/__init__.pyc index 850f419..c33389c 100644 Binary files a/grandlyon_iodas/migrations/__init__.pyc and b/grandlyon_iodas/migrations/__init__.pyc differ diff --git a/grandlyon_iodas/models.py b/grandlyon_iodas/models.py index 9bdde8c..85b5f63 100644 --- a/grandlyon_iodas/models.py +++ b/grandlyon_iodas/models.py @@ -94,14 +94,14 @@ class grandlyonIodas(BaseResource): # recupere la liste des droits en cours de toutes les procedures d'un individu droits = [] if 'procedures' in data : - for procedure in data['procedures']['procedures']['procedure'] : - for etape in procedure['etapes']['etape'] : - if 'taches' in etape : - for tache in etape['taches']['tache'] : - if tache['idtypetache'] == 2 and datetime.strptime(tache['datearret'], "%d/%m/%Y") > datetime.now(): - for nb in [3,6] : - deltafindroit = nb if (datetime.strptime(tache['datearret'], "%d/%m/%Y") - dateutil.relativedelta.relativedelta(months=nb)) == datetime.now().replace(hour=0, minute=0, second=0, microsecond=0) else 0 - droits.append({"libl":tache['produit']['libl'], "dateproposition":tache['dateproposition'], "datearret":tache['datearret'], "dateeffet":tache['dateeffet'], "deltafindroit":deltafindroit}) + for procedure in data['procedures']['procedures']['procedure'] : + for etape in procedure['etapes']['etape'] : + if 'taches' in etape : + for tache in etape['taches']['tache'] : + if tache['idtypetache'] == 2 and datetime.strptime(tache['datearret'], "%d/%m/%Y") > datetime.now(): + for nb in [3,6] : + deltafindroit = nb if (datetime.strptime(tache['datearret'], "%d/%m/%Y") - dateutil.relativedelta.relativedelta(months=nb)) == datetime.now().replace(hour=0, minute=0, second=0, microsecond=0) else 0 + droits.append({"libl":tache['produit']['libl'], "dateproposition":tache['dateproposition'], "datearret":tache['datearret'], "dateeffet":tache['dateeffet'], "deltafindroit":deltafindroit}) return {'hash': hashlib.sha224(json.dumps(data)).hexdigest(), 'libl': data['procedures']['procedures']['procedure'][nbProc]['libl'] if 'procedures' in data else '', diff --git a/grandlyon_iodas/models.pyc b/grandlyon_iodas/models.pyc index a2ef700..3d511ac 100644 Binary files a/grandlyon_iodas/models.pyc and b/grandlyon_iodas/models.pyc differ