From: Emilie Date: Wed, 28 Dec 2016 15:57:58 +0000 (+0100) Subject: [Timesheet] : calculate nb of leaved days X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=8b5329506f29c87aac0a8780817b3a7923e8c22a;p=mezzo.git [Timesheet] : calculate nb of leaved days --- diff --git a/app/organization/network/api.py b/app/organization/network/api.py index e84d1ed7..481b9193 100644 --- a/app/organization/network/api.py +++ b/app/organization/network/api.py @@ -5,14 +5,42 @@ from django.conf import settings from datetime import date, timedelta -def get_active_person(): - r_p_active = requests.get(settings.FIGGO_API_URL_PROD+'api/users?fields=id,lastname,firstname', - headers={'Authorization': settings.FIGGO_API_HEADER_AUTH}) - return r_p_active.json() +def figgo_request(method): + """generic method to call Figgo API""" + return requests.get(settings.FIGGO_API_URL_PROD+method, headers={'Authorization': settings.FIGGO_API_HEADER_AUTH}) -def get_inactive_person(): + +def get_active_persons(): + r_p_active = figgo_request('api/users?fields=id,lastname,firstname') + r_p_active = r_p_active.json() + return r_p_active['data'] + + +def get_inactive_persons(): yesterday = date.today() - timedelta(1) yesterday = yesterday.isoformat() - r_p_inactive = requests.get(settings.FIGGO_API_URL_PROD+'api/users?dtContractEnd=until,'+yesterday+',null&fields=id,lastname,firstname', - headers={'Authorization': settings.FIGGO_API_HEADER_AUTH}) - return r_p_inactive.json() + r_p_inactive = figgo_request('api/users?dtContractEnd=until,'+yesterday+',null&fields=id,lastname,firstname') + r_p_inactive = r_p_inactive.json() + return r_p_inactive['data'] + + +def get_leave_periods(date_from, date_to, person_external_id): + leave_periods = figgo_request('api/leaves?date=between,'+date_from+','+date_to+'&fields=owner.name,owner.login,owner.mail,owner.matricule,name,date,status,leaveScope&owner.id='+str(person_external_id)) + leave_periods = leave_periods.json() + return leave_periods['data'] + + +def get_leave_days(date_from, date_to, person_external_id): + """Calculate the number of validated leaving days. + It takes in account half days. + Return float value + """ + leave_periods = get_leave_periods(date_from, date_to, person_external_id) + days = 0 + for leave_period in leave_periods: + if leave_period['status'] == 1: + if leave_period['leaveScope'] == 'PM' or leave_period['leaveScope'] == 'AM': + days += 0.5 + if leave_period['leaveScope'] == 'ALL': + days += 1 + return days diff --git a/app/organization/network/management/commands/import-figgo-id.py b/app/organization/network/management/commands/import-figgo-id.py index 70d47754..63662d53 100644 --- a/app/organization/network/management/commands/import-figgo-id.py +++ b/app/organization/network/management/commands/import-figgo-id.py @@ -34,17 +34,17 @@ class Command(BaseCommand): number_of_person = 0 def handle(self, *args, **options): # process active person - self.update_external_id(get_active_person()) + self.update_external_id(get_active_persons()) # process INactive person - self.update_external_id(get_inactive_person()) + self.update_external_id(get_inactive_persons()) print('***************************************************') print("Number of person processed : "+str(self.number_of_person)) print('***************************************************') def update_external_id(self, figgo_users): - for figgo_user in figgo_users['data']: + for figgo_user in figgo_users: slug = slugify(figgo_user['firstName']+'-'+figgo_user['lastName']) person = Person.objects.filter(slug__contains=slug) if person: