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