def perform_request_join_group(uid, grpID, group_name, search, ln=CFG_SITE_LANG): """Join group. @param grpID: list of the groups the user wants to join, only one value must be selected among the two group lists (default group list, group list resulting from the search) @param group_name: name of the group entered if search on name performed @param search=1 if search performed else 0 @param ln: language @return: a (body, errors[], warnings[]) formed tuple warnings != [] if 0 or more than one group is selected """ _ = gettext_set_language(ln) body = "" warnings = [] errors = [] infos = [] if "-1" in grpID: grpID = filter(lambda x: x != "-1", grpID) if len(grpID) == 1: grpID = int(grpID[0]) # test if user is already member or pending status = db.get_user_status(uid, grpID) if status: warnings.append("WRN_WEBSESSION_ALREADY_MEMBER") (body, errors, warnings) = perform_request_groups_display( uid, infos=infos, errors=errors, warnings=warnings, ln=ln ) # insert new user of group else: group_infos = db.get_group_infos(grpID) group_type = group_infos[0][3] if group_type == CFG_WEBSESSION_GROUP_JOIN_POLICY["VISIBLEMAIL"]: db.insert_new_member(uid, grpID, CFG_WEBSESSION_USERGROUP_STATUS["PENDING"]) admin = db.get_users_by_status(grpID, CFG_WEBSESSION_USERGROUP_STATUS["ADMIN"])[0][1] group_name = group_infos[0][1] msg_subjet, msg_body = websession_templates.tmpl_admin_msg(group_name=group_name, grpID=grpID, ln=ln) (body, errors, warnings, dummy, dummy) = perform_request_send( uid, msg_to_user=admin, msg_to_group="", msg_subject=msg_subjet, msg_body=msg_body, ln=ln ) infos.append(CFG_WEBSESSION_INFO_MESSAGES["JOIN_REQUEST"]) elif group_type == CFG_WEBSESSION_GROUP_JOIN_POLICY["VISIBLEOPEN"]: db.insert_new_member(uid, grpID, CFG_WEBSESSION_USERGROUP_STATUS["MEMBER"]) infos.append(CFG_WEBSESSION_INFO_MESSAGES["JOIN_GROUP"]) (body, errors, warnings) = perform_request_groups_display( uid, infos=infos, errors=errors, warnings=warnings, ln=ln ) else: warnings.append("WRN_WEBSESSION_MULTIPLE_GROUPS") (body, errors, warnings) = perform_request_input_join_group(uid, group_name, search, warnings, ln) return (body, errors, warnings)
def perform_request_manage_member(uid, grpID, infos=[], warnings=[], ln=CFG_SITE_LANG): """Return html for managing group's members. @param uid: user ID @param grpID: ID of the group @param info: info about last user action @param warnings: warnings @param ln: language @return: a (body, errors[], warnings[]) formed tuple """ body = '' errors = [] _ = gettext_set_language(ln) user_status = db.get_user_status(uid, grpID) if not len(user_status): errors.append('ERR_WEBSESSION_DB_ERROR') return (body, errors, warnings) elif user_status[0][0] != CFG_WEBSESSION_USERGROUP_STATUS['ADMIN']: errors.append(('ERR_WEBSESSION_GROUP_NO_RIGHTS',)) return (body, errors, warnings) group_infos = db.get_group_infos(grpID) if not len(group_infos): errors.append('ERR_WEBSESSION_DB_ERROR') return (body, errors, warnings) members = db.get_users_by_status(grpID, CFG_WEBSESSION_USERGROUP_STATUS["MEMBER"]) pending_members = db.get_users_by_status(grpID, CFG_WEBSESSION_USERGROUP_STATUS["PENDING"]) body = websession_templates.tmpl_display_manage_member(grpID=grpID, group_name=group_infos[0][1], members=members, pending_members=pending_members, warnings=warnings, infos=infos, ln=ln) return (body, errors, warnings)
def perform_request_join_group(uid, grpID, group_name, search, ln=CFG_SITE_LANG): """Join group. @param grpID: list of the groups the user wants to join, only one value must be selected among the two group lists (default group list, group list resulting from the search) @param group_name: name of the group entered if search on name performed @param search=1 if search performed else 0 @param ln: language @return: body with warnings warnings != [] if 0 or more than one group is selected """ _ = gettext_set_language(ln) body = "" warnings = [] infos = [] if "-1" in grpID: grpID = filter(lambda x: x != '-1', grpID) if len(grpID) == 1: grpID = int(grpID[0]) # test if user is already member or pending status = db.get_user_status(uid, grpID) if status: try: raise InvenioWebSessionWarning( _('You are already member of the group.')) except InvenioWebSessionWarning, exc: register_exception(stream='warning') warnings.append(exc.message) body = perform_request_groups_display(uid, infos=infos, warnings=warnings, ln=ln) # insert new user of group else: group_infos = db.get_group_infos(grpID) group_type = group_infos[0][3] if group_type == CFG_WEBSESSION_GROUP_JOIN_POLICY["VISIBLEMAIL"]: db.insert_new_member( uid, grpID, CFG_WEBSESSION_USERGROUP_STATUS["PENDING"]) admin = db.get_users_by_status( grpID, CFG_WEBSESSION_USERGROUP_STATUS["ADMIN"])[0][1] group_name = group_infos[0][1] msg_subjet, msg_body = websession_templates.tmpl_admin_msg( group_name=group_name, grpID=grpID, ln=ln) (body, dummy, dummy) = \ perform_request_send(uid, msg_to_user=admin, msg_to_group="", msg_subject=msg_subjet, msg_body=msg_body, ln=ln) infos.append(CFG_WEBSESSION_INFO_MESSAGES["JOIN_REQUEST"]) elif group_type == CFG_WEBSESSION_GROUP_JOIN_POLICY["VISIBLEOPEN"]: db.insert_new_member(uid, grpID, CFG_WEBSESSION_USERGROUP_STATUS["MEMBER"]) infos.append(CFG_WEBSESSION_INFO_MESSAGES["JOIN_GROUP"]) body = perform_request_groups_display(uid, infos=infos, warnings=warnings, ln=ln)
raise InvenioWebSessionError( _('Sorry, you do not have sufficient rights on this group.')) except InvenioWebSessionError, exc: register_exception() body = websession_templates.tmpl_error(exc.message, ln) return body group_infos = db.get_group_infos(grpID) if not len(group_infos): try: raise InvenioWebSessionError( _('Sorry, there was an error with the database.')) except InvenioWebSessionError, exc: register_exception() body = websession_templates.tmpl_error(exc.message, ln) return body members = db.get_users_by_status(grpID, CFG_WEBSESSION_USERGROUP_STATUS["MEMBER"]) pending_members = db.get_users_by_status( grpID, CFG_WEBSESSION_USERGROUP_STATUS["PENDING"]) body = websession_templates.tmpl_display_manage_member( grpID=grpID, group_name=group_infos[0][1], members=members, pending_members=pending_members, warnings=warnings, infos=infos, ln=ln) return body def perform_request_remove_member(uid, grpID, member_id, ln=CFG_SITE_LANG):
elif user_status[0][0] != CFG_WEBSESSION_USERGROUP_STATUS["ADMIN"]: try: raise InvenioWebSessionError(_("Sorry, you do not have sufficient rights on this group.")) except InvenioWebSessionError, exc: register_exception() body = websession_templates.tmpl_error(exc.message, ln) return body group_infos = db.get_group_infos(grpID) if not len(group_infos): try: raise InvenioWebSessionError(_("Sorry, there was an error with the database.")) except InvenioWebSessionError, exc: register_exception() body = websession_templates.tmpl_error(exc.message, ln) return body members = db.get_users_by_status(grpID, CFG_WEBSESSION_USERGROUP_STATUS["MEMBER"]) pending_members = db.get_users_by_status(grpID, CFG_WEBSESSION_USERGROUP_STATUS["PENDING"]) body = websession_templates.tmpl_display_manage_member( grpID=grpID, group_name=group_infos[0][1], members=members, pending_members=pending_members, warnings=warnings, infos=infos, ln=ln, ) return body def perform_request_remove_member(uid, grpID, member_id, ln=CFG_SITE_LANG):
def perform_request_join_group(uid, grpID, group_name, search, ln=CFG_SITE_LANG): """Join group. @param grpID: list of the groups the user wants to join, only one value must be selected among the two group lists (default group list, group list resulting from the search) @param group_name: name of the group entered if search on name performed @param search=1 if search performed else 0 @param ln: language @return: body with warnings warnings != [] if 0 or more than one group is selected """ _ = gettext_set_language(ln) body = "" warnings = [] infos = [] if "-1" in grpID: grpID = filter(lambda x: x != '-1', grpID) if len(grpID)==1 : grpID = int(grpID[0]) # test if user is already member or pending status = db.get_user_status(uid, grpID) if status: try: raise InvenioWebSessionWarning(_('You are already member of the group.')) except InvenioWebSessionWarning, exc: register_exception(stream='warning') warnings.append(exc.message) body = perform_request_groups_display(uid, infos=infos, warnings=warnings, ln=ln) # insert new user of group else: group_infos = db.get_group_infos(grpID) group_type = group_infos[0][3] if group_type == CFG_WEBSESSION_GROUP_JOIN_POLICY["VISIBLEMAIL"]: db.insert_new_member(uid, grpID, CFG_WEBSESSION_USERGROUP_STATUS["PENDING"]) admin = db.get_users_by_status(grpID, CFG_WEBSESSION_USERGROUP_STATUS["ADMIN"])[0][1] group_name = group_infos[0][1] msg_subjet, msg_body = websession_templates.tmpl_admin_msg( group_name=group_name, grpID=grpID, ln=ln) (body, dummy, dummy) = \ perform_request_send(uid, msg_to_user=admin, msg_to_group="", msg_subject=msg_subjet, msg_body=msg_body, ln=ln) infos.append(CFG_WEBSESSION_INFO_MESSAGES["JOIN_REQUEST"]) elif group_type == CFG_WEBSESSION_GROUP_JOIN_POLICY["VISIBLEOPEN"]: db.insert_new_member(uid, grpID, CFG_WEBSESSION_USERGROUP_STATUS["MEMBER"]) infos.append(CFG_WEBSESSION_INFO_MESSAGES["JOIN_GROUP"]) body = perform_request_groups_display(uid, infos=infos, warnings=warnings, ln=ln)