Skip to content

Commit

Permalink
version v0.1 update framework version
Browse files Browse the repository at this point in the history
 update the framework version. Flask2.x Python3.x
  • Loading branch information
no13bus committed Jun 13, 2022
1 parent f71cf57 commit a54a67a
Show file tree
Hide file tree
Showing 22 changed files with 77 additions and 728 deletions.
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -24,4 +24,4 @@ openid

env

.idea/
.idea/
658 changes: 0 additions & 658 deletions .idea/workspace.xml

This file was deleted.

6 changes: 4 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,6 @@ baymax

Build your personal life database, including of internet, taxi, sports and health data analysis.

[![repo](http://ohmyrepo.ml/static/ohmyrepo.png)](http://ohmyrepo.ml/show?u=no13bus&r=baymax)

[中文文档](https://github.com/no13bus/baymax/blob/master/README_CN.md)

# Let's start
Expand Down Expand Up @@ -46,6 +44,10 @@ GitHub code submitted times and statistics.
- celery
- redis

# change log
### version 0.1
- update the framework version. Flask2.x Python3.x


# Screen
![1](https://raw.githubusercontent.com/no13bus/baymax/master/screen/1.png)
Expand Down
9 changes: 3 additions & 6 deletions README_CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@ baymax

搭建自己的个人生活数据库-大白,数据包括上网,打车,运动,身体健康指标统计等等。

[![repo](http://ohmyrepo.ml/static/ohmyrepo.png)](http://ohmyrepo.ml/show?u=no13bus&r=baymax)

# 开始
- pip install -r requirements.txt
- 修改baymax中的config中的相关配置,比如celery的配置,mysql数据库的配置,APP回调地址的配置
Expand Down Expand Up @@ -48,11 +46,10 @@ baymax
- celery
- redis

# Demo
http://baymax.ninja/no13bus/show
# change log
### version 0.1
- update the framework version. Flask2.x Python3.x

# 主页
http://baymax.ninja

# Fork
欢迎大家fok,因为有些智能硬件本人没有,一些智能硬件的api接口申请不到。如果你碰巧这2者都有的话,欢迎为项目增砖添瓦,
Expand Down
2 changes: 1 addition & 1 deletion baymax/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
# -*- coding: utf-8 -*-

from app import create_app
from .app import create_app
4 changes: 2 additions & 2 deletions baymax/admin/forms.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
# -*- coding: utf-8 -*-

from flask.ext.wtf import Form
from flask_wtf import FlaskForm
from wtforms import HiddenField, SubmitField, RadioField, DateField
from wtforms.validators import AnyOf

from ..user import USER_ROLE, USER_STATUS


class UserForm(Form):
class UserForm(FlaskForm):
next = HiddenField()
role_code = RadioField(u"Role", [AnyOf([str(val) for val in USER_ROLE.keys()])],
choices=[(str(val), label) for val, label in USER_ROLE.items()])
Expand Down
2 changes: 1 addition & 1 deletion baymax/admin/views.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-

from flask import Blueprint, render_template, request, flash
from flask.ext.login import login_required
from flask_login import login_required

from ..extensions import db
from ..decorators import admin_required
Expand Down
2 changes: 1 addition & 1 deletion baymax/api/views.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-

from flask import Blueprint, jsonify
from flask.ext.login import current_user, login_required
from flask_login import current_user, login_required
from ..user import User
from ..monitor import MonitorValue

Expand Down
2 changes: 0 additions & 2 deletions baymax/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,6 @@
import os

from flask import Flask, request, render_template
from flask.ext.babel import Babel

from .config import DefaultConfig
from .user import User
from .frontend import frontend
Expand Down
8 changes: 6 additions & 2 deletions baymax/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import os
from datetime import timedelta
from utils import make_dir, INSTANCE_FOLDER_PATH
from .utils import make_dir, INSTANCE_FOLDER_PATH


class BaseConfig(object):
Expand Down Expand Up @@ -43,7 +43,7 @@ class DefaultConfig(BaseConfig):
# SQLALCHEMY_DATABASE_URI = 'sqlite:///' + INSTANCE_FOLDER_PATH + '/db.sqlite'
# MYSQL for production.
#SQLALCHEMY_DATABASE_URI = 'mysql://username:password@server/db?charset=utf8'
SQLALCHEMY_DATABASE_URI = 'mysql://root:root@127.0.0.1/baymax?charset=utf8'
SQLALCHEMY_DATABASE_URI = 'mysql://root:123456@127.0.0.1/baymax?charset=utf8'

# Flask-babel: http://pythonhosted.org/Flask-Babel/
ACCEPT_LANGUAGES = ['zh']
Expand Down Expand Up @@ -102,6 +102,10 @@ class DefaultConfig(BaseConfig):
FITBIT_SECRET = ''


SQLALCHEMY_TRACK_MODIFICATIONS = True
SQLALCHEMY_COMMIT_TEARDOWN = True




class TestConfig(BaseConfig):
Expand Down
2 changes: 1 addition & 1 deletion baymax/decorators.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
from functools import wraps

from flask import abort
from flask.ext.login import current_user
from flask_login import current_user


def admin_required(f):
Expand Down
13 changes: 8 additions & 5 deletions baymax/extensions.py
Original file line number Diff line number Diff line change
@@ -1,18 +1,21 @@
# -*- coding: utf-8 -*-
from werkzeug.utils import import_string
import werkzeug
werkzeug.import_string = import_string

from flask.ext.sqlalchemy import SQLAlchemy
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()

from flask.ext.mail import Mail
from flask_mail import Mail
mail = Mail()

from flask.ext.cache import Cache
from flask_cache import Cache
cache = Cache()

from flask.ext.login import LoginManager
from flask_login import LoginManager
login_manager = LoginManager()

from flask.ext.openid import OpenID
from flask_openid import OpenID
oid = OpenID()

import flask
Expand Down
4 changes: 2 additions & 2 deletions baymax/frontend/forms.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
# -*- coding: utf-8 -*-
from flask.ext.wtf import Form
from flask_wtf import FlaskForm
from wtforms import (ValidationError, HiddenField, BooleanField, TextField,
PasswordField, SubmitField)
from wtforms.validators import Required, Length, EqualTo, Email

from ..utils import (PASSWORD_LEN_MIN, PASSWORD_LEN_MAX)


class LoginForm(Form):
class LoginForm(FlaskForm):
next = HiddenField()
login = TextField(u'Username or email', [Required()])
password = PasswordField('Password', [Required(), Length(PASSWORD_LEN_MIN, PASSWORD_LEN_MAX)])
Expand Down
18 changes: 9 additions & 9 deletions baymax/frontend/views.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
from flask import (Blueprint, render_template, current_app, request,
flash, url_for, redirect, session, abort, jsonify)
from flask.ext.login import login_required, login_user, current_user, logout_user
from flask_login import login_required, login_user, current_user, logout_user
from ..user import User
from ..monitor import Tokens
from ..extensions import db
Expand All @@ -28,14 +28,14 @@ def show():

@frontend.route('/')
def index():
if current_user.is_authenticated():
if current_user.is_authenticated:
return redirect(url_for('frontend.show'))
monitors = ['rescuetime', 'fitbit', 'github', 'nike', 'argus', 'bong', 'ledongli', 'moves', 'uber', 'withings']
return render_template('index.html', monitors=monitors)

@frontend.route('/login', methods=['GET', 'POST'])
def login():
if current_user.is_authenticated():
if current_user.is_authenticated:
return redirect(url_for('frontend.show'))
next=request.args.get('next', None)
redirect_uri = current_app.config.get('CALLBACK_URL') % 'github'
Expand Down Expand Up @@ -69,7 +69,7 @@ def callback(monitor_name):
avatar_url = user_json['avatar_url']
email = user_json['email'] if user_json['email'] else ''
if not User.query.filter_by(name=username).first():
print 'no user:%s' % username
print('no user:%s' % username)
user = User(name=username, email=email, avatar=avatar_url)
db.session.add(user)
db.session.commit()
Expand All @@ -81,14 +81,14 @@ def callback(monitor_name):
db.session.commit()
# 初始化爬取 github commit数据
github_task_func.delay(token, username)
print 'github task start....'
print('github task start....')
login_user(user_one)
session['avatar'] = user_one.avatar
# if login_user(user_one):
# flash("Logged in", 'success')
return redirect(next or url_for('frontend.show'))
elif monitor_name == 'fitbit':
if not current_user.is_authenticated():
if not current_user.is_authenticated:
return redirect(url_for('frontend.login'))
code = request.args.get('code', None)
params = {
Expand All @@ -105,10 +105,10 @@ def callback(monitor_name):
url = 'https://api.fitbit.com/oauth2/token'
req = requests.post(url=url, headers=headers, params=params)
resp_json = json.loads(req.content)
print resp_json
print(resp_json)
token = resp_json['access_token']
refresh_token = resp_json['refresh_token']
print refresh_token
print(refresh_token)
user_token = Tokens.query.filter_by(monitor_id=3, user_id=current_user.id, datatype='health').first()
if user_token:
user_token.token = token
Expand All @@ -121,7 +121,7 @@ def callback(monitor_name):
db.session.commit()
# 初始化爬取 fitbit 健康数据
fitbit_task_func(token, current_user.name)
print u'开始爬取fitbit数据'
print(u'开始爬取fitbit数据')
flash(u'fitbit权限认证成功', 'success')
return redirect(url_for('monitor.list'))
else:
Expand Down
16 changes: 6 additions & 10 deletions baymax/monitor/forms.py
Original file line number Diff line number Diff line change
@@ -1,20 +1,16 @@
# -*- coding: utf-8 -*-

from flask.ext.wtf import Form
from flask.ext.wtf.html5 import URLField, EmailField, TelField
from wtforms import (ValidationError, HiddenField, TextField, HiddenField,
PasswordField, SubmitField, TextAreaField, IntegerField, RadioField,
FileField, DecimalField)
from wtforms.validators import (Required, Length, EqualTo, Email, NumberRange,
from flask_wtf import FlaskForm
from wtforms import ValidationError, HiddenField, StringField
from wtforms.validators import (Length, EqualTo, Email, NumberRange,
URL, AnyOf, Optional)
from flask.ext.login import current_user
from flask_login import current_user

from ..user import User
from ..utils import PASSWORD_LEN_MIN, PASSWORD_LEN_MAX, AGE_MIN, AGE_MAX, DEPOSIT_MIN, DEPOSIT_MAX
from ..utils import allowed_file, ALLOWED_AVATAR_EXTENSIONS
from ..utils import SEX_TYPE


class RescuetimeForm(Form):
key = TextField(u'key', [Length(max=64)])
class RescuetimeForm(FlaskForm):
key = StringField(u'key', [Length(max=64)])

6 changes: 3 additions & 3 deletions baymax/monitor/views.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
from flask import Blueprint, render_template, flash, redirect, url_for, session, current_app
from flask.ext.login import login_required, current_user
from flask_login import login_required, current_user
import urllib
from ..extensions import db
from ..libs.fitbit import Fitbit
Expand Down Expand Up @@ -32,7 +32,7 @@ def detail(monitor_name):
if monitor_name == 'rescuetime':
form = RescuetimeForm()
if form.validate_on_submit():
print form.key.data
print(form.key.data)
user_id = current_user.id
web_tooken = Tokens.query.filter_by(monitor_id=2, user_id=user_id, datatype='webtimer').first()
if web_tooken:
Expand All @@ -46,7 +46,7 @@ def detail(monitor_name):
db.session.commit()
# 初始化爬取 rescuetime的数据
rescuetime_task_func.delay(str(form.key.data), current_user.name)
print u'rescuetime data'
print(u'rescuetime data')
flash(u'recuetime权限认证成功', 'success')
return redirect(url_for('monitor.list'))
return render_template('monitor/detail.html', form=form, active='monitor')
Expand Down
2 changes: 1 addition & 1 deletion baymax/templates/layouts/base.html
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@
</ul>

<ul class="nav navbar-nav navbar-right">
{% if not current_user.is_authenticated() %}
{% if not current_user.is_authenticated %}
<li><a href="https://github.com/login/oauth/authorize?redirect_uri=http://baymax.ninja/github/callback&client_id=e925ef871d26e063315b" title="Sign in"><i class="fa fa-sign-in fa-lg"></i> Sign in</a></li>
{% else %}
<li>
Expand Down
5 changes: 2 additions & 3 deletions baymax/user/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,13 @@

from sqlalchemy import Column, types
from sqlalchemy.ext.mutable import Mutable
from werkzeug import generate_password_hash, check_password_hash
from flask.ext.login import UserMixin
from werkzeug.security import generate_password_hash, check_password_hash

from ..extensions import db
from ..utils import get_current_time, SEX_TYPE, STRING_LEN


class User(db.Model, UserMixin):
class User(db.Model):
id = Column(db.Integer, primary_key=True)
name = Column(db.String(STRING_LEN), nullable=False, unique=True)
email = Column(db.String(STRING_LEN), nullable=True, unique=True)
Expand Down
4 changes: 2 additions & 2 deletions baymax/user/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,14 @@

from flask import Blueprint, render_template, send_from_directory, abort
from flask import current_app as APP
from flask.ext.login import login_required, current_user
from flask_login import login_required, current_user
from .models import User

user = Blueprint('user', __name__, url_prefix='/user')

@user.route('/')
@login_required
def index():
if not current_user.is_authenticated():
if not current_user.is_authenticated:
abort(403)
return render_template('user/index.html', user=current_user)
2 changes: 1 addition & 1 deletion baymax/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -100,5 +100,5 @@ def make_dir(dir_path):
try:
if not os.path.exists(dir_path):
os.mkdir(dir_path)
except Exception, e:
except Exception as e:
raise e
22 changes: 15 additions & 7 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,15 @@
flask
requests
flask-script
flask-babel
flask-login
flask-mail
flask-cache
CairoSVG==2.5.2
celery==5.2.7
click==8.1.3
Flask==2.1.2
Flask-Cache==0.13.1
Flask-Login==0.6.1
Flask-Mail==0.9.1
Flask-OpenID==1.3.0
Flask-Script==2.0.6
Flask-SQLAlchemy==2.5.1
Flask-WTF==1.0.1
mysqlclient==2.1.0
Pillow==9.1.1
redis==4.3.3
requests==2.28.0
Loading

0 comments on commit a54a67a

Please sign in to comment.