flask-mongoengine icon indicating copy to clipboard operation
flask-mongoengine copied to clipboard

How to use current_user in model_form

Open spitzbubchen opened this issue 7 years ago • 3 comments

I need to filter a select menu showing only groups in a user's company. With sqlalchemy there was the QuerySelectField, however, this does not seem to be available in flask-mongoengine. Ideally, I would like to pass flask_login current_user to model_form as follows:

wtfUser = model_form(User, wtf.Form, exclude=[ 'password'], field_args = {
	'group' : { 'queryset': Group.objects(company = current_user.group.company) },
	'roles' : { 'queryset': Role.objects(name__ne = 'admin').order_by('name') }
})

However, since this places current_user outside the request context this results in errors. Does anyone have a clever idea on how to do this?

spitzbubchen avatar Dec 13 '16 07:12 spitzbubchen

Hm, can "queryset" accept a function and execute it during runtime vs during the definition of the model form? If not, I guess you'll have to construct those querysets at the time of the request.

wojcikstefan avatar Dec 13 '16 15:12 wojcikstefan

Not really sure as I can find very little documentation on "queryset". I have also posted this on stackoverflow. This should be maybe relabeled as a question.

spitzbubchen avatar Dec 16 '16 02:12 spitzbubchen

Here is my solution on stackoverflow. If you feel this can't be addressed in wtforms please feel free to close.

spitzbubchen avatar Aug 20 '17 18:08 spitzbubchen