''' open/dulcinea/lib/ui/user/mailman.qpy ''' from dulcinea.mailman import is_subscribed, subscribe, un_subscribe, get_list_realname_and_description from qp.fill.form import Form from qp.fill.html import div from qp.pub.common import get_publisher, page, redirect def add_mailing_list_registration_widgets:xml(form): for mailing_list in get_publisher().get_mailman_list_names(): realname_description = get_list_realname_and_description(mailing_list) if realname_description: list_realname, list_description = realname_description form.add_checkbox(mailing_list, value=False, title=list_realname, hint=list_description) def add_mailing_list_widget:xml(form, user, mailing_list): realname_description = get_list_realname_and_description(mailing_list) if realname_description: list_realname, list_description = realname_description if is_subscribed(user, mailing_list): title = "You are currently SUBSCRIBED to %s." % list_realname value = "Unsubscribe from %s" % list_realname else: title = "You are currently NOT subscribed to %s." % list_realname value = "Subscribe to %s" % list_realname form.add_button_submit( mailing_list, title=title, hint=list_description, value=value) def add_mailing_list_widgets(form, user): for mailing_list in get_publisher().get_mailman_list_names(): add_mailing_list_widget(form, user, mailing_list) def process_mailing_list_widget(form, user, mailing_list): if form.get(mailing_list): if is_subscribed(user, mailing_list): status, message = un_subscribe(user, mailing_list) else: status, message = subscribe(user, mailing_list) if not status: form.set_error(mailing_list, message) def process_mailing_list_widgets(form, user): for mailing_list in get_publisher().get_mailman_list_names(): process_mailing_list_widget(form, user, mailing_list) def edit_mailing_lists:xml(user): form = Form(css_class="mailing-lists", use_tokens=False) add_mailing_list_widgets(form, user) if form.is_submitted(): process_mailing_list_widgets(form, user) if not form.has_errors(): redirect('') page('Mailing Lists', div(user.get_email(), "'s Mailing Lists", css_class="mailing_lists_heading"), form.render()) def mini_edit_mailing_list:xml(user, mailing_list): form = Form(css_class="mailing-list", use_tokens=False) add_mailing_list_widget(form, user, mailing_list) if form.is_submitted(): process_mailing_list_widget(form, user, mailing_list) if not form.has_errors(): redirect('') form.render() def format_membership:xml(user): '
' for mailing_list in get_publisher().get_mailman_list_names(): realname_description = get_list_realname_and_description(mailing_list) if not realname_description: continue list_realname, list_description = realname_description '
' list_realname '
' '
' list_description '
' '
' 'Subscribed: ' if is_subscribed(user, mailing_list): 'YES' else: 'NO' '
' '
' '
'