I'm trying to code authorization for app using Flask-Mongoengine and Flask-Login. And I'm getting this weird error:
File "/usr/lib/python3.5/site-packages/mongoengine/base/document.py", line 188, in __setattr__
    super(BaseDocument, self).__setattr__(name, value)
  File "/usr/lib/python3.5/site-packages/mongoengine/base/fields.py", line 132, in __set__
    if instance._initialised:
AttributeError: _initialised
My models.py:
from app import app, db
from flask.ext.login import LoginManager
login_manager = LoginManager()
login_manager.init_app(app)
class User(db.Document):
    email = db.StringField(required=True)
    first_name = db.StringField(max_lenght=40, required=True)
    last_name = db.StringField(max_lenght=40, required=True)
    password = db.StringField(required=True)
    def __init__(self, email, first_name, last_name, password):
        self.email = email
        self.first_name = first_name
        self.last_name = last_name
        self.password = password
    def is_authenticated(self):
        return True
    def is_active(self):
        return True
    def is_anonymous(self):
        return False
   def get_id(self):
        return self.email
I've tried supering the class, but it didn't help.
https://github.com/MongoEngine/flask-mongoengine/issues/156
Mongoengine doesn't need you to define an __init__.
class User(db.Document):
    email = db.StringField(required=True)
    first_name = db.StringField(max_lenght=40, required=True)
    last_name = db.StringField(max_lenght=40, required=True)
    password = db.StringField(required=True)
    def clean(self):
        # clean will be called when you call .save()
        # You can do whatever you'd like to clean data before save
        self.password = str(self.password)
Then all you have to do is
user = User(email='email@gmail', first_name='hello', last_name='there', password=2342143213)
user.save()
print(user.id)
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With