Giter Site home page Giter Site logo

cosmic-byte / flask-restplus-boilerplate Goto Github PK

View Code? Open in Web Editor NEW
658.0 26.0 240.0 32 KB

A boilerplate for flask restful web service

Python 98.59% Makefile 1.41%
flask flask-api flask-restplus sqlalchemy migration makefile jwt-authentication blueprint

flask-restplus-boilerplate's Introduction

FLASK RESTX BOILER-PLATE WITH JWT

Terminal commands

Note: make sure you have pip and virtualenv installed.

Initial installation: make install

To run test: make tests

To run application: make run

To run all commands at once : make all

Make sure to run the initial migration commands to update the database.

> python manage.py db init

> python manage.py db migrate --message 'initial database migration'

> python manage.py db upgrade

Viewing the app

Open the following url on your browser to view swagger documentation
http://127.0.0.1:5000/

Using Postman

Authorization header is in the following format:

Key: Authorization
Value: "token_generated_during_login"

For testing authorization, url for getting all user requires an admin token while url for getting a single
user by public_id requires just a regular authentication.

Full description and guide

https://medium.freecodecamp.org/structuring-a-flask-restplus-web-service-for-production-builds-c2ec676de563

Contributing

If you want to contribute to this flask restplus boilerplate, clone the repository and just start making pull requests.

https://github.com/cosmic-byte/flask-restplus-boilerplate.git

flask-restplus-boilerplate's People

Contributors

abiodunjames avatar bonjarber avatar cosmic-byte avatar dependabot[bot] avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

flask-restplus-boilerplate's Issues

2 Q about blueprints url_prefix & manage.py imports

Hi,

first:
I want to add a prefix to each blueprint I create like /api/v1/ but when I edit the line
blueprint = Blueprint('api', __name__) in app/__init__.py' to blueprint = Blueprint('api', __name__, url_prefix='/api/v1/') then run the tests, they fail! Even if I prefixed the URLs in the test functions by /api/v1/.

would you please recommend the right way to do so?

second:
May I ask why did you add these imports from app.main.model import user, blacklist into manage.py? I don't see any use for them there. If there is, would you please illustrate?

Thanks in advance.

[Q] How to create admin user

Hi,

First of all I need to thank you for this project and the helpful guide.
I was able to follow it to the end but I am unable to create an admin user, maybe I am missing something.

The only idea I had was to edit the controller to allow entering whether it's admin or not and once created reverit it, but I don't think it's a good solution.

Thanks in advance

make all error

Hi. I'm clone code to local. So I using run all commands at once : make all. error in image
image

Reading config value in controller

Hi,

First of all thank you very much for such a great boilerplate. I'm facing an issue that i would like to know your thoughts about.

I've created a logging service in Service package which is in main package. Here is the content of loggingservice.

import logging 
from datetime import datetime
from logging.handlers import TimedRotatingFileHandler
import app

def get_logger(name):
    log_format = app.config['LOGGING_MESSAGE_FORMAT']
    time_rotating_file_handler = TimedRotatingFileHandler("logs/SIB.log", when="midnight", interval=1)
    time_rotating_file_handler.setLevel(logging.DEBUG)
    time_rotating_file_handler.setFormatter(logging.Formatter(log_format))
    logging.getLogger(name).addHandler(time_rotating_file_handler)
    return logging.getLogger(name)

Now i want to get_logger in controller. Here is how i've used it in auth_controller

from ..service.logging_service import get_logger

_logger = get_logger(__name__)

@api.route('/login')
class Login(Resource):
    @api.doc('user_login')
    @api.expect(_login, validate=True)
    def post(self):
        _logger.error("Logging Test")

For brevity I've removed unwanted code from auth_controller.

Now the problem is that when i try to run application it tries to run auth_controller first, which crashes due the fact that we haven't initiate the config object on app. It is initiated when create_app is called from manage.py.

Can you kindly suggest what can be done to resolve this issue?

Regards

Missing code snippets in the guide

While reading the guide, I see that the code snippets are missing for some reason, such as this:
image

Is there a way to get them, I would love to follow up with the guide.

Thanks a lot for your effort.

How to host in Windows IIS 10.0?

I have manage simple flask app on windows IIS and it works. Sample web.config of normal flask app that work:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <system.webServer>
        <modules>
            <remove name="WebDAVModule" />
        </modules>
        <handlers>
            <add name="Python FastCGI" path="*" verb="*" modules="FastCgiModule" 
            scriptProcessor="C:\Users\Vimalraj\AppData\Local\Programs\Python\Python36\python.exe|C:\Users\Vimalraj\AppData\Local\Programs\Python\Python36\Lib\site-packages\wfastcgi.py" resourceType="Unspecified" requireAccess="Script" />
        </handlers>
            <directoryBrowse enabled="true" />
    </system.webServer>
    <appSettings>
        <add key="WSGI_HANDLER" value="myapp2.manager" />
        <add key="PYTHONPATH" value="C:\API\facemaskapi\" />
    </appSettings>
</configuration>

But when I try with this flask-restplus-boilerplate it is not working. The web.config of the not working flask app:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <system.webServer>
        <modules>
            <remove name="WebDAVModule" />
        </modules>
        <handlers>
            <add name="Python FastCGI" path="*" verb="*" modules="FastCgiModule" 
            scriptProcessor="C:\Users\Vimalraj\AppData\Local\Programs\Python\Python36\python.exe|C:\Users\Vimalraj\AppData\Local\Programs\Python\Python36\Lib\site-packages\wfastcgi.py" resourceType="Unspecified" requireAccess="Script" />
        </handlers>
            <directoryBrowse enabled="true" />
    </system.webServer>
    <appSettings>
        <add key="WSGI_HANDLER" value="manage.manager" />
        <add key="PYTHONPATH" value="C:\RESTFULAPI\API\" />
    </appSettings>
</configuration>

For the working version, the script name is "myapp2.py" and have "manager= Flask(name)" thus the WSGI_HANDLER value is "myapp2.manager".

I am not sure what should I put on the web.config of the not working version, currently the value is "manage.manager" where the script name is "manage.py" and I suspect "manager" is the startup line in the code.

My main line is as below:

if name == 'main':
manager.run(default_command="run")

run command as below:

@manager.command
def run():
app.run(host='127.0.0.1',port=7071)

Please help me in this Thank You.

Not working

I just installed all required packages mentioned in this example. but it is not working on running manage.py

Command : - python manage.py run

image

image

Using PostgreSQL, results failing tests

Using Postgres, and results in failing tests.

Ideas on how to fix?

/home/sm/PycharmProjects/REST-API/venv/bin/python /home/sm/PycharmProjects/REST-API/manage.py test
test_non_registered_user_login (test_auth.TestAuthBlueprint)
Test for login of non-registered user ... 2019-02-10 09:07:51,551 INFO sqlalchemy.engine.base.Engine SELECT CAST('test plain returns' AS VARCHAR(60)) AS anon_1
2019-02-10 09:07:51,551 INFO sqlalchemy.engine.base.Engine ()
2019-02-10 09:07:51,551 INFO sqlalchemy.engine.base.Engine SELECT CAST('test unicode returns' AS VARCHAR(60)) AS anon_1
2019-02-10 09:07:51,551 INFO sqlalchemy.engine.base.Engine ()
2019-02-10 09:07:51,551 INFO sqlalchemy.engine.base.Engine PRAGMA table_info("blacklist_tokens")
2019-02-10 09:07:51,551 INFO sqlalchemy.engine.base.Engine ()
2019-02-10 09:07:51,552 INFO sqlalchemy.engine.base.Engine PRAGMA table_info("api_users")
2019-02-10 09:07:51,552 INFO sqlalchemy.engine.base.Engine ()
2019-02-10 09:07:51,552 INFO sqlalchemy.engine.base.Engine PRAGMA table_info("discord_channels")
2019-02-10 09:07:51,552 INFO sqlalchemy.engine.base.Engine ()
2019-02-10 09:07:51,552 INFO sqlalchemy.engine.base.Engine PRAGMA table_info("discord_messages")
2019-02-10 09:07:51,552 INFO sqlalchemy.engine.base.Engine ()
2019-02-10 09:07:51,552 INFO sqlalchemy.engine.base.Engine PRAGMA table_info("Users_Profile")
2019-02-10 09:07:51,552 INFO sqlalchemy.engine.base.Engine ()
2019-02-10 09:07:51,553 INFO sqlalchemy.engine.base.Engine PRAGMA table_info("Users")
2019-02-10 09:07:51,553 INFO sqlalchemy.engine.base.Engine ()
ERROR
test_registered_user_login (test_auth.TestAuthBlueprint)
Test for login of registered-user login ... 2019-02-10 09:07:51,556 INFO sqlalchemy.engine.base.Engine PRAGMA table_info("blacklist_tokens")
2019-02-10 09:07:51,556 INFO sqlalchemy.engine.base.Engine ()
2019-02-10 09:07:51,557 INFO sqlalchemy.engine.base.Engine PRAGMA table_info("api_users")
2019-02-10 09:07:51,557 INFO sqlalchemy.engine.base.Engine ()
2019-02-10 09:07:51,557 INFO sqlalchemy.engine.base.Engine PRAGMA table_info("discord_channels")
2019-02-10 09:07:51,557 INFO sqlalchemy.engine.base.Engine ()
2019-02-10 09:07:51,557 INFO sqlalchemy.engine.base.Engine PRAGMA table_info("discord_messages")
2019-02-10 09:07:51,557 INFO sqlalchemy.engine.base.Engine ()
2019-02-10 09:07:51,557 INFO sqlalchemy.engine.base.Engine PRAGMA table_info("Users_Profile")
2019-02-10 09:07:51,557 INFO sqlalchemy.engine.base.Engine ()
2019-02-10 09:07:51,557 INFO sqlalchemy.engine.base.Engine PRAGMA table_info("Users")
2019-02-10 09:07:51,557 INFO sqlalchemy.engine.base.Engine ()
2019-02-10 09:07:51,559 INFO sqlalchemy.engine.base.Engine PRAGMA table_info("blacklist_tokens")
2019-02-10 09:07:51,559 INFO sqlalchemy.engine.base.Engine ()
2019-02-10 09:07:51,559 INFO sqlalchemy.engine.base.Engine PRAGMA table_info("api_users")
2019-02-10 09:07:51,559 INFO sqlalchemy.engine.base.Engine ()
2019-02-10 09:07:51,560 INFO sqlalchemy.engine.base.Engine PRAGMA table_info("discord_channels")
2019-02-10 09:07:51,560 INFO sqlalchemy.engine.base.Engine ()
2019-02-10 09:07:51,560 INFO sqlalchemy.engine.base.Engine PRAGMA table_info("discord_messages")
2019-02-10 09:07:51,560 INFO sqlalchemy.engine.base.Engine ()
2019-02-10 09:07:51,560 INFO sqlalchemy.engine.base.Engine PRAGMA table_info("Users_Profile")
2019-02-10 09:07:51,560 INFO sqlalchemy.engine.base.Engine ()
2019-02-10 09:07:51,560 INFO sqlalchemy.engine.base.Engine PRAGMA table_info("Users")
2019-02-10 09:07:51,560 INFO sqlalchemy.engine.base.Engine ()
2019-02-10 09:07:51,561 INFO sqlalchemy.engine.base.Engine PRAGMA table_info("blacklist_tokens")
2019-02-10 09:07:51,562 INFO sqlalchemy.engine.base.Engine ()
2019-02-10 09:07:51,562 INFO sqlalchemy.engine.base.Engine PRAGMA table_info("api_users")
2019-02-10 09:07:51,562 INFO sqlalchemy.engine.base.Engine ()
2019-02-10 09:07:51,562 INFO sqlalchemy.engine.base.Engine PRAGMA table_info("discord_channels")
2019-02-10 09:07:51,562 INFO sqlalchemy.engine.base.Engine ()
2019-02-10 09:07:51,562 INFO sqlalchemy.engine.base.Engine PRAGMA table_info("discord_messages")
2019-02-10 09:07:51,562 INFO sqlalchemy.engine.base.Engine ()
2019-02-10 09:07:51,562 INFO sqlalchemy.engine.base.Engine PRAGMA table_info("Users_Profile")
2019-02-10 09:07:51,562 INFO sqlalchemy.engine.base.Engine ()
2019-02-10 09:07:51,563 INFO sqlalchemy.engine.base.Engine PRAGMA table_info("Users")
2019-02-10 09:07:51,563 INFO sqlalchemy.engine.base.Engine ()
ERROR
test_registered_with_already_registered_user (test_auth.TestAuthBlueprint)
Test registration with already registered email ... ERROR
test_registration (test_auth.TestAuthBlueprint)
Test for user registration ... ERROR
2019-02-10 09:07:51,564 INFO sqlalchemy.engine.base.Engine PRAGMA table_info("blacklist_tokens")
2019-02-10 09:07:51,564 INFO sqlalchemy.engine.base.Engine ()
test_valid_blacklisted_token_logout (test_auth.TestAuthBlueprint)
Test for logout after a valid token gets blacklisted ... 2019-02-10 09:07:51,564 INFO sqlalchemy.engine.base.Engine PRAGMA table_info("api_users")
2019-02-10 09:07:51,564 INFO sqlalchemy.engine.base.Engine ()
2019-02-10 09:07:51,564 INFO sqlalchemy.engine.base.Engine PRAGMA table_info("discord_channels")
2019-02-10 09:07:51,564 INFO sqlalchemy.engine.base.Engine ()
2019-02-10 09:07:51,564 INFO sqlalchemy.engine.base.Engine PRAGMA table_info("discord_messages")
2019-02-10 09:07:51,564 INFO sqlalchemy.engine.base.Engine ()
2019-02-10 09:07:51,565 INFO sqlalchemy.engine.base.Engine PRAGMA table_info("Users_Profile")
2019-02-10 09:07:51,565 INFO sqlalchemy.engine.base.Engine ()
2019-02-10 09:07:51,565 INFO sqlalchemy.engine.base.Engine PRAGMA table_info("Users")
2019-02-10 09:07:51,565 INFO sqlalchemy.engine.base.Engine ()
ERROR
2019-02-10 09:07:51,566 INFO sqlalchemy.engine.base.Engine PRAGMA table_info("blacklist_tokens")
2019-02-10 09:07:51,566 INFO sqlalchemy.engine.base.Engine ()
2019-02-10 09:07:51,566 INFO sqlalchemy.engine.base.Engine PRAGMA table_info("api_users")
2019-02-10 09:07:51,566 INFO sqlalchemy.engine.base.Engine ()
test_valid_logout (test_auth.TestAuthBlueprint)
Test for logout before token expires ... 2019-02-10 09:07:51,566 INFO sqlalchemy.engine.base.Engine PRAGMA table_info("discord_channels")
2019-02-10 09:07:51,567 INFO sqlalchemy.engine.base.Engine ()
2019-02-10 09:07:51,567 INFO sqlalchemy.engine.base.Engine PRAGMA table_info("discord_messages")
2019-02-10 09:07:51,567 INFO sqlalchemy.engine.base.Engine ()
2019-02-10 09:07:51,567 INFO sqlalchemy.engine.base.Engine PRAGMA table_info("Users_Profile")
2019-02-10 09:07:51,567 INFO sqlalchemy.engine.base.Engine ()
2019-02-10 09:07:51,567 INFO sqlalchemy.engine.base.Engine PRAGMA table_info("Users")
2019-02-10 09:07:51,567 INFO sqlalchemy.engine.base.Engine ()
ERROR
test_app_is_development (test_config.TestDevelopmentConfig) ... ok
test_app_is_production (test_config.TestProductionConfig) ... ok
test_app_is_testing (test_config.TestTestingConfig) ... ok
test_decode_auth_token (test_user_medol.TestUserModel) ... ERROR
test_encode_auth_token (test_user_medol.TestUserModel) ... ERROR

======================================================================
ERROR: test_non_registered_user_login (test_auth.TestAuthBlueprint)
Test for login of non-registered user
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/visitors.py", line 86, in _compiler_dispatch
    meth = getter(visitor)
AttributeError: 'SQLiteTypeCompiler' object has no attribute 'visit_JSON'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 2790, in visit_create_table
    create_column, first_pk=column.primary_key and not first_pk
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 341, in process
    return obj._compiler_dispatch(self, **kwargs)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/visitors.py", line 90, in _compiler_dispatch
    return meth(self, **kw)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 2822, in visit_create_column
    text = self.get_column_specification(column, first_pk=first_pk)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/dialects/sqlite/base.py", line 906, in get_column_specification
    column.type, type_expression=column
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 391, in process
    return type_._compiler_dispatch(self, **kw)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/visitors.py", line 88, in _compiler_dispatch
    raise exc.UnsupportedCompilationError(visitor, cls)
sqlalchemy.exc.UnsupportedCompilationError: Compiler <sqlalchemy.dialects.sqlite.base.SQLiteTypeCompiler object at 0x7f6261350438> can't render element of type <class 'sqlalchemy.sql.sqltypes.JSON'>

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/sm/PycharmProjects/REST-API/app/test/base.py", line 14, in setUp
    db.create_all()
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/flask_sqlalchemy/__init__.py", line 963, in create_all
    self._execute_for_all_tables(app, bind, 'create_all')
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/flask_sqlalchemy/__init__.py", line 955, in _execute_for_all_tables
    op(bind=self.get_engine(app, bind), **extra)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/schema.py", line 4200, in create_all
    ddl.SchemaGenerator, self, checkfirst=checkfirst, tables=tables
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 2011, in _run_visitor
    conn._run_visitor(visitorcallable, element, **kwargs)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 1599, in _run_visitor
    visitorcallable(self.dialect, self, **kwargs).traverse_single(element)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/visitors.py", line 130, in traverse_single
    return meth(obj, **kw)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/ddl.py", line 779, in visit_metadata
    _is_metadata_operation=True,
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/visitors.py", line 130, in traverse_single
    return meth(obj, **kw)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/ddl.py", line 824, in visit_table
    include_foreign_key_constraints,
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 980, in execute
    return meth(self, multiparams, params)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/ddl.py", line 72, in _execute_on_connection
    return connection._execute_ddl(self, multiparams, params)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 1035, in _execute_ddl
    else None,
  File "<string>", line 1, in <lambda>
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/elements.py", line 448, in compile
    return self._compiler(dialect, bind=bind, **kw)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/ddl.py", line 29, in _compiler
    return dialect.ddl_compiler(dialect, self, **kw)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 310, in __init__
    self.string = self.process(self.statement, **compile_kwargs)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 341, in process
    return obj._compiler_dispatch(self, **kwargs)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/visitors.py", line 90, in _compiler_dispatch
    return meth(self, **kw)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 2802, in visit_create_table
    % (table.description, column.name, ce.args[0])
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/util/compat.py", line 296, in raise_from_cause
    reraise(type(exception), exception, tb=exc_tb, cause=cause)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/util/compat.py", line 276, in reraise
    raise value.with_traceback(tb)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 2790, in visit_create_table
    create_column, first_pk=column.primary_key and not first_pk
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 341, in process
    return obj._compiler_dispatch(self, **kwargs)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/visitors.py", line 90, in _compiler_dispatch
    return meth(self, **kw)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 2822, in visit_create_column
    text = self.get_column_specification(column, first_pk=first_pk)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/dialects/sqlite/base.py", line 906, in get_column_specification
    column.type, type_expression=column
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 391, in process
    return type_._compiler_dispatch(self, **kw)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/visitors.py", line 88, in _compiler_dispatch
    raise exc.UnsupportedCompilationError(visitor, cls)
sqlalchemy.exc.CompileError: (in table 'Users', column 'Roles'): Compiler <sqlalchemy.dialects.sqlite.base.SQLiteTypeCompiler object at 0x7f6261350438> can't render element of type <class 'sqlalchemy.sql.sqltypes.JSON'>

======================================================================
ERROR: test_registered_user_login (test_auth.TestAuthBlueprint)
Test for login of registered-user login
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/visitors.py", line 86, in _compiler_dispatch
    meth = getter(visitor)
AttributeError: 'SQLiteTypeCompiler' object has no attribute 'visit_JSON'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 2790, in visit_create_table
    create_column, first_pk=column.primary_key and not first_pk
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 341, in process
    return obj._compiler_dispatch(self, **kwargs)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/visitors.py", line 90, in _compiler_dispatch
    return meth(self, **kw)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 2822, in visit_create_column
    text = self.get_column_specification(column, first_pk=first_pk)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/dialects/sqlite/base.py", line 906, in get_column_specification
    column.type, type_expression=column
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 391, in process
    return type_._compiler_dispatch(self, **kw)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/visitors.py", line 88, in _compiler_dispatch
    raise exc.UnsupportedCompilationError(visitor, cls)
sqlalchemy.exc.UnsupportedCompilationError: Compiler <sqlalchemy.dialects.sqlite.base.SQLiteTypeCompiler object at 0x7f6261350438> can't render element of type <class 'sqlalchemy.sql.sqltypes.JSON'>

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/sm/PycharmProjects/REST-API/app/test/base.py", line 14, in setUp
    db.create_all()
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/flask_sqlalchemy/__init__.py", line 963, in create_all
    self._execute_for_all_tables(app, bind, 'create_all')
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/flask_sqlalchemy/__init__.py", line 955, in _execute_for_all_tables
    op(bind=self.get_engine(app, bind), **extra)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/schema.py", line 4200, in create_all
    ddl.SchemaGenerator, self, checkfirst=checkfirst, tables=tables
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 2011, in _run_visitor
    conn._run_visitor(visitorcallable, element, **kwargs)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 1599, in _run_visitor
    visitorcallable(self.dialect, self, **kwargs).traverse_single(element)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/visitors.py", line 130, in traverse_single
    return meth(obj, **kw)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/ddl.py", line 779, in visit_metadata
    _is_metadata_operation=True,
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/visitors.py", line 130, in traverse_single
    return meth(obj, **kw)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/ddl.py", line 824, in visit_table
    include_foreign_key_constraints,
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 980, in execute
    return meth(self, multiparams, params)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/ddl.py", line 72, in _execute_on_connection
    return connection._execute_ddl(self, multiparams, params)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 1035, in _execute_ddl
    else None,
  File "<string>", line 1, in <lambda>
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/elements.py", line 448, in compile
    return self._compiler(dialect, bind=bind, **kw)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/ddl.py", line 29, in _compiler
    return dialect.ddl_compiler(dialect, self, **kw)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 310, in __init__
    self.string = self.process(self.statement, **compile_kwargs)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 341, in process
    return obj._compiler_dispatch(self, **kwargs)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/visitors.py", line 90, in _compiler_dispatch
    return meth(self, **kw)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 2802, in visit_create_table
    % (table.description, column.name, ce.args[0])
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/util/compat.py", line 296, in raise_from_cause
    reraise(type(exception), exception, tb=exc_tb, cause=cause)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/util/compat.py", line 276, in reraise
    raise value.with_traceback(tb)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 2790, in visit_create_table
    create_column, first_pk=column.primary_key and not first_pk
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 341, in process
    return obj._compiler_dispatch(self, **kwargs)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/visitors.py", line 90, in _compiler_dispatch
    return meth(self, **kw)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 2822, in visit_create_column
    text = self.get_column_specification(column, first_pk=first_pk)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/dialects/sqlite/base.py", line 906, in get_column_specification
    column.type, type_expression=column
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 391, in process
    return type_._compiler_dispatch(self, **kw)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/visitors.py", line 88, in _compiler_dispatch
    raise exc.UnsupportedCompilationError(visitor, cls)
sqlalchemy.exc.CompileError: (in table 'Users', column 'Roles'): Compiler <sqlalchemy.dialects.sqlite.base.SQLiteTypeCompiler object at 0x7f6261350438> can't render element of type <class 'sqlalchemy.sql.sqltypes.JSON'>

======================================================================
ERROR: test_registered_with_already_registered_user (test_auth.TestAuthBlueprint)
Test registration with already registered email
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/visitors.py", line 86, in _compiler_dispatch
    meth = getter(visitor)
AttributeError: 'SQLiteTypeCompiler' object has no attribute 'visit_JSON'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 2790, in visit_create_table
    create_column, first_pk=column.primary_key and not first_pk
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 341, in process
    return obj._compiler_dispatch(self, **kwargs)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/visitors.py", line 90, in _compiler_dispatch
    return meth(self, **kw)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 2822, in visit_create_column
    text = self.get_column_specification(column, first_pk=first_pk)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/dialects/sqlite/base.py", line 906, in get_column_specification
    column.type, type_expression=column
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 391, in process
    return type_._compiler_dispatch(self, **kw)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/visitors.py", line 88, in _compiler_dispatch
    raise exc.UnsupportedCompilationError(visitor, cls)
sqlalchemy.exc.UnsupportedCompilationError: Compiler <sqlalchemy.dialects.sqlite.base.SQLiteTypeCompiler object at 0x7f6261350438> can't render element of type <class 'sqlalchemy.sql.sqltypes.JSON'>

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/sm/PycharmProjects/REST-API/app/test/base.py", line 14, in setUp
    db.create_all()
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/flask_sqlalchemy/__init__.py", line 963, in create_all
    self._execute_for_all_tables(app, bind, 'create_all')
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/flask_sqlalchemy/__init__.py", line 955, in _execute_for_all_tables
    op(bind=self.get_engine(app, bind), **extra)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/schema.py", line 4200, in create_all
    ddl.SchemaGenerator, self, checkfirst=checkfirst, tables=tables
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 2011, in _run_visitor
    conn._run_visitor(visitorcallable, element, **kwargs)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 1599, in _run_visitor
    visitorcallable(self.dialect, self, **kwargs).traverse_single(element)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/visitors.py", line 130, in traverse_single
    return meth(obj, **kw)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/ddl.py", line 779, in visit_metadata
    _is_metadata_operation=True,
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/visitors.py", line 130, in traverse_single
    return meth(obj, **kw)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/ddl.py", line 824, in visit_table
    include_foreign_key_constraints,
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 980, in execute
    return meth(self, multiparams, params)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/ddl.py", line 72, in _execute_on_connection
    return connection._execute_ddl(self, multiparams, params)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 1035, in _execute_ddl
    else None,
  File "<string>", line 1, in <lambda>
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/elements.py", line 448, in compile
    return self._compiler(dialect, bind=bind, **kw)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/ddl.py", line 29, in _compiler
    return dialect.ddl_compiler(dialect, self, **kw)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 310, in __init__
    self.string = self.process(self.statement, **compile_kwargs)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 341, in process
    return obj._compiler_dispatch(self, **kwargs)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/visitors.py", line 90, in _compiler_dispatch
    return meth(self, **kw)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 2802, in visit_create_table
    % (table.description, column.name, ce.args[0])
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/util/compat.py", line 296, in raise_from_cause
    reraise(type(exception), exception, tb=exc_tb, cause=cause)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/util/compat.py", line 276, in reraise
    raise value.with_traceback(tb)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 2790, in visit_create_table
    create_column, first_pk=column.primary_key and not first_pk
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 341, in process
    return obj._compiler_dispatch(self, **kwargs)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/visitors.py", line 90, in _compiler_dispatch
    return meth(self, **kw)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 2822, in visit_create_column
    text = self.get_column_specification(column, first_pk=first_pk)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/dialects/sqlite/base.py", line 906, in get_column_specification
    column.type, type_expression=column
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 391, in process
    return type_._compiler_dispatch(self, **kw)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/visitors.py", line 88, in _compiler_dispatch
    raise exc.UnsupportedCompilationError(visitor, cls)
sqlalchemy.exc.CompileError: (in table 'Users', column 'Roles'): Compiler <sqlalchemy.dialects.sqlite.base.SQLiteTypeCompiler object at 0x7f6261350438> can't render element of type <class 'sqlalchemy.sql.sqltypes.JSON'>

======================================================================
ERROR: test_registration (test_auth.TestAuthBlueprint)
Test for user registration
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/visitors.py", line 86, in _compiler_dispatch
    meth = getter(visitor)
AttributeError: 'SQLiteTypeCompiler' object has no attribute 'visit_JSON'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 2790, in visit_create_table
    create_column, first_pk=column.primary_key and not first_pk
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 341, in process
    return obj._compiler_dispatch(self, **kwargs)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/visitors.py", line 90, in _compiler_dispatch
    return meth(self, **kw)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 2822, in visit_create_column
    text = self.get_column_specification(column, first_pk=first_pk)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/dialects/sqlite/base.py", line 906, in get_column_specification
    column.type, type_expression=column
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 391, in process
    return type_._compiler_dispatch(self, **kw)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/visitors.py", line 88, in _compiler_dispatch
    raise exc.UnsupportedCompilationError(visitor, cls)
sqlalchemy.exc.UnsupportedCompilationError: Compiler <sqlalchemy.dialects.sqlite.base.SQLiteTypeCompiler object at 0x7f6261350438> can't render element of type <class 'sqlalchemy.sql.sqltypes.JSON'>

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/sm/PycharmProjects/REST-API/app/test/base.py", line 14, in setUp
    db.create_all()
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/flask_sqlalchemy/__init__.py", line 963, in create_all
    self._execute_for_all_tables(app, bind, 'create_all')
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/flask_sqlalchemy/__init__.py", line 955, in _execute_for_all_tables
    op(bind=self.get_engine(app, bind), **extra)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/schema.py", line 4200, in create_all
    ddl.SchemaGenerator, self, checkfirst=checkfirst, tables=tables
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 2011, in _run_visitor
    conn._run_visitor(visitorcallable, element, **kwargs)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 1599, in _run_visitor
    visitorcallable(self.dialect, self, **kwargs).traverse_single(element)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/visitors.py", line 130, in traverse_single
    return meth(obj, **kw)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/ddl.py", line 779, in visit_metadata
    _is_metadata_operation=True,
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/visitors.py", line 130, in traverse_single
    return meth(obj, **kw)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/ddl.py", line 824, in visit_table
    include_foreign_key_constraints,
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 980, in execute
    return meth(self, multiparams, params)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/ddl.py", line 72, in _execute_on_connection
    return connection._execute_ddl(self, multiparams, params)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 1035, in _execute_ddl
    else None,
  File "<string>", line 1, in <lambda>
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/elements.py", line 448, in compile
    return self._compiler(dialect, bind=bind, **kw)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/ddl.py", line 29, in _compiler
    return dialect.ddl_compiler(dialect, self, **kw)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 310, in __init__
    self.string = self.process(self.statement, **compile_kwargs)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 341, in process
    return obj._compiler_dispatch(self, **kwargs)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/visitors.py", line 90, in _compiler_dispatch
    return meth(self, **kw)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 2802, in visit_create_table
    % (table.description, column.name, ce.args[0])
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/util/compat.py", line 296, in raise_from_cause
    reraise(type(exception), exception, tb=exc_tb, cause=cause)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/util/compat.py", line 276, in reraise
    raise value.with_traceback(tb)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 2790, in visit_create_table
    create_column, first_pk=column.primary_key and not first_pk
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 341, in process
    return obj._compiler_dispatch(self, **kwargs)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/visitors.py", line 90, in _compiler_dispatch
    return meth(self, **kw)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 2822, in visit_create_column
    text = self.get_column_specification(column, first_pk=first_pk)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/dialects/sqlite/base.py", line 906, in get_column_specification
    column.type, type_expression=column
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 391, in process
    return type_._compiler_dispatch(self, **kw)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/visitors.py", line 88, in _compiler_dispatch
    raise exc.UnsupportedCompilationError(visitor, cls)
sqlalchemy.exc.CompileError: (in table 'Users', column 'Roles'): Compiler <sqlalchemy.dialects.sqlite.base.SQLiteTypeCompiler object at 0x7f6261350438> can't render element of type <class 'sqlalchemy.sql.sqltypes.JSON'>

======================================================================
ERROR: test_valid_blacklisted_token_logout (test_auth.TestAuthBlueprint)
Test for logout after a valid token gets blacklisted
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/visitors.py", line 86, in _compiler_dispatch
    meth = getter(visitor)
AttributeError: 'SQLiteTypeCompiler' object has no attribute 'visit_JSON'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 2790, in visit_create_table
    create_column, first_pk=column.primary_key and not first_pk
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 341, in process
    return obj._compiler_dispatch(self, **kwargs)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/visitors.py", line 90, in _compiler_dispatch
    return meth(self, **kw)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 2822, in visit_create_column
    text = self.get_column_specification(column, first_pk=first_pk)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/dialects/sqlite/base.py", line 906, in get_column_specification
    column.type, type_expression=column
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 391, in process
    return type_._compiler_dispatch(self, **kw)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/visitors.py", line 88, in _compiler_dispatch
    raise exc.UnsupportedCompilationError(visitor, cls)
sqlalchemy.exc.UnsupportedCompilationError: Compiler <sqlalchemy.dialects.sqlite.base.SQLiteTypeCompiler object at 0x7f6261350438> can't render element of type <class 'sqlalchemy.sql.sqltypes.JSON'>

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/sm/PycharmProjects/REST-API/app/test/base.py", line 14, in setUp
    db.create_all()
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/flask_sqlalchemy/__init__.py", line 963, in create_all
    self._execute_for_all_tables(app, bind, 'create_all')
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/flask_sqlalchemy/__init__.py", line 955, in _execute_for_all_tables
    op(bind=self.get_engine(app, bind), **extra)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/schema.py", line 4200, in create_all
    ddl.SchemaGenerator, self, checkfirst=checkfirst, tables=tables
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 2011, in _run_visitor
    conn._run_visitor(visitorcallable, element, **kwargs)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 1599, in _run_visitor
    visitorcallable(self.dialect, self, **kwargs).traverse_single(element)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/visitors.py", line 130, in traverse_single
    return meth(obj, **kw)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/ddl.py", line 779, in visit_metadata
    _is_metadata_operation=True,
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/visitors.py", line 130, in traverse_single
    return meth(obj, **kw)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/ddl.py", line 824, in visit_table
    include_foreign_key_constraints,
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 980, in execute
    return meth(self, multiparams, params)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/ddl.py", line 72, in _execute_on_connection
    return connection._execute_ddl(self, multiparams, params)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 1035, in _execute_ddl
    else None,
  File "<string>", line 1, in <lambda>
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/elements.py", line 448, in compile
    return self._compiler(dialect, bind=bind, **kw)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/ddl.py", line 29, in _compiler
    return dialect.ddl_compiler(dialect, self, **kw)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 310, in __init__
    self.string = self.process(self.statement, **compile_kwargs)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 341, in process
    return obj._compiler_dispatch(self, **kwargs)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/visitors.py", line 90, in _compiler_dispatch
    return meth(self, **kw)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 2802, in visit_create_table
    % (table.description, column.name, ce.args[0])
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/util/compat.py", line 296, in raise_from_cause
    reraise(type(exception), exception, tb=exc_tb, cause=cause)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/util/compat.py", line 276, in reraise
    raise value.with_traceback(tb)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 2790, in visit_create_table
    create_column, first_pk=column.primary_key and not first_pk
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 341, in process
    return obj._compiler_dispatch(self, **kwargs)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/visitors.py", line 90, in _compiler_dispatch
    return meth(self, **kw)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 2822, in visit_create_column
    text = self.get_column_specification(column, first_pk=first_pk)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/dialects/sqlite/base.py", line 906, in get_column_specification
    column.type, type_expression=column
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 391, in process
    return type_._compiler_dispatch(self, **kw)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/visitors.py", line 88, in _compiler_dispatch
    raise exc.UnsupportedCompilationError(visitor, cls)
sqlalchemy.exc.CompileError: (in table 'Users', column 'Roles'): Compiler <sqlalchemy.dialects.sqlite.base.SQLiteTypeCompiler object at 0x7f6261350438> can't render element of type <class 'sqlalchemy.sql.sqltypes.JSON'>

======================================================================
ERROR: test_valid_logout (test_auth.TestAuthBlueprint)
Test for logout before token expires
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/visitors.py", line 86, in _compiler_dispatch
    meth = getter(visitor)
AttributeError: 'SQLiteTypeCompiler' object has no attribute 'visit_JSON'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 2790, in visit_create_table
    create_column, first_pk=column.primary_key and not first_pk
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 341, in process
    return obj._compiler_dispatch(self, **kwargs)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/visitors.py", line 90, in _compiler_dispatch
    return meth(self, **kw)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 2822, in visit_create_column
    text = self.get_column_specification(column, first_pk=first_pk)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/dialects/sqlite/base.py", line 906, in get_column_specification
    column.type, type_expression=column
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 391, in process
    return type_._compiler_dispatch(self, **kw)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/visitors.py", line 88, in _compiler_dispatch
    raise exc.UnsupportedCompilationError(visitor, cls)
sqlalchemy.exc.UnsupportedCompilationError: Compiler <sqlalchemy.dialects.sqlite.base.SQLiteTypeCompiler object at 0x7f6261350438> can't render element of type <class 'sqlalchemy.sql.sqltypes.JSON'>

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/sm/PycharmProjects/REST-API/app/test/base.py", line 14, in setUp
    db.create_all()
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/flask_sqlalchemy/__init__.py", line 963, in create_all
    self._execute_for_all_tables(app, bind, 'create_all')
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/flask_sqlalchemy/__init__.py", line 955, in _execute_for_all_tables
    op(bind=self.get_engine(app, bind), **extra)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/schema.py", line 4200, in create_all
    ddl.SchemaGenerator, self, checkfirst=checkfirst, tables=tables
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 2011, in _run_visitor
    conn._run_visitor(visitorcallable, element, **kwargs)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 1599, in _run_visitor
    visitorcallable(self.dialect, self, **kwargs).traverse_single(element)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/visitors.py", line 130, in traverse_single
    return meth(obj, **kw)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/ddl.py", line 779, in visit_metadata
    _is_metadata_operation=True,
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/visitors.py", line 130, in traverse_single
    return meth(obj, **kw)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/ddl.py", line 824, in visit_table
    include_foreign_key_constraints,
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 980, in execute
    return meth(self, multiparams, params)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/ddl.py", line 72, in _execute_on_connection
    return connection._execute_ddl(self, multiparams, params)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 1035, in _execute_ddl
    else None,
  File "<string>", line 1, in <lambda>
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/elements.py", line 448, in compile
    return self._compiler(dialect, bind=bind, **kw)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/ddl.py", line 29, in _compiler
    return dialect.ddl_compiler(dialect, self, **kw)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 310, in __init__
    self.string = self.process(self.statement, **compile_kwargs)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 341, in process
    return obj._compiler_dispatch(self, **kwargs)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/visitors.py", line 90, in _compiler_dispatch
    return meth(self, **kw)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 2802, in visit_create_table
    % (table.description, column.name, ce.args[0])
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/util/compat.py", line 296, in raise_from_cause
    reraise(type(exception), exception, tb=exc_tb, cause=cause)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/util/compat.py", line 276, in reraise
    raise value.with_traceback(tb)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 2790, in visit_create_table
    create_column, first_pk=column.primary_key and not first_pk
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 341, in process
    return obj._compiler_dispatch(self, **kwargs)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/visitors.py", line 90, in _compiler_dispatch
    return meth(self, **kw)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 2822, in visit_create_column
    text = self.get_column_specification(column, first_pk=first_pk)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/dialects/sqlite/base.py", line 906, in get_column_specification
    column.type, type_expression=column
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 391, in process
    return type_._compiler_dispatch(self, **kw)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/visitors.py", line 88, in _compiler_dispatch
    raise exc.UnsupportedCompilationError(visitor, cls)
sqlalchemy.exc.CompileError: (in table 'Users', column 'Roles'): Compiler <sqlalchemy.dialects.sqlite.base.SQLiteTypeCompiler object at 0x7f6261350438> can't render element of type <class 'sqlalchemy.sql.sqltypes.JSON'>

======================================================================
ERROR: test_decode_auth_token (test_user_medol.TestUserModel)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/visitors.py", line 86, in _compiler_dispatch
    meth = getter(visitor)
AttributeError: 'SQLiteTypeCompiler' object has no attribute 'visit_JSON'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 2790, in visit_create_table
    create_column, first_pk=column.primary_key and not first_pk
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 341, in process
    return obj._compiler_dispatch(self, **kwargs)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/visitors.py", line 90, in _compiler_dispatch
    return meth(self, **kw)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 2822, in visit_create_column
    text = self.get_column_specification(column, first_pk=first_pk)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/dialects/sqlite/base.py", line 906, in get_column_specification
    column.type, type_expression=column
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 391, in process
    return type_._compiler_dispatch(self, **kw)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/visitors.py", line 88, in _compiler_dispatch
    raise exc.UnsupportedCompilationError(visitor, cls)
sqlalchemy.exc.UnsupportedCompilationError: Compiler <sqlalchemy.dialects.sqlite.base.SQLiteTypeCompiler object at 0x7f6261340a90> can't render element of type <class 'sqlalchemy.sql.sqltypes.JSON'>

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/sm/PycharmProjects/REST-API/app/test/base.py", line 14, in setUp
    db.create_all()
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/flask_sqlalchemy/__init__.py", line 963, in create_all
    self._execute_for_all_tables(app, bind, 'create_all')
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/flask_sqlalchemy/__init__.py", line 955, in _execute_for_all_tables
    op(bind=self.get_engine(app, bind), **extra)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/schema.py", line 4200, in create_all
    ddl.SchemaGenerator, self, checkfirst=checkfirst, tables=tables
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 2011, in _run_visitor
    conn._run_visitor(visitorcallable, element, **kwargs)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 1599, in _run_visitor
    visitorcallable(self.dialect, self, **kwargs).traverse_single(element)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/visitors.py", line 130, in traverse_single
    return meth(obj, **kw)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/ddl.py", line 779, in visit_metadata
    _is_metadata_operation=True,
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/visitors.py", line 130, in traverse_single
    return meth(obj, **kw)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/ddl.py", line 824, in visit_table
    include_foreign_key_constraints,
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 980, in execute
    return meth(self, multiparams, params)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/ddl.py", line 72, in _execute_on_connection
    return connection._execute_ddl(self, multiparams, params)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 1035, in _execute_ddl
    else None,
  File "<string>", line 1, in <lambda>
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/elements.py", line 448, in compile
    return self._compiler(dialect, bind=bind, **kw)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/ddl.py", line 29, in _compiler
    return dialect.ddl_compiler(dialect, self, **kw)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 310, in __init__
    self.string = self.process(self.statement, **compile_kwargs)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 341, in process
    return obj._compiler_dispatch(self, **kwargs)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/visitors.py", line 90, in _compiler_dispatch
    return meth(self, **kw)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 2802, in visit_create_table
    % (table.description, column.name, ce.args[0])
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/util/compat.py", line 296, in raise_from_cause
    reraise(type(exception), exception, tb=exc_tb, cause=cause)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/util/compat.py", line 276, in reraise
    raise value.with_traceback(tb)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 2790, in visit_create_table
    create_column, first_pk=column.primary_key and not first_pk
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 341, in process
    return obj._compiler_dispatch(self, **kwargs)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/visitors.py", line 90, in _compiler_dispatch
    return meth(self, **kw)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 2822, in visit_create_column
    text = self.get_column_specification(column, first_pk=first_pk)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/dialects/sqlite/base.py", line 906, in get_column_specification
    column.type, type_expression=column
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 391, in process
    return type_._compiler_dispatch(self, **kw)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/visitors.py", line 88, in _compiler_dispatch
    raise exc.UnsupportedCompilationError(visitor, cls)
sqlalchemy.exc.CompileError: (in table 'Users', column 'Roles'): Compiler <sqlalchemy.dialects.sqlite.base.SQLiteTypeCompiler object at 0x7f6261340a90> can't render element of type <class 'sqlalchemy.sql.sqltypes.JSON'>

======================================================================
ERROR: test_encode_auth_token (test_user_medol.TestUserModel)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/visitors.py", line 86, in _compiler_dispatch
    meth = getter(visitor)
AttributeError: 'SQLiteTypeCompiler' object has no attribute 'visit_JSON'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 2790, in visit_create_table
    create_column, first_pk=column.primary_key and not first_pk
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 341, in process
    return obj._compiler_dispatch(self, **kwargs)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/visitors.py", line 90, in _compiler_dispatch
    return meth(self, **kw)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 2822, in visit_create_column
    text = self.get_column_specification(column, first_pk=first_pk)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/dialects/sqlite/base.py", line 906, in get_column_specification
    column.type, type_expression=column
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 391, in process
    return type_._compiler_dispatch(self, **kw)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/visitors.py", line 88, in _compiler_dispatch
    raise exc.UnsupportedCompilationError(visitor, cls)
sqlalchemy.exc.UnsupportedCompilationError: Compiler <sqlalchemy.dialects.sqlite.base.SQLiteTypeCompiler object at 0x7f6261340a90> can't render element of type <class 'sqlalchemy.sql.sqltypes.JSON'>

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/sm/PycharmProjects/REST-API/app/test/base.py", line 14, in setUp
    db.create_all()
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/flask_sqlalchemy/__init__.py", line 963, in create_all
    self._execute_for_all_tables(app, bind, 'create_all')
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/flask_sqlalchemy/__init__.py", line 955, in _execute_for_all_tables
    op(bind=self.get_engine(app, bind), **extra)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/schema.py", line 4200, in create_all
    ddl.SchemaGenerator, self, checkfirst=checkfirst, tables=tables
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 2011, in _run_visitor
    conn._run_visitor(visitorcallable, element, **kwargs)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 1599, in _run_visitor
    visitorcallable(self.dialect, self, **kwargs).traverse_single(element)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/visitors.py", line 130, in traverse_single
    return meth(obj, **kw)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/ddl.py", line 779, in visit_metadata
    _is_metadata_operation=True,
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/visitors.py", line 130, in traverse_single
    return meth(obj, **kw)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/ddl.py", line 824, in visit_table
    include_foreign_key_constraints,
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 980, in execute
    return meth(self, multiparams, params)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/ddl.py", line 72, in _execute_on_connection
    return connection._execute_ddl(self, multiparams, params)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 1035, in _execute_ddl
    else None,
  File "<string>", line 1, in <lambda>
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/elements.py", line 448, in compile
    return self._compiler(dialect, bind=bind, **kw)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/ddl.py", line 29, in _compiler
    return dialect.ddl_compiler(dialect, self, **kw)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 310, in __init__
    self.string = self.process(self.statement, **compile_kwargs)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 341, in process
    return obj._compiler_dispatch(self, **kwargs)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/visitors.py", line 90, in _compiler_dispatch
    return meth(self, **kw)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 2802, in visit_create_table
    % (table.description, column.name, ce.args[0])
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/util/compat.py", line 296, in raise_from_cause
    reraise(type(exception), exception, tb=exc_tb, cause=cause)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/util/compat.py", line 276, in reraise
    raise value.with_traceback(tb)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 2790, in visit_create_table
    create_column, first_pk=column.primary_key and not first_pk
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 341, in process
    return obj._compiler_dispatch(self, **kwargs)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/visitors.py", line 90, in _compiler_dispatch
    return meth(self, **kw)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 2822, in visit_create_column
    text = self.get_column_specification(column, first_pk=first_pk)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/dialects/sqlite/base.py", line 906, in get_column_specification
    column.type, type_expression=column
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/compiler.py", line 391, in process
    return type_._compiler_dispatch(self, **kw)
  File "/home/sm/PycharmProjects/REST-API/venv/lib/python3.7/site-packages/sqlalchemy/sql/visitors.py", line 88, in _compiler_dispatch
    raise exc.UnsupportedCompilationError(visitor, cls)
sqlalchemy.exc.CompileError: (in table 'Users', column 'Roles'): Compiler <sqlalchemy.dialects.sqlite.base.SQLiteTypeCompiler object at 0x7f6261340a90> can't render element of type <class 'sqlalchemy.sql.sqltypes.JSON'>

----------------------------------------------------------------------
Ran 11 tests in 0.029s

FAILED (errors=8)

Process finished with exit code 1

How to get current authenticated user on protected route?

def token_required(function):
    @wraps(function)
    def decorated(*args, **kwargs):

        data, status = Auth.get_logged_in_user(request)
        token = data.get('data')

        if not token:
            return data, status

        return function(*args, **kwargs)

    return decorated
@api.route('/<intra_id>')
@api.param('intra_id', 'The intranet identifier')
@api.response(404, 'Intranet not found.')
class Intranet(Resource):

    @api.doc(security='Bearer Auth')
    @api.doc('get a intranet')
    @api.marshal_with(_intranet)
    @token_required
    def get(self, intra_id):
        intranet = get_intranet(intra_id)
        if not intranet:
            api.abort(404)
        else:
            return intranet

@token_required forces a valid Authorization key, but this decorator cannot be accesed to get the token object (containing user_id, e-mail, is administrator etc.).
I can return the token object by passing it to **kwargs in the decorated function using

kwargs['token]' = token

but I'm not sure if this is the proper way to do it.

How do I properly get the token object from the decorator?

pthon 3.9 可执行依赖

alembic==1.6.2
aniso8601==9.0.1
attrs==21.2.0
bcrypt==3.2.0
cffi==1.14.5
click==7.1.2
Flask==1.1.2
Flask-Bcrypt==0.7.1
flask-marshmallow==0.14.0
Flask-Migrate==2.1.1
flask-restx==0.3.0
Flask-Script==2.0.6
Flask-SQLAlchemy==2.5.1
Flask-Testing==0.8.1
greenlet==1.1.0
itsdangerous==1.1.0
Jinja2==2.11.3
jsonschema==3.2.0
Mako==1.1.4
manage==0.1.15
MarkupSafe==1.1.1
marshmallow==3.12.1
marshmallow-sqlalchemy==0.25.0
pycparser==2.20
PyJWT==1.5.3
pyrsistent==0.17.3
python-dateutil==2.8.1
python-editor==1.0.4
pytz==2021.1
PyYAML==5.4.1
six==1.16.0
SQLAlchemy==1.4.15
Werkzeug==1.0.1

OperationalError - Flask-Migrate

Hello,
The app is working fine with the test cases but for dev instance, it failed.

Error:
OperationalError: (sqlite3.OperationalError) no such table: user [SQL: u'SELECT user.id AS user_id, user.email AS user_email, user.registered_on AS user_registered_on, user.admin AS user_admin, user.public_id AS user_public_id, user.username AS user_username, user.password_hash AS user_password_hash \nFROM user \nWHERE user.email = ?\n LIMIT ? OFFSET ?'] [parameters: (u'[email protected]', 1, 0)] (Background on this error at: http://sqlalche.me/e/e3q8)
127.0.0.1 - - [12/Jul/2018 15:14:06] "POST /user/ HTTP/1.1" 500 -

p.s. I am not able to find db.create_all()

test failure

On running tests in test_auth.py
test_valid_login and test_valid_logout give the following error:

raise JSONDecodeError<"expecting value", s, err.value> from none json.decoder.JSONDecodeError: Expecting Value: line 1 column 1 <char 0>

thanks in advance

[Q] How to get uwsgi work with the project structure

How should I get uwsgi working with this project structure?

I were unable to comment on the article so I'm asking here.

test.ini:

; test.ini

[uwsgi]
protocol = uwsgi

; This is the name of our Python file
; minus the file extension
module = app

; This is the name of the variable
; in our script that will be called
callable = main

master = true

; Set uWSGI to start up 5 workers
processes = 5

; We use the port 5000 which we will
; then expose on our Dockerfile
http = 0.0.0.0:8080
vacuum = true

die-on-term = true

Error:

uwsgi -s /tmp/yourapplication.sock --ini configs/test.ini --plugin python3
[uWSGI] getting INI configuration from configs/test.ini
open("./python3_plugin.so"): No such file or directory [core/utils.c line 3724]
!!! UNABLE to load uWSGI plugin: ./python3_plugin.so: cannot open shared object file: No such file or directory !!!
*** Starting uWSGI 2.0.18 (64bit) on [Sun Feb 10 12:33:36 2019] ***
compiled with version: 7.3.0 on 10 February 2019 08:38:52
os: Linux-4.15.0-45-generic #48-Ubuntu SMP Tue Jan 29 16:28:13 UTC 2019
nodename: Ryzen-Gaming-Linux
machine: x86_64
clock source: unix
detected number of CPU cores: 12
current working directory: /home/sm/PycharmProjects/REST-API
detected binary path: /home/sm/PycharmProjects/REST-API/venv/bin/uwsgi
!!! no internal routing support, rebuild with pcre support !!!
your processes number limit is 63338
your memory page size is 4096 bytes
detected max file descriptor number: 1024
lock engine: pthread robust mutexes
thunder lock: disabled (you can enable it with --thunder-lock)
uWSGI http bound on 0.0.0.0:8080 fd 3
uwsgi socket 0 bound to UNIX address /tmp/yourapplication.sock fd 6
Python version: 3.7.1 (default, Oct 22 2018, 11:21:55)  [GCC 8.2.0]
*** Python threads support is disabled. You can enable it with --enable-threads ***
Python main interpreter initialized at 0x55da5c6e5430
your server socket listen backlog is limited to 100 connections
your mercy for graceful operations on workers is 60 seconds
mapped 437424 bytes (427 KB) for 5 cores
*** Operational MODE: preforking ***
WSGI app 0 (mountpoint='') ready in 0 seconds on interpreter 0x55da5c6e5430 pid: 9723 (default app)
*** uWSGI is running in multiple interpreter mode ***
spawned uWSGI master process (pid: 9723)
spawned uWSGI worker 1 (pid: 9724, cores: 1)
spawned uWSGI worker 2 (pid: 9725, cores: 1)
spawned uWSGI worker 3 (pid: 9726, cores: 1)
spawned uWSGI worker 4 (pid: 9727, cores: 1)
spawned uWSGI worker 5 (pid: 9728, cores: 1)
spawned uWSGI http 1 (pid: 9729)
TypeError: 'module' object is not callable
[pid: 9727|app: 0|req: 1/1] 127.0.0.1 () {38 vars in 802 bytes} [Sun Feb 10 12:33:46 2019] GET / => generated 0 bytes in 0 msecs (HTTP/1.1 500) 0 headers in 0 bytes (0 switches on core 0)
TypeError: 'module' object is not callable
[pid: 9727|app: 0|req: 2/2] 127.0.0.1 () {40 vars in 833 bytes} [Sun Feb 10 12:33:46 2019] GET / => generated 0 bytes in 0 msecs (HTTP/1.1 500) 0 headers in 0 bytes (1 switches on core 0)
TypeError: 'module' object is not callable
[pid: 9728|app: 0|req: 1/3] 127.0.0.1 () {40 vars in 833 bytes} [Sun Feb 10 12:33:52 2019] GET / => generated 0 bytes in 0 msecs (HTTP/1.1 500) 0 headers in 0 bytes (1 switches on core 0)
^CSIGINT/SIGQUIT received...killing workers...
gateway "uWSGI http 1" has been buried (pid: 9729)
worker 1 buried after 1 seconds
worker 2 buried after 1 seconds
worker 3 buried after 1 seconds
worker 4 buried after 1 seconds
worker 5 buried after 1 seconds
goodbye to uWSGI.
VACUUM: unix socket /tmp/yourapplication.sock removed.

Token function not working

Hello,

I have tried cloning this repo without modifying anything and I am not able do any calls that require token. I always get invalid token error. How can a token be invalid if can log out successfully with it?

for example :

curl -X GET "http://127.0.0.1:5000/user/" -H "Content-Type: application/json" -H "Authorization: Token eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE1ODg3MDc0MzIsImlhdCI6MTU4ODYyMTAyNywic3ViIjoxfQ.PdAKhrELumssrV-1t2Zen-UMFdYd15qjNCvuG_R4aPM"
{
"status": "fail",
"message": "Invalid token. Please log in again." }

But log out works which means the token is correct....I can't figure out why this is happening :

curl -X POST "http://127.0.0.1:5000/auth/logout" -H "Content-Type: application/json" -H "Authorization: Token eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE1ODg3MDc0MzIsImlhdCI6MTU4ODYyMTAyNywic3ViIjoxfQ.PdAKhrELumssrV-1t2Zen-UMFdYd15qjNCvuG_R4aPM"
{
"status": "success",
"message": "Successfully logged out."
}

Question: token_require, access user object

Say, I have an endpoint with the 'token_required' decorator. How can I access the current logged in user account in a service class?

To give an example, I have an endpoint 'my-blogposts' that shows only blogpost from the current author, so I want to filter something like: return Posts.query.filter_by(author=g.user.get('id')).all() or something.

logout failed : provide a valid authorization token

Screenshot (3)
Screenshot (1)

I reached at this point in my app, but when i tried executing login and logout in localhost login worked fine but logout gave this error : provide a valid authorization token .

Screenshot (2)

Please take a look. Thanks in advance

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.