예제 #1
0
    def notify(self, who, what, date, url, changes = None):
        recipients = []
        
        try:
            for i in who:
                e = self.__get_recipient(i)

                if e:
                    recipients += [e]
        except TypeError: # 'who' is not a list, but a single user
            e = self.__get_recipient(who)

            if e:
                recipients += [e]
                                 
        email = self.cloneTemplate(what)
        email.SetRecipients(recipients)
        body = email.GetBody();

        if changes:
            body += "\n\nList of changes:\n\n"
            for i in changes:
                body += i + (":\t" if len(i) < 8 else ":") + changes[i] + "\n"

        email.SetBody(body % (date, url))
        self.post(email)
        Notifier.notify(self)
예제 #2
0
def projects_email(request, *args, **kwds):
    if request.method == "GET":
        pcodes = request.GET.get("pcodes", None)
        pcode_list = pcodes.split(" ") if pcodes is not None else getPcodesFromFilter(request)
        pi_list, pc_list, ci_list, ob_list, fs_list = getInvestigatorEmails(pcode_list)

        templates = EmailTemplate.get_templates(pcode_list)

        return HttpResponse(
            json.dumps(
                {
                    "PI-Addresses": pi_list,
                    "PC-Addresses": pc_list,
                    "CO-I-Addresses": ci_list,
                    "OBS-Addresses": ob_list,
                    "Friend-Addresses": fs_list,
                    "PCODES": pcode_list,
                    "Templates": templates,
                }
            ),
            mimetype="text/plain",
        )

    elif request.method == "POST":
        email_key = "projects_email"
        pe_notifier = Notifier()
        em_templ = EmailMessage("*****@*****.**", "", "", "")
        pe_notifier.registerTemplate(email_key, em_templ)
        addr = str(request.POST.get("address", "")).replace(" ", "").split(",")
        subject = request.POST.get("subject", "")
        body = request.POST.get("body", "")

        email = pe_notifier.cloneTemplate(email_key)
        email.SetRecipients(addr)
        email.SetSubject(subject)
        email.SetBody(body)
        pe_notifier.post(email)
        pe_notifier.notify()

        return HttpResponse(json.dumps({"success": "ok"}), mimetype="text/plain")

    else:
        return HttpResponse(json.dumps({"error": "request.method is neither GET or POST!"}), mimetype="text/plain")