Commit 3e2be5a2 authored by Serge S. Koval's avatar Serge S. Koval

MongoEngine filters working

parent 3d5cbae0
......@@ -4,7 +4,7 @@ from flask import Flask
from flask.ext import admin
from flask.ext.mongoengine import MongoEngine
from flask.ext.admin.contrib import mongoengine
from flask.ext.admin.contrib.mongoengine import ModelView
# Create application
app = Flask(__name__)
......@@ -18,17 +18,33 @@ db = MongoEngine()
db.init_app(app)
class User(db.Document):
name = db.StringField(max_length=40)
tag = db.StringField(max_length=20)
password = db.StringField(max_length=40)
def __unicode__(self):
return self.name
class Todo(db.Document):
title = db.StringField(max_length=60)
text = db.StringField()
done = db.BooleanField(default=False)
pub_date = db.DateTimeField(default=datetime.datetime.now)
user = db.ReferenceField(User)
# Required for administrative interface
def __unicode__(self):
return self.title
# Customized admin views
class UserView(ModelView):
column_filters = ('name',
User.tag)
# Flask views
@app.route('/')
def index():
......@@ -40,7 +56,8 @@ if __name__ == '__main__':
admin = admin.Admin(app, 'Simple Models')
# Add views
admin.add_view(mongoengine.ModelView(Todo))
admin.add_view(UserView(User))
admin.add_view(ModelView(Todo))
# Start app
app.debug = True
......
......@@ -180,7 +180,11 @@ class ModelView(BaseModelView):
query = self.model.objects
# TODO: Filters
# Filters
if self._filters:
for flt, value in filters:
f = self._filters[flt]
query = f.apply(query, value)
# Get count
count = query.count()
......
......@@ -271,7 +271,7 @@ class ModelView(BaseModelView):
f = self._filters[flt]
query = self._handle_join(query, f.column, joins)
query = self._filters[flt].apply(query, value)
query = f.apply(query, value)
# Get count
count = query.count()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment