|
1 |
| -from tinymongo import TinyMongoClient |
2 |
| -from bson.objectid import ObjectId |
| 1 | +""" |
| 2 | +Example of Flask-Admin using TinyDB with TinyMongo |
| 3 | +refer to README.txt for instructions |
3 | 4 |
|
4 |
| -from flask import Flask |
| 5 | +Author: Bruno Rocha <@rochacbruno> |
| 6 | +Based in PyMongo Example and TinyMongo |
| 7 | +""" |
5 | 8 | import flask_admin as admin
|
6 |
| - |
7 |
| -from wtforms import form, fields |
8 |
| - |
9 |
| -from flask_admin.form import Select2Widget |
| 9 | +from flask import Flask |
10 | 10 | from flask_admin.contrib.pymongo import ModelView, filters
|
11 |
| -from flask_admin.model.fields import InlineFormField, InlineFieldList |
| 11 | +from flask_admin.form import Select2Widget |
| 12 | +from flask_admin.model.fields import InlineFieldList, InlineFormField |
| 13 | +from wtforms import fields, form |
| 14 | + |
| 15 | +from tinymongo import TinyMongoClient |
12 | 16 |
|
13 | 17 | # Create application
|
14 | 18 | app = Flask(__name__)
|
15 | 19 |
|
16 | 20 | # Create dummy secrey key so we can use sessions
|
17 | 21 | app.config['SECRET_KEY'] = '123456790'
|
18 | 22 |
|
19 |
| -# Create models |
20 |
| -conn = TinyMongoClient('/tmp/flask_admin_test') |
| 23 | +# Create models in a JSON file localted at |
| 24 | + |
| 25 | +DATAFOLDER = '/tmp/flask_admin_test' |
| 26 | + |
| 27 | +conn = TinyMongoClient(DATAFOLDER) |
21 | 28 | db = conn.test
|
22 | 29 |
|
23 | 30 | # create some users for testing
|
@@ -73,22 +80,18 @@ class TweetView(ModelView):
|
73 | 80 | filters.FilterNotLike('name', 'Name'),
|
74 | 81 | filters.BooleanEqualFilter('testie', 'Testie'))
|
75 | 82 |
|
76 |
| - column_searchable_list = ('name', 'text') |
| 83 | + # column_searchable_list = ('name', 'text') |
77 | 84 |
|
78 | 85 | form = TweetForm
|
79 | 86 |
|
80 | 87 | def get_list(self, *args, **kwargs):
|
81 | 88 | count, data = super(TweetView, self).get_list(*args, **kwargs)
|
82 | 89 |
|
83 |
| - # Grab user names |
84 |
| - query = {'_id': {'$in': [x['user_id'] for x in data]}} |
85 |
| - users = db.user.find(query, fields=('name',)) |
86 |
| - |
87 |
| - # Contribute user names to the models |
88 |
| - users_map = dict((x['_id'], x['name']) for x in users) |
89 |
| - |
| 90 | + # Contribute user_name to the models |
90 | 91 | for item in data:
|
91 |
| - item['user_name'] = users_map.get(item['user_id']) |
| 92 | + item['user_name'] = db.user.find_one( |
| 93 | + {'_id': item['user_id']} |
| 94 | + )['name'] |
92 | 95 |
|
93 | 96 | return count, data
|
94 | 97 |
|
|
0 commit comments