Я создал систему, которая позволяет пользователям подавать заявку на проверку кода и ждать одобрения менеджера.
И теперь я хочу добиться следующего:
- Если он одобрен,
, после чего все поля станут доступными только для чтения (я вручную установил Имя проекта здесь только для чтения):
Если оно отклонено,
тогда все поля станут редактируемыми. Разумеется, при создании нового проекта все поля должны быть доступны для редактирования.
Код класса
Project
иProjectView
приведен ниже:from flask_sqlalchemy import SQLAlchemy from flask_admin.contrib import sqla from flask_security import current_user # Create Flask application app = Flask(__name__) app.config.from_pyfile('config.py') db = SQLAlchemy(app) class Project(db.Model): id = db.Column(db.Integer, primary_key=True) project_name = db.Column(db.Unicode(128)) version = db.Column(db.Unicode(128)) SVN = db.Column(db.UnicodeText) approve = db.Column(db.Boolean()) def __unicode__(self): return self.name class ProjectView(sqla.ModelView): def is_accessible(self): if not current_user.is_active or not current_user.is_authenticated: return False return False @property def _form_edit_rules(self): return rules.RuleSet(self, self.form_rules) @_form_edit_rules.setter def _form_edit_rules(self, value): pass @property def _form_create_rules(self): return rules.RuleSet(self, self.form_rules) @_form_create_rules.setter def _form_create_rules(self, value): pass @property def form_rules(self): form_rules = [ rules.Field('project_name'), rules.Field('version'), rules.Field('SVN'), ] if not has_app_context() or current_user.has_role('superuser'): form_rules.append('approve')
На мой взгляд, поскольку одобрить является логической переменной, должно быть суждение по условию, чтобы определить, равно ли оно 0 или 1, а затем поле становится доступным только для чтения или редактируемым соответственно. .
Спасибо за любой совет заранее.