def main(): args = parse_args() load_config(args.conf_file) if args.instance is None: instance = None else: instance = valid_instance(args.instance) invited_badge = valid_userbadge(args.badge.decode("utf-8"), instance) creator = User.find(u"admin") if args.action == u"invite": template = valid_template(args.template) csv_data = valid_csv(args.csv_file) for user_info in csv_data: user_info[u"user_badges"].add(invited_badge) ret = user_import(csv_data, args.subject, template, creator, instance) print_invite_result(ret) elif args.action == u"reinvite": template = valid_template(args.template) users = invited_users(invited_badge, activated=False) csv_data = [ {u"email": u.email, u"user_name": u.user_name, u"display_name": u.display_name, u"user_badges": set()} for u in users ] ret = user_import(csv_data, args.subject, template, creator, instance, reinvite=True) print_invite_result(ret, reinvite=True) elif args.action == u"revoke": users = invited_users(invited_badge, activated=False) if len(users) != 0: for user in users: revoke(user) else: print (u"No users to revoke") elif args.action == u"uninvite": if len(args.users) != 0: for name in args.users: user = User.find(name) uninvite(user, invited_badge, revoke=args.revoke) else: print (u"No users to uninvite") meta.Session.commit()
def user_import(self, format="html"): if request.method == "POST": try: self.form_result = UserImportForm().to_python(request.params, state=get_user_import_state()) data = user_import( self.form_result["users_csv"], self.form_result["email_subject"], self.form_result["email_template"], c.user, c.instance, ) return render("/admin/userimport_success.html", data, overlay=format == u"overlay") except formencode.Invalid as i: return self.user_import_form(errors=i.unpack_errors()) else: return self.user_import_form(format=format)