Example #1
0
def add_object(request):  
    template = TMP_FORM
    action = "add"
    
    if request.method == "POST":
        post_query = request.POST.copy()
        form = forms.AppuntamentoForm(post_query)
        
        if form.is_valid():
            appuntamento = form.save()
            
            logger.debug("{}: aggiunto l'appuntamento {}".format(request.user, appuntamento))
            messages.add_message(request, messages.SUCCESS, 'Appuntamento aggiunto')
            if request.POST.has_key("add_another"):              
                return HttpResponseRedirect(reverse("add_appuntamento")) 
            else:
                return HttpResponseRedirect(reverse("init_appuntamento"))
    else:
        if u.is_telefonista(request.user):
            user = request.user
            profile = user.dipendente
            form = forms.AppuntamentoForm(telefonista=profile)
        else:
            form = forms.AppuntamentoForm()    

    data = {"modelform": form, "action": action,}                
    return render_to_response(template, 
                              data,
                              context_instance=RequestContext(request))
Example #2
0
def init(request):
    template = TMP_ADMIN
    if u.is_telefonista(request.user):
        user = request.user
        profile = user.dipendente
        objs = models.Appuntamento.objects.filter(agente__isnull=True,
                                                  telefonista=profile,)
    else:    
        objs = models.Appuntamento.objects.all()
    # determiniamo gli agenti per l'assegnazione, devono essere solo quelli attivi 
    # il giorno successivo
    day = datetime.datetime.today().date() + datetime.timedelta(1)
    agenti = models.Dipendente.objects.filter(ruolo="agt", 
                                              data_assunzione__lte=day)\
                                      .exclude(data_licenziamento__lt=day)
    
    initial = {}
    pag = 1
    ordering = None
    
    if request.method == "GET" and request.GET:
        query_get = request.GET.copy()
        initial = {}
        
        if query_get.has_key("pag"):
            pag = query_get["pag"]
            del query_get["pag"]
        if query_get.has_key("sort"):
            ordering = query_get["sort"]
            del query_get["sort"]
        if query_get:
            objs, initial = u.filter_objs(objs, query_get)
        
    table = tables.AppuntamentoTable(objs, order_by=(ordering,))
    table.paginate(page=pag)
    
    if request.is_ajax():
        template = table.as_html()
        return HttpResponse(template)
        
    filterform = forms.AppuntamentoFilterForm(initial=initial)
    
    data = {"modeltable": table, "filterform": filterform, "agenti": agenti}
    return render_to_response(template, data,
                              context_instance=RequestContext(request))        
Example #3
0
def mod_object(request, object_id):
    obj = get_object_or_404(models.Cliente, pk=object_id)
    
    if u.is_telefonista(request.user):
        # se l'utente connesso è un telefonista può modificare solamente clienti
        # relativi a suoi appuntamenti non ancora assegnati
        user = request.user
        profile = user.dipendente
        if (models.Appuntamento.objects.filter(cliente=obj).exclude(telefonista=profile).exists() |
            models.Appuntamento.objects.filter(agente__isnull=False, cliente=obj).exists()):
            messages.add_message(request, messages.ERROR, "Non è possibile modificare il cliente:"\
                                 " contattare l'amministratore")
            return HttpResponseRedirect(reverse("view_cliente", args=[object_id,]))
    
    template = TMP_FORM
    action = "mod"
    
    if request.method == "POST":
        post_query = request.POST.copy()
        form = forms.ClienteForm(post_query, instance=obj)
    
        if form.is_valid():
            new_obj = form.save()
            
            logger.debug("{}: modificato il cliente {} [id={}]"
                         .format(request.user, new_obj, new_obj.id))
            messages.add_message(request, messages.SUCCESS, 'Cliente modificato')
            if request.POST.has_key("add_another"):              
                return HttpResponseRedirect(reverse("add_cliente")) 
            else:
                return HttpResponseRedirect(reverse("view_cliente", args=[object_id,]))                
    else: 
        form = forms.ClienteForm(instance=obj)
    
    data = {"modelform": form, "action": action, "cliente": obj,}
    return render_to_response(template,
                              data,
                              context_instance=RequestContext(request))
Example #4
0
def init(request):
    template = TMP_HOME

    user = request.user

    today = datetime.today()
    week = ((today - timedelta(7)).date(), today.date())
    month = (today.date(), (today + timedelta(31)).date())
    # tabella prossimi appuntamenti
    if u.is_telefonista(user):
        appuntamenti = models.Appuntamento.objects.filter(data__gte=today, telefonista=user).order_by("data")
    else:
        appuntamenti = models.Appuntamento.objects.filter(data__gte=today).order_by("data")
    table_appuntamenti = tables.AppuntamentoReportTable(appuntamenti, prefix="app-", per_page_field=10)
    table_appuntamenti.order_by = request.GET.get("app-sort")
    table_appuntamenti.paginate(page=request.GET.get("app-page", 1))

    # tabella appuntamenti da richiamare
    if u.is_telefonista(user):
        appuntamenti_richiamare = models.Appuntamento.objects.filter(
            data_richiamare__gte=today, telefonista=user
        ).order_by("data")
    else:
        appuntamenti_richiamare = models.Appuntamento.objects.filter(data_richiamare__gte=today).order_by("data")
    table_appuntamenti_richiamare = tables.AppuntamentoReportTable(
        appuntamenti_richiamare, prefix="app_ric-", per_page_field=10
    )
    table_appuntamenti_richiamare.order_by = request.GET.get("app_ric-sort")
    table_appuntamenti_richiamare.paginate(page=request.GET.get("app_ric-page", 1))

    # tabella ultimi contratti
    contratti = models.Contratto.objects.filter(data_stipula__gte=week[0], data_stipula__lte=week[1]).order_by(
        "data_stipula"
    )
    table_contratti = tables.ContrattoReportTable(contratti, prefix="ctr-", per_page_field=10)
    table_contratti.order_by = request.GET.get("ctr-sort")
    table_contratti.paginate(page=request.GET.get("ctr-page", 1))

    # tabella prossimi contratti in scadenza
    contratti_scadenza = models.Contratto.objects.filter(
        data_scadenza__gte=month[0], data_scadenza__lte=month[1]
    ).order_by("-data_scadenza")
    table_contratti_scadenza = tables.ContrattoReportTable(contratti_scadenza, prefix="ctr_scd-", per_page_field=10)
    table_contratti_scadenza.order_by = request.GET.get("ctr_scd-sort")
    table_contratti_scadenza.paginate(page=request.GET.get("ctr_scd-page", 1))

    if request.is_ajax():
        data = {
            "table_appuntamenti": table_appuntamenti,
            "table_appuntamenti_richiamare": table_appuntamenti_richiamare,
            "table_contratti": table_contratti,
            "table_contratti_scadenza": table_contratti_scadenza,
        }
        return render_to_response(template, data, context_instance=RequestContext(request))

    data = {
        "table_appuntamenti": table_appuntamenti,
        "table_appuntamenti_richiamare": table_appuntamenti_richiamare,
        "table_contratti": table_contratti,
        "table_contratti_scadenza": table_contratti_scadenza,
    }
    return render_to_response(template, data, context_instance=RequestContext(request))