Example #1
0
def view(request, template_name="archive/view.html"):
    """ Visualizza le corse archiviate """
    profile = ProfiloUtente.objects.get(user=request.user)
    from django.core.paginator import Paginator
    if not request.user.has_perm('tamArchive.view'):
        messages.error(request, "Devi avere accesso all'archiviazione.")
        return HttpResponseRedirect(reverse("tamUtil"))

    archiviati = ViaggioArchive.objects.filter(padre__isnull=True)
    # pagine da tot righe (cui si aggiungono i figli)
    paginator = Paginator(archiviati, 100, orphans=10)

    try:
        page = int(request.GET.get("page"))
    except:
        page = 1
    paginator.smart_page_range = SmartPager(page, paginator.num_pages).results

    try:
        thisPage = paginator.page(page)
        list = thisPage.object_list
    except:
        messages.warning(request, "Pagina %d vuota." % page)
        thisPage = None
        list = []

    return render(request,
                  template_name,
                  {'list': list, 'paginator': paginator,
                   'luogoRiferimento': profile.luogo.nome, 'thisPage': thisPage},
                  )
Example #2
0
def view(request, template_name="archive/view.html"):
    """ Visualizza le corse archiviate """
    profile = ProfiloUtente.objects.get(user=request.user)
    from django.core.paginator import Paginator

    archiviati = ViaggioArchive.objects.filter(padre__isnull=True)
    # pagine da tot righe (cui si aggiungono i figli)
    paginator = Paginator(archiviati, 100, orphans=10)

    try:
        page = int(request.GET.get("page"))
    except:
        page = 1
    paginator.smart_page_range = SmartPager(page, paginator.num_pages).results

    try:
        thisPage = paginator.page(page)
        list = thisPage.object_list
    except:
        messages.warning(request, "Pagina %d vuota." % page)
        thisPage = None
        list = []

    return render(
        request,
        template_name,
        {
            'list': list,
            'paginator': paginator,
            'luogoRiferimento': profile.luogo.nome,
            'thisPage': thisPage
        },
    )
Example #3
0
def cronologia(request, template_name='prenotazioni/cronologia.html'):
    utentePrenotazioni = request.user.prenotazioni
    clienti_attivi = utentePrenotazioni.clienti.all()
    if len(clienti_attivi) == 1:
        cliente_unico = clienti_attivi[0]
    else:
        cliente_unico = None

    filtroCliente = request.GET.get('cliente', None)
    cliente_selezionato = None
    if filtroCliente is not None:
        if filtroCliente != "all":
            try:
                codice_cliente = int(filtroCliente)
                cliente_selezionato = Cliente.objects.get(id=codice_cliente)
                if cliente_selezionato not in clienti_attivi:
                    messages.error(
                        request,
                        _('Non sei abilitato a vedere questo cliente.'))
                    return HttpResponseRedirect(
                        reverse('tamCronoPrenotazioni'))
            except ValueError:
                filtroCliente = None
            except Cliente.DoesNotExist:
                messages.error(request, _('Il cliente non esiste.'))
                return HttpResponseRedirect(reverse('tamCronoPrenotazioni'))

    adesso = tamdates.ita_now().replace(second=0, microsecond=0)
    data_inizio = (adesso - datetime.timedelta(days=60)).replace(hour=0,
                                                                 minute=0)
    data_fine = None

    filtroData = request.GET.get('data', 'next')
    if filtroData is not None:
        if filtroData == 'cur':  # mese corrente
            data_inizio = adesso.replace(hour=0, minute=0, day=1)
            data_fine = (data_inizio + datetime.timedelta(days=32)).replace(
                hour=0, minute=0, day=1)
        elif filtroData == 'prev':  # mese precedente
            data_fine = adesso.replace(hour=0, minute=0,
                                       day=1)  # vado a inizio mese
            data_inizio = (data_fine - datetime.timedelta(days=1)).replace(
                day=1)  # vado a inizio del mese precedente
        elif filtroData == 'day':  # tutta oggi
            data_inizio = adesso.replace(hour=0, minute=0)  # da mezzanotte...
            data_fine = adesso.replace(hour=23,
                                       minute=59)  # fino a fine giornata
        elif filtroData == 'next':  # prossime corse
            # prendo il minore tra 2 ore fa e mezzanotte scorsa e per i prossimi 15 giorni
            data_ScorsaMezzanotte = adesso.replace(hour=0, minute=0)
            data_DueOreFa = adesso - datetime.timedelta(hours=2)
            data_inizio = min(data_ScorsaMezzanotte, data_DueOreFa)
            data_fine = adesso + datetime.timedelta(days=15)
        elif filtroData == 'adv':  # filtro avanzato da data - a data
            start_string = request.GET.get('dstart')
            end_string = request.GET.get('dend')
            try:
                data_inizio = tamdates.parse_datestring(start_string).replace(
                    hour=0, minute=0)
                data_fine = tamdates.parse_datestring(end_string).replace(
                    hour=23, minute=59)  # fino a fine giornata
            except AttributeError:
                messages.warning(
                    request,
                    _("Errore nel processare l'intervallo di date {start}-{end}."
                      ).format(start=start_string, end=end_string))
                return HttpResponseRedirect(reverse('tamCronoPrenotazioni'))

    viaggi = Viaggio.objects.filter(
        cliente__in=utentePrenotazioni.clienti.all())

    if cliente_selezionato:  # filtro ulteriormente
        viaggi = viaggi.filter(cliente=cliente_selezionato)

    viaggi = viaggi.filter(data__gte=data_inizio)
    if data_fine:
        viaggi = viaggi.filter(data__lte=data_fine)
    viaggi = viaggi.order_by("-data")

    # print "Ho %d viaggi da mostrare" % viaggi.count()

    # divido viaggi in pagine
    paginator = Paginator(viaggi, 50, orphans=5)  # pagine da tot viaggi
    page = request.GET.get("page", 1)
    try:
        page = int(page)
    except ValueError:
        page = 1
    s = SmartPager(page, paginator.num_pages)
    paginator.smart_page_range = s.results
    try:
        thisPage = paginator.page(page)
        viaggi = thisPage.object_list
    except:
        messages.warning(request, _("La pagina %d è vuota.") % page)
        thisPage = None
        viaggi = []
    # ----------------------

    return render(
        request,
        template_name,
        {
            "utentePrenotazioni": utentePrenotazioni,
            "prenotazioni": prenotazioni,
            "viaggi": viaggi,
            "cliente_unico": cliente_unico,
            "clienti_attivi": clienti_attivi,
            "cliente_selezionato": cliente_selezionato,
            "current_date_filter": filtroData,
            "data_inizio":
            data_inizio.strftime('%d/%m/%Y') if data_inizio else "",
            "data_fine": data_fine.strftime('%d/%m/%Y') if data_fine else "",
            "paginator": paginator,
            "thisPage": thisPage,
            "logo_consorzio": settings.TRANSPARENT_SMALL_LOGO,
        },
    )
Example #4
0
def actionLog(request, template_name="actionLog.html"):
    logAndCleanExpiredSessions()
    from_a_superuser = request.user.is_superuser
    utenti = User.objects.all().order_by('username')
    if not from_a_superuser:
        utenti = utenti.exclude(is_superuser=True)  # normal users don't see superusers
    filterUtente = request.GET.get('user', '')
    filterType = request.GET.get('type', '')
    filterId = request.GET.get('id', '')
    filterAction = request.GET.get('action', '')
    filterPreInsert = 'preInsert' in request.GET.keys()  # se ho preinsert cerco tutte le inserite postume
    content_type = None
    viaggioType = ContentType.objects.get(app_label="tam", model='viaggio')
    if filterType:
        if filterType == 'fattura':
            content_type = ContentType.objects.get(app_label="fatturazione", model='fattura')
        else:
            try:
                content_type = ContentType.objects.get(app_label="tam", model=filterType)
            except ContentType.DoesNotExist:
                messages.error(request, "Tipo di oggetto da loggare non valido %s." % filterType)

    actions = ActionLog.objects.all()
    if filterUtente:  # rendo filterUtente un intero
        try:
            filterUtente = int(filterUtente)
        except:
            messages.error(request, "Utente %s non valido." % filterUtente)
            filterUtente = ""
    if filterId and content_type:  # rendo filterUtente un intero
        try:
            filterId = int(filterId)
        except:
            messages.error(request, "ID %s non valido." % filterId)
            filterId = ""
    if filterUtente:
        logging.debug("Filtro per utente %s" % filterUtente)
        actions = actions.filter(user_id=filterUtente)
    if content_type:
        logging.debug("Filtro per tipo oggetto %s" % content_type.model)
        actions = actions.filter(modelName=content_type.model)
    if filterId:
        logging.debug("Filtro per id %s" % filterId)
        actions = actions.filter(instance_id=filterId)
    if filterAction:
        actions = actions.filter(action_type=filterAction)
    if filterPreInsert:
        actions = actions.filter(modelName='viaggio')
        actions = actions.filter(action_type__in=('A', 'M'))
        actions = actions.filter(hilight=True)
    if not from_a_superuser:
        superuser_ids = User.objects.filter(is_superuser=True).values_list('id', flat=True)
        actions = actions.exclude(user_id__in=superuser_ids)  # hide superactions to normal

    # inserimento postumo se la data della corsa è precedente alla mezzanotte del
    # giorno di inserimento

    paginator = Paginator(actions, 60, orphans=3)  # pagine
    page = request.GET.get("page", 1)
    try:
        page = int(page)
    except:
        page = 1

    s = SmartPager(page, paginator.num_pages)
    paginator.smart_page_range = s.results

    try:
        thisPage = paginator.page(page)
        actions = thisPage.object_list
    # for action in actions:		# evidenzio tutti i viaggio "preInsert"
    #			if action.modelName == 'viaggio':
    #				action.preInsert = False
    #				if action.action_type in ('A', 'M'):
    #					viaggio = Viaggio.objects.get(id=action.instance_id)
    #					action.preInsert = viaggio.data < action.data.replace(hour=0, minute=0)
    except Exception:
        messages.warning(request, "La pagina %d è vuota." % page)
        thisPage = None
        actions = []

    return render(request,
                  template_name,
                  {
                      "actions": actions,
                      "today": tamdates.ita_today(),
                      "thisPage": thisPage,
                      "paginator": paginator,
                      "utenti": utenti,
                      'filterAction': filterAction,
                      "filterUtente": filterUtente,
                      "filterPreInsert": filterPreInsert,
                      "viaggioType": viaggioType
                  },
                  )
Example #5
0
def actionLog(request, template_name="actionLog.html"):
    logAndCleanExpiredSessions()
    from_a_superuser = request.user.is_superuser
    utenti = User.objects.all().order_by('username')
    if not from_a_superuser:
        utenti = utenti.exclude(
            is_superuser=True)  # normal users don't see superusers
    filterUtente = request.GET.get('user', '')
    filterType = request.GET.get('type', '')
    filterId = request.GET.get('id', '')
    filterAction = request.GET.get('action', '')
    filterPreInsert = 'preInsert' in request.GET.keys(
    )  # se ho preinsert cerco tutte le inserite postume
    content_type = None
    viaggioType = ContentType.objects.get(app_label="tam", model='viaggio')
    if filterType:
        if filterType == 'fattura':
            content_type = ContentType.objects.get(app_label="fatturazione",
                                                   model='fattura')
        else:
            try:
                content_type = ContentType.objects.get(app_label="tam",
                                                       model=filterType)
            except ContentType.DoesNotExist:
                messages.error(
                    request,
                    "Tipo di oggetto da loggare non valido %s." % filterType)

    actions = ActionLog.objects.all()
    if filterUtente:  # rendo filterUtente un intero
        try:
            filterUtente = int(filterUtente)
        except:
            messages.error(request, "Utente %s non valido." % filterUtente)
            filterUtente = ""
    if filterId and content_type:  # rendo filterUtente un intero
        try:
            filterId = int(filterId)
        except:
            messages.error(request, "ID %s non valido." % filterId)
            filterId = ""
    if filterUtente:
        logging.debug("Filtro per utente %s" % filterUtente)
        actions = actions.filter(user_id=filterUtente)
    if content_type:
        logging.debug("Filtro per tipo oggetto %s" % content_type.model)
        actions = actions.filter(modelName=content_type.model)
    if filterId:
        logging.debug("Filtro per id %s" % filterId)
        actions = actions.filter(instance_id=filterId)
    if filterAction:
        actions = actions.filter(action_type=filterAction)
    if filterPreInsert:
        actions = actions.filter(modelName='viaggio')
        actions = actions.filter(action_type__in=('A', 'M'))
        actions = actions.filter(hilight=True)
    if not from_a_superuser:
        superuser_ids = User.objects.filter(is_superuser=True).values_list(
            'id', flat=True)
        actions = actions.exclude(
            user_id__in=superuser_ids)  # hide superactions to normal

    # inserimento postumo se la data della corsa è precedente alla mezzanotte del
    # giorno di inserimento

    paginator = Paginator(actions, 60, orphans=3)  # pagine
    page = request.GET.get("page", 1)
    try:
        page = int(page)
    except:
        page = 1

    s = SmartPager(page, paginator.num_pages)
    paginator.smart_page_range = s.results

    try:
        thisPage = paginator.page(page)
        actions = thisPage.object_list
    # for action in actions:		# evidenzio tutti i viaggio "preInsert"
    #			if action.modelName == 'viaggio':
    #				action.preInsert = False
    #				if action.action_type in ('A', 'M'):
    #					viaggio = Viaggio.objects.get(id=action.instance_id)
    #					action.preInsert = viaggio.data < action.data.replace(hour=0, minute=0)
    except Exception:
        messages.warning(request, "La pagina %d è vuota." % page)
        thisPage = None
        actions = []

    return render(
        request,
        template_name,
        {
            "actions": actions,
            "today": tamdates.ita_today(),
            "thisPage": thisPage,
            "paginator": paginator,
            "utenti": utenti,
            'filterAction': filterAction,
            "filterUtente": filterUtente,
            "filterPreInsert": filterPreInsert,
            "viaggioType": viaggioType
        },
    )