123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191 |
- import os.path as op
- from nose.tools import eq_, ok_
- from flask_admin.contrib import fileadmin
- from flask_admin import Admin
- from flask import Flask
- from . import setup
- try:
- from StringIO import StringIO
- except ImportError:
- from io import StringIO
- def create_view():
- app, admin = setup()
- class MyFileAdmin(fileadmin.FileAdmin):
- editable_extensions = ('txt',)
- path = op.join(op.dirname(__file__), 'files')
- view = MyFileAdmin(path, '/files/', name='Files')
- admin.add_view(view)
- return app, admin, view
- def test_file_admin():
- app, admin, view = create_view()
- client = app.test_client()
- # index
- rv = client.get('/admin/myfileadmin/')
- eq_(rv.status_code, 200)
- ok_('path=dummy.txt' in rv.data.decode('utf-8'))
- # edit
- rv = client.get('/admin/myfileadmin/edit/?path=dummy.txt')
- eq_(rv.status_code, 200)
- ok_('dummy.txt' in rv.data.decode('utf-8'))
- rv = client.post('/admin/myfileadmin/edit/?path=dummy.txt', data=dict(
- content='new_string'
- ))
- eq_(rv.status_code, 302)
- rv = client.get('/admin/myfileadmin/edit/?path=dummy.txt')
- eq_(rv.status_code, 200)
- ok_('dummy.txt' in rv.data.decode('utf-8'))
- ok_('new_string' in rv.data.decode('utf-8'))
- # rename
- rv = client.get('/admin/myfileadmin/rename/?path=dummy.txt')
- eq_(rv.status_code, 200)
- ok_('dummy.txt' in rv.data.decode('utf-8'))
- rv = client.post('/admin/myfileadmin/rename/?path=dummy.txt', data=dict(
- name='dummy_renamed.txt',
- path='dummy.txt'
- ))
- eq_(rv.status_code, 302)
- rv = client.get('/admin/myfileadmin/')
- eq_(rv.status_code, 200)
- ok_('path=dummy_renamed.txt' in rv.data.decode('utf-8'))
- ok_('path=dummy.txt' not in rv.data.decode('utf-8'))
- # upload
- rv = client.get('/admin/myfileadmin/upload/')
- eq_(rv.status_code, 200)
- rv = client.post('/admin/myfileadmin/upload/', data=dict(
- upload=(StringIO(""), 'dummy.txt'),
- ))
- eq_(rv.status_code, 302)
- rv = client.get('/admin/myfileadmin/')
- eq_(rv.status_code, 200)
- ok_('path=dummy.txt' in rv.data.decode('utf-8'))
- ok_('path=dummy_renamed.txt' in rv.data.decode('utf-8'))
- # delete
- rv = client.post('/admin/myfileadmin/delete/', data=dict(
- path='dummy_renamed.txt'
- ))
- eq_(rv.status_code, 302)
- rv = client.get('/admin/myfileadmin/')
- eq_(rv.status_code, 200)
- ok_('path=dummy_renamed.txt' not in rv.data.decode('utf-8'))
- ok_('path=dummy.txt' in rv.data.decode('utf-8'))
- # mkdir
- rv = client.get('/admin/myfileadmin/mkdir/')
- eq_(rv.status_code, 200)
- rv = client.post('/admin/myfileadmin/mkdir/', data=dict(
- name='dummy_dir'
- ))
- eq_(rv.status_code, 302)
- rv = client.get('/admin/myfileadmin/')
- eq_(rv.status_code, 200)
- ok_('path=dummy.txt' in rv.data.decode('utf-8'))
- ok_('path=dummy_dir' in rv.data.decode('utf-8'))
- # rename - directory
- rv = client.get('/admin/myfileadmin/rename/?path=dummy_dir')
- eq_(rv.status_code, 200)
- ok_('dummy_dir' in rv.data.decode('utf-8'))
- rv = client.post('/admin/myfileadmin/rename/?path=dummy_dir', data=dict(
- name='dummy_renamed_dir',
- path='dummy_dir'
- ))
- eq_(rv.status_code, 302)
- rv = client.get('/admin/myfileadmin/')
- eq_(rv.status_code, 200)
- ok_('path=dummy_renamed_dir' in rv.data.decode('utf-8'))
- ok_('path=dummy_dir' not in rv.data.decode('utf-8'))
- # delete - directory
- rv = client.post('/admin/myfileadmin/delete/', data=dict(
- path='dummy_renamed_dir'
- ))
- eq_(rv.status_code, 302)
- rv = client.get('/admin/myfileadmin/')
- eq_(rv.status_code, 200)
- ok_('path=dummy_renamed_dir' not in rv.data.decode('utf-8'))
- ok_('path=dummy.txt' in rv.data.decode('utf-8'))
- def test_modal_edit():
- # bootstrap 2 - test edit_modal
- app_bs2 = Flask(__name__)
- admin_bs2 = Admin(app_bs2, template_mode="bootstrap2")
- class EditModalOn(fileadmin.FileAdmin):
- edit_modal = True
- editable_extensions = ('txt',)
- class EditModalOff(fileadmin.FileAdmin):
- edit_modal = False
- editable_extensions = ('txt',)
- path = op.join(op.dirname(__file__), 'files')
- edit_modal_on = EditModalOn(path, '/files/', endpoint='edit_modal_on')
- edit_modal_off = EditModalOff(path, '/files/', endpoint='edit_modal_off')
- admin_bs2.add_view(edit_modal_on)
- admin_bs2.add_view(edit_modal_off)
- client_bs2 = app_bs2.test_client()
- # bootstrap 2 - ensure modal window is added when edit_modal is enabled
- rv = client_bs2.get('/admin/edit_modal_on/')
- eq_(rv.status_code, 200)
- data = rv.data.decode('utf-8')
- ok_('fa_modal_window' in data)
- # bootstrap 2 - test edit modal disabled
- rv = client_bs2.get('/admin/edit_modal_off/')
- eq_(rv.status_code, 200)
- data = rv.data.decode('utf-8')
- ok_('fa_modal_window' not in data)
- # bootstrap 3
- app_bs3 = Flask(__name__)
- admin_bs3 = Admin(app_bs3, template_mode="bootstrap3")
- admin_bs3.add_view(edit_modal_on)
- admin_bs3.add_view(edit_modal_off)
- client_bs3 = app_bs3.test_client()
- # bootstrap 3 - ensure modal window is added when edit_modal is enabled
- rv = client_bs3.get('/admin/edit_modal_on/')
- eq_(rv.status_code, 200)
- data = rv.data.decode('utf-8')
- ok_('fa_modal_window' in data)
- # bootstrap 3 - test modal disabled
- rv = client_bs3.get('/admin/edit_modal_off/')
- eq_(rv.status_code, 200)
- data = rv.data.decode('utf-8')
- ok_('fa_modal_window' not in data)
|