def vedi_modulo_inserito(request, bando_id, modulo_domanda_bando_id): """ usato in admin per avere una anteprima dei campi scelti """ modulo_domanda_bando = get_object_or_404(ModuloDomandaBando, pk=modulo_domanda_bando_id) bando = _get_bando_queryset(bando_id).first() descrizione_indicatore = modulo_domanda_bando.descrizione_indicatore json_dict = json.loads(modulo_domanda_bando.modulo_compilato) data = get_as_dict(json_dict, allegati=False) allegati = get_allegati_dict(modulo_domanda_bando) form = SavedFormContent.compiled_form_readonly( modulo_domanda_bando.compiled_form(remove_filefields=allegati)) # form con i soli campi File da dare in pasto al tag della firma digitale form_allegati = descrizione_indicatore.get_form(remove_datafields=True) d = { 'allegati': allegati, 'form': form, 'form_allegati': form_allegati, 'bando': bando, 'descrizione_indicatore': descrizione_indicatore, 'modulo_domanda_bando': modulo_domanda_bando, 'readonly': True } return render(request, 'modulo_form_readonly_user.html', d)
def test_get_allegati_dict_false(self): """ Test invalid get_allegati_dict() method """ data = {'data_inizio_dyn': '12/01/2020', 'data_fine_dyn': '12/03/2020'} attachments = get_allegati_dict(compiled_module=data, pure_text=True) logger.info("Test empty get_allegati_dict()") self.assertFalse(attachments)
def test_get_allegati_dict(self): """ Test get_allegati_dict() method """ data = {'data_inizio_dyn': '12/01/2020', 'data_fine_dyn': '12/03/2020', ATTACHMENTS_DICT_PREFIX: { 'test_file': 'test_file_path', } } attachments = get_allegati_dict(compiled_module=data, pure_text=True) logger.info("Test get_allegati_dict()") assert attachments
def modifica_titolo(request, bando_id, modulo_compilato_id): """ Costruisce form da PeodynamicForm li valida e salva i dati all'occorrenza remove_filefields prende il valore che concorre a selezionare il template readonly usato per readonly=pdf, inoltre rimuove i filefields dal form """ dipendente = get_object_or_404(Dipendente, matricola=request.user.matricola) bando = _get_bando_queryset(bando_id).first() mdb = get_object_or_404(ModuloDomandaBando, pk=modulo_compilato_id, domanda_bando__is_active=True, domanda_bando__dipendente=dipendente) descrizione_indicatore = mdb.descrizione_indicatore # Creo il form con i campi files=None e remove_filefields=False # perchè al momento della creazione non ci sono ovviamente allegati # già inseriti (ma se non setto remove_filefields=False il form # viene generato senza campi FileField) # form = mdb.compiled_form(files=None, remove_filefields=False) allegati = get_allegati_dict(mdb) form = mdb.compiled_form(remove_filefields=allegati) # form con i soli campi File da dare in pasto al tag della firma digitale form_allegati = descrizione_indicatore.get_form(remove_datafields=True) # Nonostante sia reperibile anche da 'modulo_domanda_bando', # nel contesto devo passare anche 'descrizione_indicatore', altrimenti # nel breadcrumb di modulo_form.html non riesco a recuperare il nome. # Potrei anche duplicare la porzione di html del breadcrumb in modulo_form_modifica.html, # è indifferente dashboard_domanda_title = 'Partecipazione Bando {}'.format(bando.nome) dashboard_domanda_url = reverse('domande_peo:dashboard_domanda', args=[bando.slug]) path_allegati = get_path_allegato(dipendente.matricola, bando.slug, mdb.pk) page_title = 'Modifica Inserimento: "({}) {}"'.format( descrizione_indicatore.id_code, descrizione_indicatore.nome) _breadcrumbs.reset() _breadcrumbs.add_url((dashboard_domanda_url, dashboard_domanda_title)) _breadcrumbs.add_url(('#', page_title)) d = { 'allegati': allegati, 'bando': bando, 'breadcrumbs': _breadcrumbs, 'dipendente': dipendente, 'form': form, 'form_allegati': form_allegati, 'modulo_domanda_bando': mdb, 'page_title': page_title, 'path_allegati': path_allegati, } if request.method == 'POST': return_url = reverse('domande_peo:modifica_titolo', args=[bando.pk, modulo_compilato_id]) result = modifica_titolo_form( request=request, bando=bando, descrizione_indicatore=descrizione_indicatore, mdb=mdb, allegati=allegati, path_allegati=path_allegati, return_url=return_url, log=False) if result: if isinstance(result, HttpResponseRedirect): return result for k in result: d[k] = result[k] d['labeled_errors'] = get_labeled_errors(d['form']) return render(request, 'modulo_form_modifica.html', d)
def commissione_modulo_domanda_modifica(request, commissione_id, domanda_id, modulo_id, commissione, commissione_user): """ Costruisce form da PeodynamicForm li valida e salva i dati all'occorrenza remove_filefields prende il valore che concorre a selezionare il template readonly usato per readonly=pdf, inoltre rimuove i filefields dal form """ bando = commissione.bando domanda_bando = get_object_or_404(DomandaBando, pk=domanda_id, bando=bando) dipendente = domanda_bando.dipendente mdb = get_object_or_404(ModuloDomandaBando, pk=modulo_id, domanda_bando__dipendente=dipendente) descrizione_indicatore = mdb.descrizione_indicatore allegati = get_allegati_dict(mdb) form = mdb.compiled_form(remove_filefields=allegati) form_allegati = descrizione_indicatore.get_form(remove_datafields=True) dashboard_domanda_title = 'Partecipazione Bando {}'.format(bando.nome) dashboard_domanda_url = reverse('domande_peo:dashboard_domanda', args=[bando.slug]) path_allegati = get_path_allegato(dipendente.matricola, bando.slug, mdb.pk) page_title = 'Modifica Inserimento: "({}) {}"'.format( descrizione_indicatore.id_code, descrizione_indicatore.nome) page_url = reverse('gestione_peo:commissione_modulo_domanda_modifica', args=[commissione_id, domanda_id, modulo_id]) url_commissioni = reverse('gestione_peo:commissioni') url_commissione = reverse('gestione_peo:dettaglio_commissione', args=[commissione_id]) url_manage = reverse('gestione_peo:manage_commissione', args=[commissione_id]) url_domanda = reverse('gestione_peo:commissione_domanda_manage', args=[commissione_id, domanda_id]) _breadcrumbs.reset() _breadcrumbs.add_url((url_commissioni, 'Commissioni')) _breadcrumbs.add_url((url_commissione, commissione)) _breadcrumbs.add_url((url_manage, 'Gestione domande')) _breadcrumbs.add_url((url_domanda, 'Domanda {}'.format(domanda_bando))) _breadcrumbs.add_url((page_url, page_title)) commissioni = get_commissioni_attive(request.user) commissioni_in_corso = get_commissioni_in_corso(request.user, commissioni) d = { 'allegati': allegati, 'bando': bando, 'breadcrumbs': _breadcrumbs, 'commissione': commissione, 'commissioni': commissioni, 'commissioni_in_corso': commissioni_in_corso, 'dipendente': dipendente, 'domanda_bando': domanda_bando, 'form': form, 'form_allegati': form_allegati, 'modulo_domanda_bando': mdb, 'page_title': page_title, 'path_allegati': path_allegati, } if request.method == 'POST': if request.POST.get('disable_input'): disabilita_abilita = request.POST.get( 'disabilita_abilita_inserimento') motivazione = request.POST.get('motivazione') or mdb.disabilita if disabilita_abilita and motivazione: etichetta = mdb.get_identificativo_veloce() mdb.disabilita = not mdb.disabilita mdb.motivazione = motivazione mdb.save(update_fields=['disabilita', 'motivazione']) if mdb.disabilita: msg = ( "Inserimento {} - Etichetta: {} - disabilitato con successo" ).format(mdb, etichetta) else: msg = ( "Inserimento {} - Etichetta: {} - abilitato con successo" ).format(mdb, etichetta) messages.add_message(request, messages.SUCCESS, msg) # Logging di ogni azione compiuta sulla domanda dalla commissione LogEntry.objects.log_action( user_id=request.user.pk, content_type_id=ContentType.objects.get_for_model( domanda_bando).pk, object_id=domanda_bando.pk, object_repr=domanda_bando.__str__(), action_flag=CHANGE, change_message=msg) # Per evitare che al refresh # possa essere effettuata una nuova richiesta POST url = reverse('gestione_peo:commissione_domanda_manage', args=[commissione_id, domanda_id]) return HttpResponseRedirect("{}#{}".format(url, mdb.pk)) else: msg = ( "Per disabilitare un inserimento è necessario inserire una motivazione" ) messages.add_message(request, messages.ERROR, msg) else: if mdb.added_by_user(): return render( request, 'custom_message.html', { 'avviso': ("Impossibile modificare inserimenti creati dal dipendente." ) }) return_url = reverse( 'gestione_peo:commissione_modulo_domanda_modifica', args=[commissione_id, domanda_id, modulo_id]) result = modifica_titolo_form( request=request, bando=bando, descrizione_indicatore=descrizione_indicatore, mdb=mdb, allegati=allegati, path_allegati=path_allegati, return_url=return_url, log=True) if result: if isinstance(result, HttpResponseRedirect): return result for k in result: d[k] = result[k] d['labeled_errors'] = get_labeled_errors(d['form']) return render(request, 'commissione_modulo_form_modifica.html', d)