Hi,
I have a code as below in a parent model (Project):
@classmethod
def __setup__(cls):
super().__setup__()
cls.proj_phase.selection = cls._get_phases(cls)
cls.proj_type.selection = cls._get_proj_types(cls)
cls._buttons.update({
'open_milestone_wizard_form': {
'readonly': Eval('id', -1) < 0,
'invisible': Eval('proj_type') != 'MILESTONES'
}
})
@classmethod
@ModelView.button_action('afx_project.act_project_milestone_input_view_form')
def open_milestone_wizard_form(cls, objects):
pass
When user click the button, the wizard popped-up, and I can retrieve Parent’s model ID using project = self.records[0] based on this solution, like below:
def default_start(self, fields):
projects = self.records #--- THIS WHERE I GOT PARENT'S MODEL ID ----
if projects:
days = 0
project = projects[0]
I try to do the same using the default PLUS button see below screenshot
but I cannot get the parent model ID:
class ProjectMilestone(ModelSQL, ModelView):
'Project Milestone'
__name__ = 'afx.project.milestone'
project = fields.Many2One('afx.project', "Project", required=True, ondelete='CASCADE')
proj_name = fields.Function(fields.Char('Project Name', readonly=True), 'get_proj_name')
proj_start = fields.Function(fields.Date('Project Start Date', readonly=True), 'get_proj_start')
proj_end = fields.Function(fields.Date('Project End Date', readonly=True), 'get_proj_end')
proj_duration = fields.Function(fields.Integer('Project Duration (days)', readonly=True), 'get_proj_duration')
proj_remaining_days = fields.Function(fields.Integer("Project's Remaining (days)", readonly=True), 'calc_proj_remaining_days')
def get_proj_name(self, name):
return self.project.proj_name
def get_proj_start(self, name):
return self.project.start_date
def get_proj_end(self, name):
return self.project.end_date
def get_proj_duration(self, name):
return self.project.proj_duration
Those methods to get projec’s data are all failed, meanwhile in the Front end, you don’t have option to select a Parent. How can I get the parent model’s data, like what I do if I am using Wizard?
Wizard can shows Project’s data as seen in below screenshot:
Note: if this is impossible, maybe the best solution is to force user to use button that triggers Wizard Form to popup.. but I need to disable PLUS button but still enable user to open an update form.
Regards
Bromo


