示例#1
0
    def timers_create(**options):
        session.pop('timer_created_id', None)
        session.pop('timer_edited_id', None)
        if request.method == 'POST':
            id = None
            try:
                if 'id' in request.form:
                    id = int(request.form['id'])
                name = request.form['name'].strip()
                interval_online = int(request.form['interval_online'])
                interval_offline = int(request.form['interval_offline'])
                message_type = request.form['message_type']
                message = request.form['message'].strip()
            except (KeyError, ValueError):
                abort(403)

            if interval_online < 0 or interval_offline < 0:
                abort(403)

            if message_type not in ['say', 'me']:
                abort(403)

            if len(message) == 0:
                abort(403)

            options = {
                    'name': name,
                    'interval_online': interval_online,
                    'interval_offline': interval_offline,
                    }

            action = {
                    'type': message_type,
                    'message': message
                    }
            options['action'] = action

            if id is None:
                timer = Timer(**options)

            with DBManager.create_session_scope(expire_on_commit=False) as db_session:
                if id is not None:
                    timer = db_session.query(Timer).filter_by(id=id).one_or_none()
                    if timer is None:
                        return redirect('/admin/timers/', 303)
                    timer.set(**options)
                else:
                    db_session.add(timer)

            SocketClientManager.send('timer.update', {'timer_id': timer.id})
            if id is None:
                session['timer_created_id'] = timer.id
            else:
                session['timer_edited_id'] = timer.id
            return redirect('/admin/timers/', 303)
        else:
            return render_template('admin/create_timer.html')
示例#2
0
文件: admin.py 项目: cubelious/pajbot
def timers_create(**options):
    session.pop('timer_created_id', None)
    session.pop('timer_edited_id', None)
    if request.method == 'POST':
        id = None
        try:
            if 'id' in request.form:
                id = int(request.form['id'])
            name = request.form['name'].strip()
            interval_online = int(request.form['interval_online'])
            interval_offline = int(request.form['interval_offline'])
            message_type = request.form['message_type']
            message = request.form['message'].strip()
        except (KeyError, ValueError):
            abort(403)

        if interval_online < 0 or interval_offline < 0:
            abort(403)

        if message_type not in ['say', 'me']:
            abort(403)

        if len(message) == 0:
            abort(403)

        options = {
                'name': name,
                'interval_online': interval_online,
                'interval_offline': interval_offline,
                }

        action = {
                'type': message_type,
                'message': message
                }
        options['action'] = action

        if id is None:
            timer = Timer(**options)

        with DBManager.create_session_scope(expire_on_commit=False) as db_session:
            if id is not None:
                timer = db_session.query(Timer).filter_by(id=id).one_or_none()
                if timer is None:
                    return redirect('/admin/timers/', 303)
                timer.set(**options)
            else:
                db_session.add(timer)

        SocketClientManager.send('timer.update', {'timer_id': timer.id})
        if id is None:
            session['timer_created_id'] = timer.id
        else:
            session['timer_edited_id'] = timer.id
        return redirect('/admin/timers/', 303)
    else:
        return render_template('admin/create_timer.html')
示例#3
0
    def timers_create(**options):
        session.pop("timer_created_id", None)
        session.pop("timer_edited_id", None)
        if request.method != "POST":
            return render_template("admin/create_timer.html")
        id = None
        try:
            if "id" in request.form:
                id = int(request.form["id"])
            name = request.form["name"].strip()
            interval_online = int(request.form["interval_online"])
            interval_offline = int(request.form["interval_offline"])
            message_type = request.form["message_type"]
            message = request.form["message"].strip()
        except (KeyError, ValueError):
            abort(403)

        if interval_online < 0 or interval_offline < 0:
            abort(403)

        if message_type not in ["say", "me"]:
            abort(403)

        if not message:
            abort(403)

        user = options.get("user", None)

        if user is None:
            abort(403)

        options = {"name": name, "interval_online": interval_online, "interval_offline": interval_offline}

        action = {"type": message_type, "message": message}
        options["action"] = action

        if id is None:
            timer = Timer(**options)

        with DBManager.create_session_scope(expire_on_commit=False) as db_session:
            if id is not None:
                timer = db_session.query(Timer).filter_by(id=id).one_or_none()
                if timer is None:
                    return redirect("/admin/timers/", 303)

                old_message = ""
                new_message = ""
                try:
                    old_message = timer.action.response
                    new_message = action["message"]
                except:
                    pass

                timer.set(**options)

                if old_message and old_message != new_message:
                    log_msg = f'Timer "{timer.name}" has been updated from "{old_message}" to "{new_message}"'
                else:
                    log_msg = f'Timer "{timer.name}" has been updated'

                AdminLogManager.add_entry(
                    "Timer edited", user, log_msg, data={"old_message": old_message, "new_message": new_message}
                )
            else:
                db_session.add(timer)
                AdminLogManager.post("Timer added", user, timer.name)

        SocketClientManager.send("timer.update", {"id": timer.id})
        if id is None:
            session["timer_created_id"] = timer.id
        else:
            session["timer_edited_id"] = timer.id
        return redirect("/admin/timers/", 303)
示例#4
0
    def timers_create(**options):
        session.pop('timer_created_id', None)
        session.pop('timer_edited_id', None)
        if request.method == 'POST':
            id = None
            try:
                if 'id' in request.form:
                    id = int(request.form['id'])
                name = request.form['name'].strip()
                interval_online = int(request.form['interval_online'])
                interval_offline = int(request.form['interval_offline'])
                message_type = request.form['message_type']
                message = request.form['message'].strip()
            except (KeyError, ValueError):
                abort(403)

            if interval_online < 0 or interval_offline < 0:
                abort(403)

            if message_type not in ['say', 'me']:
                abort(403)

            if len(message) == 0:
                abort(403)

            user = options.get('user', None)

            if user is None:
                abort(403)

            options = {
                    'name': name,
                    'interval_online': interval_online,
                    'interval_offline': interval_offline,
                    }

            action = {
                    'type': message_type,
                    'message': message
                    }
            options['action'] = action

            if id is None:
                timer = Timer(**options)

            with DBManager.create_session_scope(expire_on_commit=False) as db_session:
                if id is not None:
                    timer = db_session.query(Timer).filter_by(id=id).one_or_none()
                    if timer is None:
                        return redirect('/admin/timers/', 303)

                    old_message = ''
                    new_message = ''
                    try:
                        old_message = timer.action.response
                        new_message = action['message']
                    except:
                        pass

                    timer.set(**options)

                    if len(old_message) > 0 and old_message != new_message:
                        log_msg = 'Timer "{0}" has been updated from "{1}" to "{2}"'.format(
                                timer.name,
                                old_message,
                                new_message)
                    else:
                        log_msg = 'Timer "{0}" has been updated'.format(timer.name)

                    AdminLogManager.add_entry('Timer edited',
                            user,
                            log_msg,
                            data={
                                'old_message': old_message,
                                'new_message': new_message,
                                })
                else:
                    db_session.add(timer)
                    AdminLogManager.post('Timer added', user, timer.name)

            SocketClientManager.send('timer.update', {'timer_id': timer.id})
            if id is None:
                session['timer_created_id'] = timer.id
            else:
                session['timer_edited_id'] = timer.id
            return redirect('/admin/timers/', 303)
        else:
            return render_template('admin/create_timer.html')
示例#5
0
    def timers_create(**options):
        session.pop('timer_created_id', None)
        session.pop('timer_edited_id', None)
        if request.method == 'POST':
            id = None
            try:
                if 'id' in request.form:
                    id = int(request.form['id'])
                name = request.form['name'].strip()
                interval_online = int(request.form['interval_online'])
                interval_offline = int(request.form['interval_offline'])
                message_type = request.form['message_type']
                message = request.form['message'].strip()
            except (KeyError, ValueError):
                abort(403)

            if interval_online < 0 or interval_offline < 0:
                abort(403)

            if message_type not in ['say', 'me']:
                abort(403)

            if len(message) == 0:
                abort(403)

            user = options.get('user', None)

            if user is None:
                abort(403)

            options = {
                'name': name,
                'interval_online': interval_online,
                'interval_offline': interval_offline,
            }

            action = {'type': message_type, 'message': message}
            options['action'] = action

            if id is None:
                timer = Timer(**options)

            with DBManager.create_session_scope(
                    expire_on_commit=False) as db_session:
                if id is not None:
                    timer = db_session.query(Timer).filter_by(
                        id=id).one_or_none()
                    if timer is None:
                        return redirect('/admin/timers/', 303)

                    old_message = ''
                    new_message = ''
                    try:
                        old_message = timer.action.response
                        new_message = action['message']
                    except:
                        pass

                    timer.set(**options)

                    if len(old_message) > 0 and old_message != new_message:
                        log_msg = 'Timer "{0}" has been updated from "{1}" to "{2}"'.format(
                            timer.name, old_message, new_message)
                    else:
                        log_msg = 'Timer "{0}" has been updated'.format(
                            timer.name)

                    AdminLogManager.add_entry('Timer edited',
                                              user,
                                              log_msg,
                                              data={
                                                  'old_message': old_message,
                                                  'new_message': new_message,
                                              })
                else:
                    db_session.add(timer)
                    AdminLogManager.post('Timer added', user, timer.name)

            SocketClientManager.send('timer.update', {'timer_id': timer.id})
            if id is None:
                session['timer_created_id'] = timer.id
            else:
                session['timer_edited_id'] = timer.id
            return redirect('/admin/timers/', 303)
        else:
            return render_template('admin/create_timer.html')