mirror of
https://gitlab.com/sonalarora/tra_backend.git
synced 2025-12-18 10:49:11 +02:00
work on diet plan
This commit is contained in:
111
diet_template/wizard/diet_schedule.py
Normal file
111
diet_template/wizard/diet_schedule.py
Normal file
@@ -0,0 +1,111 @@
|
||||
# See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from datetime import datetime, timedelta
|
||||
from odoo import api, fields, models, _
|
||||
from odoo.exceptions import ValidationError
|
||||
from odoo.tools import DEFAULT_SERVER_DATE_FORMAT
|
||||
|
||||
|
||||
class DietSchedule(models.TransientModel):
|
||||
"""object for taking information about Diet schedule."""
|
||||
|
||||
_name = 'diet.scheduling'
|
||||
_description = 'Diet Schedule'
|
||||
|
||||
member_id = fields.Many2one('res.partner', string='Member')
|
||||
goal_id = fields.Many2one('diet.master', string='Diet Plan')
|
||||
total_days = fields.Integer(string="Total Days Of Plan",
|
||||
compute='_compute_total_days')
|
||||
start_date = fields.Date(string='Start Date',
|
||||
default=datetime.strftime(
|
||||
datetime.now(), DEFAULT_SERVER_DATE_FORMAT))
|
||||
end_date = fields.Date(string='End Date')
|
||||
|
||||
@api.onchange('member_id')
|
||||
def _onchange_member_id(self):
|
||||
if self.env.user.has_group('gym.group_gym_trainer'):
|
||||
partner_list = []
|
||||
calendar_event_ids = self.env['calendar.event'].search(
|
||||
[('trainer_id.user_id', '=', self.env.user.id)])
|
||||
for rec in calendar_event_ids:
|
||||
partner_list += rec.partner_ids.ids
|
||||
return {'domain': {
|
||||
'member_id': [('id', 'in', partner_list)]}}
|
||||
return {}
|
||||
|
||||
@api.onchange('goal_id', 'start_date')
|
||||
def _onchange_total_diet_plan_days(self):
|
||||
"""Method for assign total days based on goal."""
|
||||
# End Date assign
|
||||
if not self.total_days:
|
||||
self.end_date = datetime.strftime(
|
||||
datetime.now(), DEFAULT_SERVER_DATE_FORMAT)
|
||||
elif self.start_date:
|
||||
self.end_date = \
|
||||
self.start_date + timedelta(days=self.total_days - 1)
|
||||
|
||||
@api.depends('goal_id', 'start_date')
|
||||
def _compute_total_days(self):
|
||||
# Set the total Days
|
||||
self.total_days = self.goal_id.total_days
|
||||
|
||||
def schedule_project(self):
|
||||
"""Method for assign workout project to member."""
|
||||
project = self.env['project.project']
|
||||
project_task = self.env['project.task']
|
||||
user_obj = self.env['res.users']
|
||||
project_kanban = self.env.ref('project.view_project_kanban', False)
|
||||
for diet_schedule_rec in self:
|
||||
user_rec = user_obj.search(
|
||||
[('partner_id', '=', diet_schedule_rec.member_id.id)])
|
||||
if not user_rec:
|
||||
raise ValidationError(_('Please make the customer as user'))
|
||||
elif not diet_schedule_rec.total_days:
|
||||
raise ValidationError(_('You can\'t created diet schedule '
|
||||
'with total days of zero.'))
|
||||
else:
|
||||
# Creating the project
|
||||
val = {
|
||||
'name': diet_schedule_rec.member_id.name + "'s " +
|
||||
diet_schedule_rec.goal_id.name + ' Schedule',
|
||||
'type': 'diet',
|
||||
'partner_id': diet_schedule_rec.member_id.id
|
||||
}
|
||||
project_id = project.create(val)
|
||||
start_tm = diet_schedule_rec.start_date
|
||||
for task_rec in diet_schedule_rec.goal_id.diet_plan_ids:
|
||||
interval_list = []
|
||||
# loop on diet paln lines
|
||||
for diet_line in task_rec.food_item_ids:
|
||||
food_list = []
|
||||
# loop omn food items
|
||||
for food_rec in diet_line.food_item_ids:
|
||||
food_list.append((0, 0, {
|
||||
'food_name_id': food_rec.food_name_id.id,
|
||||
'quantity': food_rec.quantity
|
||||
}))
|
||||
interval_list.append((0, 0, {
|
||||
'interval': diet_line.interval,
|
||||
'food_item_ids': food_list
|
||||
}))
|
||||
# creating task and assign it to project
|
||||
project_task.create({'name': task_rec.name + " Plan ",
|
||||
'project_id': project_id.id,
|
||||
'diet_plan_ids': interval_list,
|
||||
'schedule_date': start_tm,
|
||||
'user_id': user_rec.id,
|
||||
'sequence': task_rec.sequence,
|
||||
'task_type': 'diet'
|
||||
})
|
||||
start_tm = start_tm + timedelta(days=1)
|
||||
return {
|
||||
'type': 'ir.actions.act_window',
|
||||
'domain': [('id', '=', project_id.id)],
|
||||
'binding_view_types': 'form',
|
||||
'view_mode': 'kanban,tree,form',
|
||||
'res_model': 'project.project',
|
||||
'view_id': project_kanban.id,
|
||||
'views': [(project_kanban.id, 'kanban'), (False, 'form')],
|
||||
'context': dict(create=False),
|
||||
'target': 'new'
|
||||
}
|
||||
Reference in New Issue
Block a user