2018年6月28日 星期四

用Flask-SQLAlchemy把Model定義獨立到models.py

https://stackoverflow.com/questions/9692962/flask-sqlalchemy-import-context-issue/9695045#9695045

models.py
=====
from flask_sqlalchemy import SQLAlchemy
from datetime import datetime

db = SQLAlchemy()

class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True, nullable=False)
email = db.Column(db.String(120), unique=True, nullable=False)

def __repr__(self):
return '%r>' % self.username

class Post(db.Model):
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(80), nullable=False)
body = db.Column(db.Text, nullable=False)
json = db.Column(db.JSON)
pub_date = db.Column(db.DateTime, nullable=False,
default=datetime.utcnow)

category_id = db.Column(db.Integer, db.ForeignKey('category.id'),
nullable=False)
category = db.relationship('Category',
backref=db.backref('posts', lazy=True))

def __repr__(self):
return '%r>' % self.title

class Category(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(50), nullable=False)

def __repr__(self):
return '%r>' % self.name


app.py
======
from flask import Flask
# from flask_sqlalchemy import SQLAlchemy
from flask_admin import Admin
from flask_admin.contrib.sqla import ModelView
from models import db, User, Post, Category

app = Flask(__name__)
#app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////tmp/test.db'
app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql:///jack'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
# db = SQLAlchemy(app)
db.init_app(app)
admin = Admin(app, name='flask-sql', template_mode='bootstrap3')

admin.add_view(ModelView(User, db.session))
admin.add_view(ModelView(Post, db.session))
admin.add_view(ModelView(Category, db.session))

2018年6月22日 星期五

Ubuntu install postgresql & flask-sqlalchemy

# sudo apt install postgresql
# sudo systemctl enable postgresql
# sudo -i -u postgres
# createuser --interactive
jack
y
Note. already have a user named jack
# createdb jack
Note. create a database named jack.
logout from postgres
#logout

Edit the Flask app.py
app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql:///jack'

You can save JSON type now
json = db.Column(db.JSON)

2018年6月21日 星期四

遇到密碼對 可是登不進ssh

Check the log in /var/log/auth.log
$ grep sshd /var/log/auth.log | less
看到
sshd[2110]: User jack not allowed because shell /usr/bin/zsh does not exist

可能是之前有安裝過zsh但是沒有移乾淨
下env | grep SHELL看到的確是/usr/bin/zsh

用chsh指令改
$ sudo chsh -s /bin/bash jack
解決不能登入ssh問題

Robotframework 變數檔案

使用-V 參數

# robot -V vars.yaml a.robot

vars.yaml內容
BMC_IP: 172.16.1.16

For using "Library    Dialogs"
apt-get install python3-tk
pip intall tkinter

2018年5月18日 星期五

Setup Python3 develop environment on Ubuntu Server 1804

1. Install Ubuntu Server 1804
2. Install pip3 & python3-dev
# sudo apt install python3-pip python3-dev
3. update pip
# python3 -m pip install -U pip
4. logout and login
5. Install virtualenvwrapper
# python3 -m pip install --user virtualenvwrapper
6. add variable in .bashrc
export VIRTUALENVWRAPPER_PYTHON=$(which python3)
7. include virtualenvwrapper in .bashrc
Add following in tail of .bashrc
# set ~/.local/bin in PATH
if [ -d "$HOME/.local/bin" ] ; then
    PATH="$HOME/.local/bin:$PATH"
fi

# virtualenvwrapper
source $(which virtualenvwrapper.sh)
8. logout & login again
9. create a virtualenv
# mkvirtualenv env1

for APT proxy setting: /etc/apt/apt.conf
Acquire::http::Proxy "http://yourproxyaddress:proxyport";

for pip proxy setting per-user: ~/.config/pip/pip.conf
[global]
proxy = http://127.0.0.1:3128

https://medium.com/@gitudaniel/installing-virtualenvwrapper-for-python3-ad3dfea7c717

2018年5月16日 星期三

Increase upload file size limit of TestLink

Edit /etc/php.ini file

upload_max_filesize = 100M
max_execution_time = 600

Edit
/var/html/www/testlink/config.inc.php
$tlCfg->import_file_max_size_bytes (config.inc.php): 8192000
$tlCfg->import_max_row (config.inc.php): 100000
$tlCfg->repository_max_filesize (config.inc.php): 8 // MB

restart Apache
service apache2 restart
or
service httpd restart

2018年3月29日 星期四

Use mkvirtualenv of virtualenvwrapper-win to create diffenrent Python version of env

應用Python的virtualenv和virtualenvwrapper可方便建立Python的virtual enviroment,方便在不同的environment切換,各env有獨立的pip list和Python版本

首先要安裝Python (Linux已有內建Python2)

  1. Windows安裝完後要將PATH設定包含到C:\Python27
  2. 安裝virtualenv, pip install virtualenv
  3. 安裝virtualenvwrapper或是virtualenvwrapper-win (Windows版)
  4. 建立virtualenv
    1. mkvirtualenv env01
  5. 查看pip list, pip list
  6. 跳出env01, deactivate
  7. 查看目前有多少virtualenv, workon
  8. 進入virtualenv env01, workon env01
  9. 若要建立Python3的virtualenv, 先安裝Python3
  10. 確認Pyhon3的python.exe位置 (C:\Users\Jack_Lin\AppData\Local\Programs\Python\Python35\python.exe), 若是Linux, 可用which python3指令查看
  11. 建立一Python3的virtualenv
    1. mkvirtualenv -p C:\Users\Jack_Lin\AppData\Local\Programs\Python\Python35\python.exe python35
    2. python -V