def send_team_personal_mail(request, subject, team, html_template, text_template, html_data, text_data): for user in utils.get_users(team): html_data['user'] = user text_data['user'] = user html = render_to_string(request, html_template, html_data) text = render_to_string(request, text_template, text_data) _send_team_mail(team, user.email, subject, html, text)
def digest(request, team): start_of_report_day = _get_report_day() users = utils.get_users(team) absents = [] reporters = [] for user in users: reports = user.report_set.filter('added_date >', start_of_report_day).filter('team', team).fetch(models.ALL) if reports: report = reports[-1] user.message = report.body user.local_time = dating.getLocalTime(report.added_date) reporters.append(user) else: absents.append(user) data = { 'homepage':request.build_absolute_uri("/"), 'absents':absents, 'reporters':reporters, } html = render_to_string(request, 'base_summary_mail.html', data=data) text = render_to_string(request, 'base_summary_mail.txt', data=data) send_team_common_mail('%s - daily digest (%s)' % (team.name, start_of_report_day.strftime("%A, %m/%d/%Y")), team, html, text, reply_to=False )
def send_team_common_mail(subject, team, html, text, reply_to=None): emails = map(lambda x: x.email, utils.get_users(team)) emails = filter(lambda x: x, emails) if not emails: return to = ', '.join(emails) if not to: return _send_team_mail(team, to, subject, html, text, reply_to=reply_to)
def app_admin_dashboard(request): if not request.user.is_superuser: return HttpResponseForbidden() _users = users.User.all().filter("is_active", True).order("name").fetch(models.ALL) teams = users.Team.all().filter("is_active", True).order("name").fetch(models.ALL) for team in teams: team.users = utils.get_users(team) formAddTeam = None formAddUser = None action = None if request.method == "POST" and "action" in request.POST: action = request.POST["action"] add_user_to_team = None if request.method == "POST" and "add_user_to_team" in request.POST: add_user_to_team = request.POST["add_user_to_team"] if add_user_to_team: _embed_application_admin_team_assign_user_forms(teams, request) valid = True for team in teams: form = team.assign_form if not form.is_valid(): valid = False if valid: for team in teams: form = team.assign_form f = form.fields["team"] if f.user: f.user.teams.append(team.key()) f.user.put() return HttpResponseRedirect(request.get_full_path()) if f.email: _create_user(request, f.email, f.name, [team]) return HttpResponseRedirect(request.get_full_path()) elif "add_team" == action: formAddTeam = forms.AppAdminAddTeam(request.POST) if formAddTeam.is_valid(): cleaned_data = formAddTeam.cleaned_data users.Team(name=cleaned_data["name"]).put() return HttpResponseRedirect(request.get_full_path()) elif "inactivate_teams" == action: _embed_application_admin_team_list_forms(teams, request) valid = True for team in teams: if not team.form.is_valid(): valid = False continue if valid: for team in teams: cleaned_data = team.form.cleaned_data if cleaned_data["flag"] == u"on": team.is_active = False team.put() return HttpResponseRedirect(request.get_full_path()) elif "add_user" == action: formAddUser = forms.AppAdminAddUser(request.POST) if formAddUser.is_valid(): cleaned_data = formAddUser.cleaned_data email = cleaned_data["email"] name = cleaned_data["name"] teams = users.Team.get(cleaned_data["teams"]) if teams: teams = filter(lambda x: x, teams) teams = map(lambda x: x.key(), teams) _create_user(request, email, name, teams) return HttpResponseRedirect(request.get_full_path()) elif "inactivate_users" == action: _embed_application_admin_user_list_forms(_users, request) valid = True for user in _users: if not user.form.is_valid(): valid = False continue if valid: for user in _users: cleaned_data = user.form.cleaned_data if cleaned_data["flag"] == u"on": user.is_active = False user.put() return HttpResponseRedirect(request.get_full_path()) if not formAddTeam: formAddTeam = forms.AppAdminAddTeam() if not formAddUser: formAddUser = forms.AppAdminAddUser() if teams: if not "form" in dir(teams[0]): _embed_application_admin_team_list_forms(teams) if not "assign_form" in dir(teams[0]): _embed_application_admin_team_assign_user_forms(teams) if _users and not "form" in dir(_users[0]): _embed_application_admin_user_list_forms(_users) return render_to_response( request, "teammail/app_admin_dashboard.html", data={"formAddTeam": formAddTeam, "formAddUser": formAddUser, "teams": teams, "users": _users}, )