Beispiel #1
0
def add_object(request):  
    template = TMP_FORM
    action = "add"
    
    if request.method == "POST":
        post_query = request.POST.copy()
        form = forms.DipendenteForm(post_query)
        
        if form.is_valid():
            dipendente = form.save(commit=False)
            formset = forms.RetribuzioneFormset(post_query, instance=dipendente)

            if formset.is_valid():
                new_obj = form.save()
                formset.save()        
                
                logger.debug("{}: aggiunto il dipendente {} [id={}]"
                             .format(request.user, new_obj, new_obj.id))
                messages.add_message(request, messages.SUCCESS, 'Dipendente aggiunto')
                if request.POST.has_key("add_another"):              
                    return HttpResponseRedirect(reverse("add_dipendente")) 
                else:
                    return HttpResponseRedirect(reverse("init_dipendente"))
        else:
            formset = forms.RetribuzioneFormset(post_query)
    else:
        form = forms.DipendenteForm()    
        formset = forms.RetribuzioneFormset(instance=models.Dipendente())
        # sistemiano i valori iniziali
        data = {"principale": True}
        for subform in formset.forms:
            subform.initial = data
    
    default_opts = get_default_options()
    provvigione_bonus_agente = default_opts["provvigione_bonus_agente"]
    provvigione_bonus_telefonista = default_opts["provvigione_bonus_telefonista"]
        
    data = {"modelform": form, 
            "modelformset": formset, 
            "action": action,
            "provvigione_bonus_agente": provvigione_bonus_agente,
            "provvigione_bonus_telefonista": provvigione_bonus_telefonista}                
    return render_to_response(template, 
                              data,
                              context_instance=RequestContext(request))
Beispiel #2
0
def send_report_mail(request):
    default_options = get_default_options()
    email = default_options["email_titolare"]
    if email:
        today = datetime.today().date()
        # spediamo nel testo dell'email, alcune informazioni:
        # incasso della giornata: entrate/uscite
        contratti = (
            models.Contratto.objects.filter(data_stipula=today)
            .order_by("data_stipula")
            .select_related("piano_tariffario")
        )

        # Finanze
        finances = get_daily_totals(contratti, today)
        # Classifiche
        period = u.get_current_quarter()
        contratti = models.Contratto.objects.filter(data_stipula__gte=period[0], data_stipula__lte=period[1])
        contratti_tim_telecom = contratti.exclude(pianotariffario__tariffa__gestore="edison")
        dipendenti_tim_telecom = (
            models.Dipendente.objects.filter(contratto__pk__in=contratti_tim_telecom).distinct().iterator()
        )
        ranking_tim_telecom = get_tim_telecom_ranking(contratti_tim_telecom, dipendenti_tim_telecom)
        contratti_edison = contratti.exclude(pianotariffario__tariffa__gestore="tim").exclude(
            pianotariffario__tariffa__gestore="telecom"
        )
        dipendenti_edison = models.Dipendente.objects.filter(contratto__pk__in=contratti_edison).distinct().iterator()
        ranking_edison = get_edison_ranking(contratti_edison, dipendenti_edison)
        # Obiettivi
        obiettivi = models.Obiettivo.objects.filter(data_inizio__lte=period[0])
        contratti_inviati = (
            models.Contratto.objects.filter(data_inviato__gte=period[0], data_inviato__lte=period[1], inviato=True)
            .order_by("data_inviato")
            .select_related("piano_tariffario")
        )
        ignore, goals = get_points(obiettivi, contratti_inviati)
        data = {
            "finanze": finances,
            "ranking_tim_telecom": ranking_tim_telecom,
            "ranking_edison": ranking_edison,
            "obiettivi": goals,
        }

        html_content = render_to_string("email.html", data)
        text_content = strip_tags(html_content)  # this strips the html, so people will have the text as well.

        # create the email, and attach the HTML version as well.
        subject = "Riepilogo Mobiltime {}".format(today.strftime("%d/%m/%Y"))
        from_email = "agenzia"
        to_email = email
        msg = EmailMultiAlternatives(subject, text_content, from_email, [to_email])
        msg.attach_alternative(html_content, "text/html")
        msg.send()

        logger.debug("{}: Email riepilogativa inviata".format(request.user))
        messages.add_message(request, messages.SUCCESS, "Email riepilogativa iniviata a {}".format(email))
    else:
        logger.debug("{}: modificate le opzioni iniziali".format(request.user))
        messages.add_message(
            request,
            messages.ERROR,
            "Email non iniviata: " "Inserire la password del titolare nella pagina delle opzioni",
        )
    return HttpResponseRedirect(reverse("home"))