示例#1
0
文件: views.py 项目: uniurbit/PEO
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)
示例#2
0
 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
示例#4
0
文件: views.py 项目: uniurbit/PEO
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)
示例#5
0
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)