Fehler beim Ausweitung von RegisterForm in Flaschensicherheit

Ich erlebe Schwierigkeiten bei der Erweiterung der Registrierung aparatus der Kolben-Sicherheit.

Ich habe das RegisterForm erweitert:

class ExtendedRegisterForm(RegisterForm): payroll_no = IntegerField('Payroll Number', validators=[DataRequired(message=(u'Please include a payroll number'))]) firstname = TextField('First Name') surname = TextField('Surname') position = QuerySelectField(u'Position', query_factory=getPosition, get_label='name', allow_blank=False) mobile = TextField('Mobile', [InputRequired(), is_10]) 

Ich versuche, register_user () aus einer Ansicht aufzurufen (ich habe SECURITY_REGISTERABLE deaktiviert) und direkt zu meiner eigenen Registrierungsseite.

Während es gut ist, bekomme ich den folgenden Fehler:

 TypeError: "register_user() got an unexpected keyword argument 'surname'" 

Mein Benutzermodell passt zu meinem Formular:

 class User(db.Model, UserMixin): id = db.Column(db.Integer, primary_key=True) email = db.Column(db.String(80), unique=True) password = db.Column(db.String) active = db.Column(db.Boolean()) confirmed_at = db.Column(db.DateTime()) firstname = db.Column(db.String(20)) surname = db.Column(db.String(30)) position_id = db.Column(db.Integer, db.ForeignKey('position.id')) mobile = db.Column(db.String) payroll_no = db.Column(db.Integer) 

Unterstützung am meisten geschätzt.

Leider ist die Antwort (ich bin ziemlich sicher) nicht in den Umzug in einen Kontext-Prozessor oder eine andere Lösung zu lügen: Mein Projekt hat mehrere "Splash" -Seiten und ich brauche eine Möglichkeit, eine bestimmte Rolle zu setzen, um diesen Benutzer auf der Art, wie sie zu bekommen Die Registrierungsseite; Dh. Benutzer, der die Website A benötigt Rolle A, Benutzer, der Website B gefunden hat, braucht Rolle B.

One Solution collect form web for “Fehler beim Ausweitung von RegisterForm in Flaschensicherheit”

Die Lösung war sehr einfach. Ich habe alle notwendigen Registrierungskomponenten importiert und die folgende Funktion aufgerufen und das Formular übergeben. Da ich mehrere Konten habe (da die App als Backend für mehrere Standorte fungiert), gebe ich auch eine Account_id Integer, so dass der Benutzer mit dem richtigen Account verknüpft wird.

 from project import app, db, security, user_datastore from project.models import User from flask.ext.security.confirmable import generate_confirmation_link from flask.ext.security.utils import do_flash, get_message, config_value, send_mail, encrypt_password from flask.ext.security.signals import user_registered from flask import current_app def register_my_user(form, account_id): form_data = form.to_dict() form_data['password']=encrypt_password(form_data['password']) user = user_datastore.create_user(**form_data) user.account_id = account_id db.session.commit() confirmation_link, token = generate_confirmation_link(user) do_flash(*get_message('CONFIRM_REGISTRATION', email=user.email)) user_registered.send(current_app._get_current_object(), user=user, confirm_token=token) if config_value('SEND_REGISTER_EMAIL'): send_mail(config_value('EMAIL_SUBJECT_REGISTER'), user.email, 'welcome', user=user, confirmation_link=confirmation_link) 

Hier in der Hoffnung, dass es von Nutzen für Leute sein kann, die versuchen, die Benutzerregistrierungskomponenten der Kolben-Sicherheit zu dekonstruieren

  • Python - Kann keine Anfragen installieren [Sicherheit]: Operation nicht erlaubt
  • Flask App-Verzeichnis und Berechtigungen
  • Markieren Sie die Daten als sensibel in Python
  • Unwaschbarer Typfehler beim Ändern von SqlAlchemy Modellen
  • Warum ist python decode ersetzt mehr als die ungültigen Bytes aus einer codierten Zeichenfolge?
  • Sichere Anmeldeinformationen in Python
  • Mit ast und whitelists zu machen python's eval () sicher?
  • Wie funktioniert python-keyring unter Windows?
  • Kein Signal von Flask-Sicherheit
  • Sicherung der Kommunikation [Authentizität, Datenschutz & Integrität] mit mobiler App?
  • Sichere Optionen zum Speichern von Openssl-Passwort auf einem Server (Linux, Python, CherryPy)
  • Python ist die beste Programmiersprache der Welt.