From d2fc47585cf02a280d16efe4914b40328fc2d9d5 Mon Sep 17 00:00:00 2001
From: Jeremy Fee <jmfee@usgs.gov>
Date: Thu, 2 Jan 2020 11:02:36 -0700
Subject: [PATCH] Move User class to login module

---
 geomagio/webservice/database.py | 20 --------------------
 geomagio/webservice/login.py    | 24 +++++++++++++++++++++++-
 2 files changed, 23 insertions(+), 21 deletions(-)

diff --git a/geomagio/webservice/database.py b/geomagio/webservice/database.py
index c8b84954..4484cb0b 100644
--- a/geomagio/webservice/database.py
+++ b/geomagio/webservice/database.py
@@ -1,8 +1,5 @@
-from __future__ import unicode_literals
-from builtins import str
 
 import flask
-import flask_login
 import flask_migrate
 import flask_sqlalchemy
 
@@ -15,20 +12,3 @@ def init_app(app: flask.Flask):
     db.init_app(app)
     migrate = flask_migrate.Migrate(app, db)
 
-
-class User(db.Model, flask_login.UserMixin):
-    id = db.Column(db.Integer, primary_key=True)
-    openid = db.Column(db.Text, unique=True, nullable=False)
-    email = db.Column(db.Text, unique=True, nullable=False)
-    groups = db.Column(db.Text)
-
-    def get_id(self) -> str:
-        return str(self.openid)
-
-    def to_dict(self):
-        return {
-            'id': self.id,
-            'openid': self.openid,
-            'email': self.email,
-            'groups': self.groups
-        }
diff --git a/geomagio/webservice/login.py b/geomagio/webservice/login.py
index a5a78e75..9f7c94b2 100644
--- a/geomagio/webservice/login.py
+++ b/geomagio/webservice/login.py
@@ -6,7 +6,7 @@ import os
 from authlib.integrations.flask_client import OAuth
 from functools import wraps
 
-from .database import db, User
+from .database import db
 
 
 # Blueprint for auth routes
@@ -39,6 +39,28 @@ def init_app(app: flask.Flask):
     app.register_blueprint(blueprint)
 
 
+class User(db.Model, flask_login.UserMixin):
+    """User database model.
+    """
+    __tablename__ = 'user'
+    id = db.Column(db.Integer, primary_key=True)
+    openid = db.Column(db.Text, unique=True, nullable=False)
+    email = db.Column(db.Text, unique=True, nullable=False)
+    is_active = db.Column(db.Boolean, default=False)
+    groups = db.Column(db.Text)
+
+    def get_id(self) -> str:
+        return str(self.openid)
+
+    def to_dict(self):
+        return {
+            'id': self.id,
+            'openid': self.openid,
+            'email': self.email,
+            'groups': self.groups
+        }
+
+
 @login_manager.user_loader
 def _load_user(user_id):
     return User.query.filter_by(openid=user_id).first()
-- 
GitLab