示例#1
0
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)
示例#2
0
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
                          )
示例#3
0
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)
示例#4
0
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},
    )