как заставить методы odoo работать только в указанном c представлении? - PullRequest
1 голос
/ 19 января 2020

Я создал метод, который вызывает ошибки проверки при запросе на отпуск, но мне нужен этот метод, чтобы он не работал в запросе на выделение отпуска и прошел все проверки. Должен ли я изменить код python для прохождения во время условия или я должен работать с xml.

thia the code

@api.constrains('state', 'date_from', 'holiday_status_id',)
def _check_hire_date(self):

    if self.holiday_type == 'category':
        print "hhhhhhhhhhhhhhhhhh"
    return
    from_dt = fields.Datetime.from_string(self.date_from)
    to_dt = fields.Datetime.from_string(self.date_to)
    if self.holiday_status_id.is_pass:
        return
    if self.employee_id.joining_date:
        jo_dt = fields.Datetime.from_string(self.employee_id.joining_date)
    else:
        raise ValidationError("you must define joining date")

    if self.date_from or self.date_to:
        now = datetime.datetime.now()
        now_time_delta = now - to_dt

        hire_time_delta = from_dt - jo_dt
        diff_time_delta = to_dt - from_dt
        if hire_time_delta.days < 180:
            raise ValidationError("don’t allowed to take this vacancy before 6 months from hired date")

        if self.holiday_status_id.lev_type == 'Casual' and self.number_of_days_temp > 2:
            print ('innnnnnnnnnnnn',diff_time_delta.days)
            raise ValidationError("don’t allowed to take vacancy more than 2 days")

        if self.holiday_status_id.lev_type in ['Sick', 'Casual'] and now_time_delta.days > 3 :
            raise ValidationError("don’t allowed to make this vacancy more than 3 days from back to work")

        if self.holiday_status_id.lev_type in ['Sick', 'Paternity'] and not self.attachment:
                raise ValidationError('You cannot send the leave request without attaching a document.')

        if self.holiday_status_id.lev_type == 'Maternity' and hire_time_delta.days < 300 :
            raise ValidationError("don’t allowed to take this vacancy before 10 months from hired date")

        if self.holiday_status_id.lev_type == 'Pilgrimage' and hire_time_delta.days < 1800 :
                    raise ValidationError("don’t allowed to take this vacancy before 5 Years from hired date")

1 Ответ

2 голосов
/ 20 января 2020

Я думаю, что самый простой способ сделать это, используя context, передать специальный key в действии вашего представления:

     <!-- in your act_window definition -->
     <field name="context">{'check_hire_date': 1}</field>

Затем в методе, если этот ключ существует в контексте начните проверку, если не пройдете ее:

    @api.constrains('state', 'date_from', 'holiday_status_id',)
    def _check_hire_date(self):
       if not self.env.context.get('check_hire_date', False):
          return 
       # the rest of your code 

Надеюсь, это поможет вам

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...