Skip to content
Snippets Groups Projects
class_views.py 2.29 KiB
from flask import Blueprint, render_template, request, flash, jsonify,abort
# @ACL(login_required)
from flask_login import login_required, current_user
from .models import Note,Log
from .db import db
import json
from lib.RoleCheck import RoleCheck

views = Blueprint('views', __name__)
# @Routes
class Views():
    # @NoCheck
    def __init__(self) -> None:
        pass
    @views.route('/add', methods=['POST'])
    @login_required
    def class_add_note(self):
        if request.method == 'POST':
            note = request.form.get('note')

            if len(note) < 1:
                flash('Note is too short!', category='error')
            else:
                new_note = Note(data=note, user_id=current_user.id)
                db.session.add(new_note)
                db.session.commit()
                flash('Note added!', category='success')

        return render_template("home.html")

    @views.route('/update', methods=['POST'])
    @login_required
    def class_update_note(self):
        if request.method == 'POST':
            n = request.form.get('note')
            noteId = n['noteId']
            note = Note.query.get(noteId)
        
            if note.user_id == current_user.id:
                if len(n.note) < 1:
                    flash('Note is too short!', category='error')
                else:
                    db.session.update().where(Note.id==n.id).values(data=n.note)
                    db.session.commit()
            flash('Note updated!', category='success')

        return render_template("home.html")

    @views.route('/delete', methods=['POST'])
    @login_required
    def class_delete_note(self):
        note = json.loads(request.data)
        noteId = note['noteId']
        note = Note.query.get(noteId)
        if note:
            if note.user_id == current_user.id:
                db.session.delete(note)
                db.session.commit()
        return jsonify({})

    @views.route('/note', methods=['GET'])
    @login_required
    def class_get_note(self):
        notes = Note.query.filter(Note.user_id==current_user.id)
        return jsonify(notes)

    @views.route('/logs', methods=['GET'])
    @login_required
    def class_get_logs(self):
        if (RoleCheck().is_admin(current_user)):
            abort(403)
        logs = Log.query.get()
        return jsonify(logs)