def process_mailman(self, user, class_id, section_num, user_type):
        if not (settings.USE_MAILMAN and 'mailman_moderator' in settings.DEFAULT_EMAIL_ADDRESSES.keys()):
            return
        try:
            cls = ClassSubject.objects.get(id=int(class_id))
            section = filter(lambda s: s.index() == int(section_num), cls.sections.all())[0]
        except:
            return

        # Create a section list in Mailman,
        # then bounce this e-mail off to it

        list_name = "%s-%s" % (section.emailcode(), user_type)

        create_list(list_name, settings.DEFAULT_EMAIL_ADDRESSES['mailman_moderator'])
        load_list_settings(list_name, "lists/class_mailman.config")

        if user_type != "teachers":
            add_list_members(list_name, section.students())

            apply_list_settings(list_name, {
                'moderator': [
                    settings.DEFAULT_EMAIL_ADDRESSES['mailman_moderator'],
                    '%s-teachers@%s' % (cls.emailcode(),
                                        Site.objects.get_current().domain),
                    # In theory this is redundant, but it's included just in
                    # case.
                    cls.parent_program.director_email,
                ],
                'owner': [
                    settings.DEFAULT_EMAIL_ADDRESSES['mailman_moderator'],
                    cls.parent_program.director_email,
                ],
                'subject_prefix': "[%s]" % (cls.parent_program.niceName(),),
            })
            logger.info("Settings applied...")
            send_mail("[ESP] Activated class mailing list: %s@%s" % (list_name, Site.objects.get_current().domain),
                      render_to_string("mailman/new_list_intro_teachers.txt",
                                       { 'classname': str(cls),
                                         'mod_password': set_list_moderator_password(list_name) }),
                      settings.DEFAULT_EMAIL_ADDRESSES['default'], ["%s-teachers@%s" % (cls.emailcode(), Site.objects.get_current().domain), ])
        else:
            apply_list_settings(list_name, {'default_member_moderation': False})
            apply_list_settings(list_name, {'generic_nonmember_action': 0})
            apply_list_settings(list_name, {'acceptable_aliases': "%s.*-(students|class)-.*@%s" % (cls.emailcode(), Site.objects.get_current().domain)})
            apply_list_settings(list_name, {'subject_prefix': "[%s]" % (cls.parent_program.niceName(),)})

        logger.info("Settings applied still...")
        add_list_member(list_name, cls.parent_program.director_email)
        add_list_members(list_name, cls.get_teachers())
        if 'archive' in settings.DEFAULT_EMAIL_ADDRESSES:
            add_list_member(list_name, settings.DEFAULT_EMAIL_ADDRESSES['archive'])
        logger.info("Members added")

        self.recipients = ["%s@%s" % (list_name, Site.objects.get_current().domain)]
        self.send = True
Beispiel #2
0
    def process_mailman(self, user, class_id, user_type):
        try:
            cls = ClassSubject.objects.get(id=class_id)
            sections = cls.sections.all()
        except ESPUser.DoesNotExist:
            return

        # Create a class list in Mailman,
        # then bounce this e-mail off to it

        list_name = "%s-%s" % (cls.emailcode(), user_type)

        create_list(list_name, "*****@*****.**")
        load_list_settings(list_name, "lists/class_mailman.config")

        if user_type != "teachers":
            for section in sections:
                add_list_member(list_name,
                                [x.email for x in section.students()])

            apply_list_settings(
                list_name, {
                    'moderator': [
                        '*****@*****.**',
                        '*****@*****.**' % cls.emailcode()
                    ]
                })
            send_mail(
                "[ESP] Activated class mailing list: %[email protected]" %
                list_name,
                render_to_string(
                    "mailman/new_list_intro_teachers.txt", {
                        'classname': str(cls),
                        'mod_password': set_list_moderator_password(list_name)
                    }), "*****@*****.**", [
                        "*****@*****.**" % cls.emailcode(),
                    ])
        else:
            apply_list_settings(list_name,
                                {'default_member_moderation': False})
            apply_list_settings(list_name, {'generic_nonmember_action': 0})
            apply_list_settings(
                list_name, {
                    'acceptable_aliases':
                    "%s.*-students-.*@esp.mit.edu" % (cls.emailcode(), )
                })

        add_list_member(list_name, [cls.parent_program.director_email])
        add_list_member(list_name, [x.email for x in cls.teachers()])

        self.recipients = ["*****@*****.**" % list_name]

        self.send = True
Beispiel #3
0
    def process_mailman(self, user, class_id, section_num, user_type):
        if not (settings.USE_MAILMAN and 'mailman_moderator' in settings.DEFAULT_EMAIL_ADDRESSES.keys()):
            return
        try:
            cls = ClassSubject.objects.get(id=int(class_id))
            section = filter(lambda s: s.index() == int(section_num), cls.sections.all())[0]
        except:
            return

        # Create a section list in Mailman,
        # then bounce this e-mail off to it

        list_name = "%s-%s" % (section.emailcode(), user_type)

        create_list(list_name, settings.DEFAULT_EMAIL_ADDRESSES['mailman_moderator'])
        load_list_settings(list_name, "lists/class_mailman.config")

        if user_type != "teachers":
            add_list_member(list_name, ["%s %s <%s>" % (x.first_name, x.last_name, x.email, ) for x in section.students()])

            apply_list_settings(list_name, {'moderator': [settings.DEFAULT_EMAIL_ADDRESSES['mailman_moderator'], '%s-teachers@%s' % (cls.emailcode(), Site.objects.get_current().domain)]})
            if DEBUG: print "Settings applied..."
            send_mail("[ESP] Activated class mailing list: %s@%s" % (list_name, Site.objects.get_current().domain),
                      render_to_string("mailman/new_list_intro_teachers.txt", 
                                       { 'classname': str(cls),
                                         'mod_password': set_list_moderator_password(list_name) }),
                      settings.DEFAULT_EMAIL_ADDRESSES['default'], ["%s-teachers@%s" % (cls.emailcode(), Site.objects.get_current().domain), ])
        else:
            apply_list_settings(list_name, {'default_member_moderation': False})
            apply_list_settings(list_name, {'generic_nonmember_action': 0})
            apply_list_settings(list_name, {'acceptable_aliases': "%s.*-students-.*@%s" % (cls.emailcode(), Site.objects.get_current().domain)})

        if DEBUG: print "Settings applied still..."
        add_list_member(list_name, [cls.parent_program.director_email])
        add_list_member(list_name, [x.email for x in cls.teachers()])
        if 'archive' in settings.DEFAULT_EMAIL_ADDRESSES:
            add_list_member(list_name, settings.DEFAULT_EMAIL_ADDRESSES['archive'])
        if DEBUG: print "Members added"

        self.recipients = ["*****@*****.**" % list_name]
        self.send = True
Beispiel #4
0
    def process_mailman(self, user, class_id, user_type):
        if not (settings.USE_MAILMAN and 'mailman_moderator'
                in settings.DEFAULT_EMAIL_ADDRESSES.keys()):
            return
        try:
            cls = ClassSubject.objects.get(id=class_id)
            sections = cls.sections.all()
        except ESPUser.DoesNotExist:
            return

        # Create a class list in Mailman,
        # then bounce this e-mail off to it

        list_name = "%s-%s" % (cls.emailcode(), user_type)

        create_list(list_name,
                    settings.DEFAULT_EMAIL_ADDRESSES['mailman_moderator'])
        load_list_settings(list_name, "lists/class_mailman.config")

        if user_type != "teachers":
            for section in sections:
                add_list_member(list_name, [
                    "%s %s <%s>" % (
                        x.first_name,
                        x.last_name,
                        x.email,
                    ) for x in section.students()
                ])

            apply_list_settings(
                list_name, {
                    'moderator': [
                        settings.DEFAULT_EMAIL_ADDRESSES['mailman_moderator'],
                        '%s-teachers@%s' %
                        (cls.emailcode(), Site.objects.get_current().domain)
                    ]
                })
            send_mail(
                "[ESP] Activated class mailing list: %s@%s" %
                (list_name, Site.objects.get_current().domain),
                render_to_string(
                    "mailman/new_list_intro_teachers.txt", {
                        'classname': str(cls),
                        'mod_password': set_list_moderator_password(list_name)
                    }), settings.DEFAULT_EMAIL_ADDRESSES['default'], [
                        "%s-teachers@%s" %
                        (cls.emailcode(), Site.objects.get_current().domain),
                    ])
        else:
            apply_list_settings(list_name,
                                {'default_member_moderation': False})
            apply_list_settings(list_name, {'generic_nonmember_action': 0})
            apply_list_settings(
                list_name, {
                    'acceptable_aliases':
                    "%s.*-(students|class)-.*@%s" %
                    (cls.emailcode(), Site.objects.get_current().domain)
                })

        add_list_member(list_name, [cls.parent_program.director_email])
        add_list_member(list_name, [x.email for x in cls.get_teachers()])
        if 'archive' in settings.DEFAULT_EMAIL_ADDRESSES:
            add_list_member(list_name,
                            settings.DEFAULT_EMAIL_ADDRESSES['archive'])

        self.recipients = [
            "%s@%s" % (list_name, Site.objects.get_current().domain)
        ]

        self.send = True
Beispiel #5
0
    def process_mailman(self, user, class_id, section_num, user_type):
        if not (settings.USE_MAILMAN and 'mailman_moderator'
                in settings.DEFAULT_EMAIL_ADDRESSES.keys()):
            return
        try:
            cls = ClassSubject.objects.get(id=int(class_id))
            section = filter(lambda s: s.index() == int(section_num),
                             cls.sections.all())[0]
        except:
            return

        # Create a section list in Mailman,
        # then bounce this e-mail off to it

        list_name = "%s-%s" % (section.emailcode(), user_type)

        create_list(list_name,
                    settings.DEFAULT_EMAIL_ADDRESSES['mailman_moderator'])
        load_list_settings(list_name, "lists/class_mailman.config")

        if user_type != "teachers":
            add_list_members(list_name, section.students())

            apply_list_settings(
                list_name,
                {
                    'moderator': [
                        settings.DEFAULT_EMAIL_ADDRESSES['mailman_moderator'],
                        '%s-teachers@%s' %
                        (cls.emailcode(), Site.objects.get_current().domain),
                        # In theory this is redundant, but it's included just in
                        # case.
                        cls.parent_program.director_email,
                    ],
                    'owner': [
                        settings.DEFAULT_EMAIL_ADDRESSES['mailman_moderator'],
                        cls.parent_program.director_email,
                    ],
                    'subject_prefix':
                    "[%s]" % (cls.parent_program.niceName(), ),
                })
            logger.info("Settings applied...")
            send_mail(
                "[ESP] Activated class mailing list: %s@%s" %
                (list_name, Site.objects.get_current().domain),
                render_to_string(
                    "mailman/new_list_intro_teachers.txt", {
                        'classname': str(cls),
                        'mod_password': set_list_moderator_password(list_name)
                    }), settings.DEFAULT_EMAIL_ADDRESSES['default'], [
                        "%s-teachers@%s" %
                        (cls.emailcode(), Site.objects.get_current().domain),
                    ])
        else:
            apply_list_settings(list_name,
                                {'default_member_moderation': False})
            apply_list_settings(list_name, {'generic_nonmember_action': 0})
            apply_list_settings(
                list_name, {
                    'acceptable_aliases':
                    "%s.*-(students|class)-.*@%s" %
                    (cls.emailcode(), Site.objects.get_current().domain)
                })
            apply_list_settings(
                list_name,
                {'subject_prefix': "[%s]" % (cls.parent_program.niceName(), )})

        logger.info("Settings applied still...")
        add_list_member(list_name, cls.parent_program.director_email)
        add_list_members(list_name, cls.get_teachers())
        if 'archive' in settings.DEFAULT_EMAIL_ADDRESSES:
            add_list_member(list_name,
                            settings.DEFAULT_EMAIL_ADDRESSES['archive'])
        logger.info("Members added")

        self.recipients = [
            "%s@%s" % (list_name, Site.objects.get_current().domain)
        ]
        self.send = True