Ejemplo n.º 1
0
Archivo: oss.py Proyecto: hh-h/ossdev
    def POST(self): # noqa
        log.save_action(session.name, 'admin', 'Попытка изменений прав в админке')

        i = web.input(user='', data={})

        user = H.check_username(i.user)
        if not user:
            msg = 'Не знаю кому изменять права!'
            print(msg)
            return dumps({
                'status': Status.ERROR,
                'msg'   : msg
            })
        try:
            data = loads(i.data)
        except ValueError:
            msg = 'Не смог преобразовать входные данные!'
            print(msg)
            return dumps({
                'status': Status.ERROR,
                'msg'   : msg
            })

        if not data:
            msg = 'Пустые входные данные!'
            print(msg)
            return dumps({
                'status': Status.ERROR,
                'msg'   : msg
            })

        # обновим права в базе данных
        status = H.update_user_privileges(db, user, data)
        if not status:
            msg = 'Не смог установить новые права пользователю!'
            print(msg)
            return dumps({
                'status': Status.ERROR,
                'msg'   : msg
            })

        # обновим права самому себе, чтобы не перелогиниваться
        if session.name == user:
            for rule in H.RULES:
                session[rule] = data[rule]

            regions = data['regions'].split(',')
            session['regions'] = map(int, regions)

        # обновим сессию пользователя в базе
        status = H.update_user_sessions(db, store, user, data)
        if not status:
            msg = 'Не смог обновить сессии пользователя!'
            print(msg)
            return dumps({
                'status': Status.ERROR,
                'msg'   : msg
            })

        log.save_action(session.name, 'admin', 'Изменил права пользователю {0}'.format(user))
        return dumps({
            'status' : Status.SUCCESS
        })