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))
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))
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))
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))