def save_setting(): # 保存设置 u = current_user() form = request.form.to_dict() User.update(u.id, **form) return redirect(url_for('.setting'))
def change_pass(): # 更改密码, 然后跳转到登录页面 u = current_user() form = request.form.to_dict() if u.password == User.salted_password(form['old_pass']): User.update(u.id, password=User.salted_password(form['new_pass'])) return redirect(url_for('.login'))
def current_user(): # 从 session 中找到 user_id 字段, 找不到就 -1 # 然后用 id 找用户 # 找不到就返回 None uid = session.get('user_id') u = User.one(id=uid) if u: return u else: return User.guest()
def avatar_add(): # 上传用户图片 file = request.files['avatar'] # ../../root/.ssh/authorized_keys # filename = secure_filename(file.filename) suffix = file.filename.split('.')[-1] filename = '{}.{}'.format(str(uuid.uuid4()), suffix) path = os.path.join('images', filename) file.save(path) u = current_user() User.update(u.id, image='/images/{}'.format(filename)) return redirect(url_for('.setting'))
def generate_fake_date(): form = dict( username='******', password='******' ) form['password'] = User.salted_password(form['password']) u = User.new(form) with open('markdown_demo.md', encoding='utf8') as f: content = f.read() form = dict( title='markdown demo', content=content ) Topic.new(form, u.id)
def detail(id): # 返回到用户主页, 主页包含用户发表话题,回复等 user = User.one(id=id) topics = user.topics() replies = user.replies() return render_template("user/detail.html", user=user, topics=topics, replies=replies)
def register(): # 用户注册处理函数 # 注册成功, 定向的登录界面 # 失败, 返回注册页面 form = request.form # 用类函数来判断 u = User.register(form) if u is not None: return redirect(url_for('.login_view')) else: return redirect(url_for('.register_view'))
def login(): # 用户登录处理函数 # 成功, 定向到首页, 设置 session # 失败, 返回登录页面 form = request.form u = User.validate_login(form) if u is None: return redirect(url_for('.login_view')) else: # session 中写入 user_id session['user_id'] = u.id # 设置 cookie 有效期为 永久 session.permanent = True return redirect(url_for('index.index'))
def add(): # 发电子邮件 form = request.form.to_dict() form['receiver_id'] = int(form['receiver_id']) u = current_user() form['sender_id'] = u.id r = User.one(id=form['receiver_id']) m = Message(subject=form['title'], body=form['content'], sender=admin_mail, recipients=[r.email]) mail.send(m) m = Messages.new(form) return redirect(url_for('.index'))
def users_from_content(content): # 内容 @123 内容 # 如果用户名含有空格 就不行了 @name 123 # 'a b c' -> ['a', 'b', 'c'] parts = content.split() users = [] for p in parts: if p.startswith('@'): username = p[1:] u = User.one(username=username) print('users_from_content <{}> <{}> <{}>'.format( username, p, parts)) if u is not None: users.append(u) return users