wbhuman_resources 1.55.9__py2.py3-none-any.whl → 1.56.0__py2.py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- wbhuman_resources/filters/calendars.py +0 -1
- wbhuman_resources/models/calendars.py +4 -4
- wbhuman_resources/models/employee.py +5 -2
- wbhuman_resources/models/kpi.py +5 -1
- wbhuman_resources/models/review.py +4 -1
- wbhuman_resources/tasks.py +1 -1
- wbhuman_resources/utils.py +4 -1
- wbhuman_resources/viewsets/absence.py +6 -6
- wbhuman_resources/viewsets/buttons/kpis.py +3 -3
- wbhuman_resources/viewsets/buttons/review.py +3 -3
- wbhuman_resources/viewsets/display/kpis.py +1 -1
- wbhuman_resources/viewsets/display/review.py +5 -5
- {wbhuman_resources-1.55.9.dist-info → wbhuman_resources-1.56.0.dist-info}/METADATA +1 -1
- {wbhuman_resources-1.55.9.dist-info → wbhuman_resources-1.56.0.dist-info}/RECORD +15 -15
- {wbhuman_resources-1.55.9.dist-info → wbhuman_resources-1.56.0.dist-info}/WHEEL +0 -0
|
@@ -76,10 +76,10 @@ class DayOffCalendar(WBModel):
|
|
|
76
76
|
DayOff.objects.get_or_create(
|
|
77
77
|
date=holiday_date, calendar=self, defaults={"count_as_holiday": True, "title": holiday_title}
|
|
78
78
|
)
|
|
79
|
-
except ModuleNotFoundError:
|
|
80
|
-
raise InvalidDayOffCalendarResourceError(_("The continent you've supplied is invalid."))
|
|
81
|
-
except AttributeError:
|
|
82
|
-
raise InvalidDayOffCalendarResourceError(_("The region you've supplied is invalid."))
|
|
79
|
+
except ModuleNotFoundError as e:
|
|
80
|
+
raise InvalidDayOffCalendarResourceError(_("The continent you've supplied is invalid.")) from e
|
|
81
|
+
except AttributeError as e:
|
|
82
|
+
raise InvalidDayOffCalendarResourceError(_("The region you've supplied is invalid.")) from e
|
|
83
83
|
|
|
84
84
|
def get_day_off_per_employee_df(self, start: date, end: date, employees) -> pd.DataFrame:
|
|
85
85
|
"""
|
|
@@ -830,8 +830,11 @@ class BalanceHourlyAllowance(models.Model):
|
|
|
830
830
|
models.Index(fields=["balance", "period_index"]),
|
|
831
831
|
]
|
|
832
832
|
|
|
833
|
+
def __str__(self) -> str:
|
|
834
|
+
return f"{self.balance} - {self.period_index} Period Index: {self.hourly_allowance}"
|
|
835
|
+
|
|
833
836
|
|
|
834
|
-
class EmployeeYearBalance(ComplexToStringMixin
|
|
837
|
+
class EmployeeYearBalance(ComplexToStringMixin):
|
|
835
838
|
employee = models.ForeignKey(
|
|
836
839
|
EmployeeHumanResource,
|
|
837
840
|
related_name="balances",
|
|
@@ -935,7 +938,7 @@ class EmployeeYearBalance(ComplexToStringMixin, models.Model):
|
|
|
935
938
|
return "wbhuman_resources:employeeyearbalancerepresentation-list"
|
|
936
939
|
|
|
937
940
|
|
|
938
|
-
class EmployeeWeeklyOffPeriods(ComplexToStringMixin
|
|
941
|
+
class EmployeeWeeklyOffPeriods(ComplexToStringMixin):
|
|
939
942
|
employee = models.ForeignKey(
|
|
940
943
|
"wbhuman_resources.EmployeeHumanResource",
|
|
941
944
|
related_name="default_periods_relationships",
|
wbhuman_resources/models/kpi.py
CHANGED
|
@@ -82,7 +82,8 @@ class KPI(WBModel):
|
|
|
82
82
|
|
|
83
83
|
@staticmethod
|
|
84
84
|
def get_all_handlers() -> Iterator[KPIHandler]:
|
|
85
|
-
for
|
|
85
|
+
for param in settings.KPI_HANDLERS:
|
|
86
|
+
handler_path = param[0]
|
|
86
87
|
*module, handler = handler_path.split(".")
|
|
87
88
|
module_path = ".".join(module)
|
|
88
89
|
yield getattr(importlib.import_module(module_path), handler)()
|
|
@@ -177,6 +178,9 @@ class Evaluation(models.Model):
|
|
|
177
178
|
verbose_name = _("Evaluation")
|
|
178
179
|
verbose_name_plural = _("Evaluations")
|
|
179
180
|
|
|
181
|
+
def __str__(self) -> str:
|
|
182
|
+
return f"{self.kpi} - {self.evaluation_date}"
|
|
183
|
+
|
|
180
184
|
def get_rating(self):
|
|
181
185
|
list_date = list(
|
|
182
186
|
pd.date_range(
|
|
@@ -105,7 +105,7 @@ class Review(CloneMixin, ComplexToStringMixin, WBModel):
|
|
|
105
105
|
WBColor.GREEN_LIGHT.value,
|
|
106
106
|
WBColor.GREEN_DARK.value,
|
|
107
107
|
]
|
|
108
|
-
return [choice for choice in zip(cls, colors)]
|
|
108
|
+
return [choice for choice in zip(cls, colors, strict=False)]
|
|
109
109
|
|
|
110
110
|
class Type(models.TextChoices):
|
|
111
111
|
ANNUAL = "ANNUAL", _("Annual")
|
|
@@ -721,6 +721,9 @@ class ReviewAnswer(models.Model):
|
|
|
721
721
|
)
|
|
722
722
|
answer_text = models.TextField(null=True, blank=True, verbose_name=_("Comment"))
|
|
723
723
|
|
|
724
|
+
def __str__(self) -> str:
|
|
725
|
+
return f"{self.question} - {self.answered_by}"
|
|
726
|
+
|
|
724
727
|
@classmethod
|
|
725
728
|
def get_endpoint_basename(cls):
|
|
726
729
|
return "wbhuman_resources:reviewanswer"
|
wbhuman_resources/tasks.py
CHANGED
|
@@ -173,7 +173,7 @@ def daily_automatic_application_deadline():
|
|
|
173
173
|
|
|
174
174
|
|
|
175
175
|
@shared_task
|
|
176
|
-
def periodic_updating_kpi_task(kpi_id=
|
|
176
|
+
def periodic_updating_kpi_task(kpi_id: list | None = None, start=None, end=None):
|
|
177
177
|
intervals = {elt.name: KPI.Interval.get_frequence_correspondance(elt.name) for elt in KPI.Interval}
|
|
178
178
|
for key, value in intervals.items():
|
|
179
179
|
kpis = (
|
wbhuman_resources/utils.py
CHANGED
|
@@ -6,8 +6,11 @@ from django.utils import timezone
|
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
def get_number_of_hours_between_dates(
|
|
9
|
-
d1, d2, list_employee_dayoffs, list_public_holidays=False, hours_range=
|
|
9
|
+
d1, d2, list_employee_dayoffs, list_public_holidays=False, hours_range=None, granularity=12
|
|
10
10
|
):
|
|
11
|
+
if hours_range is None:
|
|
12
|
+
hours_range = range(0, 23)
|
|
13
|
+
|
|
11
14
|
def convert_days_from_hours(hours, granularity, hours_per_day):
|
|
12
15
|
return int(hours / granularity) * granularity / hours_per_day
|
|
13
16
|
|
|
@@ -5,7 +5,7 @@ from django.db.models.functions import Concat, Extract
|
|
|
5
5
|
from django.shortcuts import get_object_or_404
|
|
6
6
|
from django.utils import timezone
|
|
7
7
|
from django.utils.functional import cached_property
|
|
8
|
-
from django.utils.translation import gettext
|
|
8
|
+
from django.utils.translation import gettext
|
|
9
9
|
from rest_framework import filters
|
|
10
10
|
from rest_framework.decorators import action
|
|
11
11
|
from rest_framework.response import Response
|
|
@@ -143,7 +143,7 @@ class AbsenceRequestModelViewSet(EmployeeViewMixin, viewsets.ModelViewSet):
|
|
|
143
143
|
).exclude(id=instance.id)
|
|
144
144
|
activities_title = qs.values_list("title", flat=True)
|
|
145
145
|
if len(activities_title) > 0:
|
|
146
|
-
message =
|
|
146
|
+
message = gettext("<p>During this absence, you already have these events:</p><ul>")
|
|
147
147
|
for activity_title in activities_title:
|
|
148
148
|
message += f"<li>{activity_title}</li>"
|
|
149
149
|
message += "</ul>"
|
|
@@ -169,11 +169,11 @@ class AbsenceRequestModelViewSet(EmployeeViewMixin, viewsets.ModelViewSet):
|
|
|
169
169
|
available_hourly_balance_in_days = (
|
|
170
170
|
available_hourly_balance / instance.employee.calendar.get_daily_hours()
|
|
171
171
|
)
|
|
172
|
-
message =
|
|
172
|
+
message = gettext(
|
|
173
173
|
"After this request, you will have {} days ({} hours) left for the balance {}</b>"
|
|
174
174
|
).format(available_hourly_balance_in_days, available_hourly_balance, current_balance.year)
|
|
175
175
|
if other_pending_hours > 0:
|
|
176
|
-
message +=
|
|
176
|
+
message += gettext(
|
|
177
177
|
" (not including <b>{pending_hours}</b> hours from other pending/draft absence requests)"
|
|
178
178
|
).format(pending_hours=other_pending_hours)
|
|
179
179
|
if available_hourly_balance < 0:
|
|
@@ -185,7 +185,7 @@ class AbsenceRequestModelViewSet(EmployeeViewMixin, viewsets.ModelViewSet):
|
|
|
185
185
|
)
|
|
186
186
|
if day_offs:
|
|
187
187
|
day_offs_messages = [
|
|
188
|
-
|
|
188
|
+
gettext("{holiday} not counted ({title})").format(
|
|
189
189
|
holiday=holiday.date.strftime("%d.%m.%Y"), title=holiday.title
|
|
190
190
|
)
|
|
191
191
|
for holiday in day_offs
|
|
@@ -236,7 +236,7 @@ class AbsenceRequestModelViewSet(EmployeeViewMixin, viewsets.ModelViewSet):
|
|
|
236
236
|
def increaseday(self, request, pk=None):
|
|
237
237
|
absence_request = get_object_or_404(AbsenceRequest, id=pk)
|
|
238
238
|
if absence_request.type.is_extensible and (number_days := int(request.POST.get("number_days", 1))):
|
|
239
|
-
for
|
|
239
|
+
for _ in range(number_days):
|
|
240
240
|
if next_extensible_period := absence_request.next_extensible_period:
|
|
241
241
|
absence_request.period = next_extensible_period
|
|
242
242
|
absence_request.save()
|
|
@@ -5,12 +5,12 @@ from wbcore.metadata.configs import buttons as bt
|
|
|
5
5
|
|
|
6
6
|
class KPIButtonConfig(bt.ButtonViewConfig):
|
|
7
7
|
def get_custom_instance_buttons(self):
|
|
8
|
-
|
|
8
|
+
buttons = []
|
|
9
9
|
if self.view.kwargs.get("pk", None):
|
|
10
|
-
|
|
10
|
+
buttons += [
|
|
11
11
|
bt.WidgetButton(
|
|
12
12
|
key="evaluationgraph", label=_("Evaluation Graph"), icon=WBIcon.CHART_BARS_HORIZONTAL.icon
|
|
13
13
|
),
|
|
14
14
|
bt.WidgetButton(key="kpievaluationpandas", label=_("Latest Evaluations"), icon=WBIcon.DATA_GRID.icon),
|
|
15
15
|
]
|
|
16
|
-
return {*
|
|
16
|
+
return {*buttons}
|
|
@@ -32,7 +32,7 @@ class ReviewButtonConfig(bt.ButtonViewConfig):
|
|
|
32
32
|
return self.get_custom_instance_buttons()
|
|
33
33
|
|
|
34
34
|
def get_custom_instance_buttons(self):
|
|
35
|
-
|
|
35
|
+
buttons = [
|
|
36
36
|
bt.WidgetButton(key="progress", label=_("Progress"), icon=WBIcon.CHART_BARS_HORIZONTAL.icon),
|
|
37
37
|
bt.ActionButton(
|
|
38
38
|
method=RequestType.PATCH,
|
|
@@ -132,7 +132,7 @@ class ReviewButtonConfig(bt.ButtonViewConfig):
|
|
|
132
132
|
"include_kpi",
|
|
133
133
|
)
|
|
134
134
|
|
|
135
|
-
|
|
135
|
+
buttons.append(
|
|
136
136
|
bt.ActionButton(
|
|
137
137
|
method=RequestType.PATCH,
|
|
138
138
|
identifiers=("wbhuman_resources:review",),
|
|
@@ -158,7 +158,7 @@ class ReviewButtonConfig(bt.ButtonViewConfig):
|
|
|
158
158
|
),
|
|
159
159
|
)
|
|
160
160
|
)
|
|
161
|
-
return {*
|
|
161
|
+
return {*buttons}
|
|
162
162
|
|
|
163
163
|
|
|
164
164
|
class ReviewGroupButtonConfig(bt.ButtonViewConfig):
|
|
@@ -42,7 +42,7 @@ class KPIDisplayConfig(DisplayViewConfig):
|
|
|
42
42
|
create_simple_section("parameters_section", _("Parameters"), handler.get_display_grid()),
|
|
43
43
|
create_simple_section("evaluation_section", _("Evaluations"), [["evaluations"]], "evaluations"),
|
|
44
44
|
]
|
|
45
|
-
grid_fields.extend(["parameters_section", "evaluation_section"])
|
|
45
|
+
grid_fields.extend([["parameters_section", "evaluation_section"]])
|
|
46
46
|
return create_simple_display(grid_fields, sections)
|
|
47
47
|
|
|
48
48
|
|
|
@@ -303,24 +303,24 @@ class ReviewQuestionReviewDisplayConfig(ReviewQuestionDisplayConfig):
|
|
|
303
303
|
|
|
304
304
|
class ReviewAnswerDisplayConfig(DisplayViewConfig):
|
|
305
305
|
def get_list_display(self) -> Optional[dp.ListDisplay]:
|
|
306
|
-
|
|
306
|
+
fields = [
|
|
307
307
|
dp.Field(key="question_name", label=_("Question"), width=Unit.PIXEL(720)),
|
|
308
308
|
dp.Field(key="mandatory", label=_("Mandatory"), width=Unit.PIXEL(80)),
|
|
309
309
|
]
|
|
310
310
|
if self.view.get_queryset().filter(question__answer_type=ReviewQuestion.ANSWERTYPE.RATING):
|
|
311
|
-
|
|
311
|
+
fields += [dp.Field(key="answer_number", label=_("Rating"), width=Unit.PIXEL(170))]
|
|
312
312
|
|
|
313
|
-
|
|
313
|
+
fields += [dp.Field(key="answer_text", label=_("Comment"), width=Unit.PIXEL(720))]
|
|
314
314
|
|
|
315
315
|
if review_id := self.view.kwargs.get("review_id"):
|
|
316
316
|
review = Review.objects.get(id=review_id)
|
|
317
317
|
if review.status in [Review.Status.EVALUATION, Review.Status.VALIDATION]:
|
|
318
|
-
|
|
318
|
+
fields = [
|
|
319
319
|
dp.Field(key="question_name", label=_("Question"), width=Unit.PIXEL(740)),
|
|
320
320
|
dp.Field(key="answered_by", label=_("Answered By"), width=Unit.PIXEL(140)),
|
|
321
321
|
dp.Field(key="answer_text", label=_("Comment"), width=Unit.PIXEL(740)),
|
|
322
322
|
]
|
|
323
|
-
return dp.ListDisplay(fields=
|
|
323
|
+
return dp.ListDisplay(fields=fields)
|
|
324
324
|
|
|
325
325
|
def get_instance_display(self) -> Display:
|
|
326
326
|
grid_fields = [[repeat_field(2, "question_name")], ["mandatory", "."]]
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
wbhuman_resources/__init__.py,sha256=J-j-u0itpEFT6irdmWmixQqYMadNl1X91TxUmoiLHMI,22
|
|
2
2
|
wbhuman_resources/apps.py,sha256=UPXBSjg_i7Zo00IPxMuxV7iYEsY1GWIu217R_ZqEWR8,675
|
|
3
3
|
wbhuman_resources/dynamic_preferences_registry.py,sha256=Piydi7FVWyzuQK6BDGEVmoP2CyCwqOEJdxgiErsNo4w,4107
|
|
4
|
-
wbhuman_resources/tasks.py,sha256=
|
|
4
|
+
wbhuman_resources/tasks.py,sha256=tQ6MYa9Zw4yaozubNFo80osqAHY7z4usSAc-Kp5ikJA,7786
|
|
5
5
|
wbhuman_resources/urls.py,sha256=FfpMuxZejfMt3xVu18WOa2aXC4ht2-MIESRmC_GUuIU,7980
|
|
6
|
-
wbhuman_resources/utils.py,sha256=
|
|
6
|
+
wbhuman_resources/utils.py,sha256=EZNxathbV_Azj1XX489X78WDbiNwj6F5FUqBqMrV2sg,1487
|
|
7
7
|
wbhuman_resources/admin/__init__.py,sha256=hXIquTlOG4HFeeMetc6T1LwNJmFc9HBbtpCAQsgV8oM,113
|
|
8
8
|
wbhuman_resources/admin/absence.py,sha256=cAc0O4f3BFp9sXrzFHB3ly-JzeLMqPmWgLXsMrSWlHY,3712
|
|
9
9
|
wbhuman_resources/admin/calendars.py,sha256=p6HtJ1cr9f6_RDBSApqTDwxWWhpDEzZ-EisOodT-y5I,860
|
|
@@ -18,7 +18,7 @@ wbhuman_resources/factories/kpi.py,sha256=RkaLN1bXmGN_I7v6NnTJBqqWs1AV1jrxgNgTSM
|
|
|
18
18
|
wbhuman_resources/filters/__init__.py,sha256=X3NkjcBU_i_K8cTHEptAH3YRaG1CXQ-JAHW7rqcJ2sI,689
|
|
19
19
|
wbhuman_resources/filters/absence.py,sha256=yNQDFWeO1kyiXfmLKKLPHReq_r8iwgGYnm0AdwWI-98,3795
|
|
20
20
|
wbhuman_resources/filters/absence_graphs.py,sha256=L7eN32rJ9V20mPfv5XtuRpH0BUh1V6th7czA-ZTKkXo,2984
|
|
21
|
-
wbhuman_resources/filters/calendars.py,sha256=
|
|
21
|
+
wbhuman_resources/filters/calendars.py,sha256=t5Z8RrkJkG7uDOqYfTYyyYZpGZ3YgDUz8AqHoAbzHlM,812
|
|
22
22
|
wbhuman_resources/filters/employee.py,sha256=DmtqdWldt2vRkhk78T61i7dFy9KeI7FuBES6A3MlRoI,3121
|
|
23
23
|
wbhuman_resources/filters/kpi.py,sha256=OFEgDDfEw6kSn890rQlsJfFtVIWBziyRqf7HvG30Dt8,946
|
|
24
24
|
wbhuman_resources/filters/review.py,sha256=uqtms_Yx4mioknpnJ-RqKczS6XJsH0pvyYKqJ7ZeOnM,3988
|
|
@@ -42,11 +42,11 @@ wbhuman_resources/migrations/0022_remove_review_editable_mode.py,sha256=5Q1y_wZZ
|
|
|
42
42
|
wbhuman_resources/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
43
43
|
wbhuman_resources/models/__init__.py,sha256=PW4LDmMpJqcynmnbdy_VSwbhxyDU9ZCR2LIXk6LkHlg,631
|
|
44
44
|
wbhuman_resources/models/absence.py,sha256=WDepyQjrySU860ESSZRP4Z13UlenMZD5JTsDS8Bm7xY,35892
|
|
45
|
-
wbhuman_resources/models/calendars.py,sha256=
|
|
46
|
-
wbhuman_resources/models/employee.py,sha256=
|
|
47
|
-
wbhuman_resources/models/kpi.py,sha256=
|
|
45
|
+
wbhuman_resources/models/calendars.py,sha256=TjUaabVldDY4baZN9tGVJA609LUAZV2pCowTCEa4VYA,14621
|
|
46
|
+
wbhuman_resources/models/employee.py,sha256=qj8mGcC4sOMLj6Qh7ppDMG82o35T1xvU2VHhKRrZ5Sg,49046
|
|
47
|
+
wbhuman_resources/models/kpi.py,sha256=BrYKb56MKm5Ya0sIav3-jmw0qk4zKNoSRr0bYfNM9mk,7270
|
|
48
48
|
wbhuman_resources/models/preferences.py,sha256=iQhcu-jrEkk8DgM5hgakg5mdkbtlO11KeJC0QpTBcKI,1432
|
|
49
|
-
wbhuman_resources/models/review.py,sha256=
|
|
49
|
+
wbhuman_resources/models/review.py,sha256=QXXckJclht6iAw75_QL6bva4urHeSeUgbu4D_lsmiaw,39414
|
|
50
50
|
wbhuman_resources/permissions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
51
51
|
wbhuman_resources/permissions/backend.py,sha256=lPIcCLkYG7gqtx7EgGquQrt_yhscZWj2ZGBqOWm8Cww,872
|
|
52
52
|
wbhuman_resources/serializers/__init__.py,sha256=r-XHaWLkgo0mxxns3cpT_fo9ASWagMW9O26tqmsXtHg,1620
|
|
@@ -68,7 +68,7 @@ wbhuman_resources/tests/models/test_employees.py,sha256=vubEioP9LDcH5OCi4gK4Mrto
|
|
|
68
68
|
wbhuman_resources/tests/models/test_review.py,sha256=YZHxBmvqEpvbSaePldJZ1vzFk7F6Hq1paDrrrODIoGY,4527
|
|
69
69
|
wbhuman_resources/tests/models/test_utils.py,sha256=f3df5rpk7--6_kM1XGspeCrDUYto0m97i8Cs8pYM7B4,4676
|
|
70
70
|
wbhuman_resources/viewsets/__init__.py,sha256=Yg_nkFnzkf_HGmScY6jcZBXcFcwJ4ePW5gKwpaG2ybU,2142
|
|
71
|
-
wbhuman_resources/viewsets/absence.py,sha256=
|
|
71
|
+
wbhuman_resources/viewsets/absence.py,sha256=aYA8zNvRw3H4lR1FEXsI9_JA9kW4j5guwDuYrPwGiR8,13969
|
|
72
72
|
wbhuman_resources/viewsets/absence_charts.py,sha256=1z8lKt-8O7MhePBVHZTbgeZlD0X0IcP8JnhA_gKU7qw,12303
|
|
73
73
|
wbhuman_resources/viewsets/calendars.py,sha256=qX5rPnw6f6LBYd8_vxc17AUtX22LGwhZs5_fiO2sBbE,3153
|
|
74
74
|
wbhuman_resources/viewsets/employee.py,sha256=ffJpIrV2f2n_a2I-Dx6XXlirLO6G3D83cdpwZDKBAVI,7345
|
|
@@ -79,14 +79,14 @@ wbhuman_resources/viewsets/utils.py,sha256=stM4coAl9JVLdJ1Q2z4ziDOoNSNXugydpT4a4
|
|
|
79
79
|
wbhuman_resources/viewsets/buttons/__init__.py,sha256=bjyHwL71gqYc5hz13GtDU7l8ocOscBgThet7FIesZ_s,248
|
|
80
80
|
wbhuman_resources/viewsets/buttons/absence.py,sha256=wEumCQ3qEomU9-RrsSCJS_A2FeBChTPoaOXANyP0uOU,1227
|
|
81
81
|
wbhuman_resources/viewsets/buttons/employee.py,sha256=yjsZZP1ULKNT-I14s7UOyodVsD2icxOi1vSw2-bwVO4,1916
|
|
82
|
-
wbhuman_resources/viewsets/buttons/kpis.py,sha256=
|
|
83
|
-
wbhuman_resources/viewsets/buttons/review.py,sha256=
|
|
82
|
+
wbhuman_resources/viewsets/buttons/kpis.py,sha256=QYmWCfgOBWJRJEmKqsnFLyUWP9VpfREhVv5w7wRHIHM,642
|
|
83
|
+
wbhuman_resources/viewsets/buttons/review.py,sha256=QBVVLTelZIPAew_oHfzJKCGSgrF3tMLRkkc_BHzCwfQ,9463
|
|
84
84
|
wbhuman_resources/viewsets/display/__init__.py,sha256=RrGaTA-EMvnUyY1DkI-nSGKHCdimqCTS2xQfymuVcS8,1226
|
|
85
85
|
wbhuman_resources/viewsets/display/absence.py,sha256=3gF3fDUNwGoc-k1B8E0raGjgCyMqezkNA6-FR6xfgOw,13631
|
|
86
86
|
wbhuman_resources/viewsets/display/calendars.py,sha256=NWsPnNZQJuHBP8wAlh6iOE9ou4l93b1oE5WCxok7ADY,3041
|
|
87
87
|
wbhuman_resources/viewsets/display/employee.py,sha256=5DU_s61Ad0NsCqunes6vLDqzCtqBmr3VGzIXCboLROI,10880
|
|
88
|
-
wbhuman_resources/viewsets/display/kpis.py,sha256=
|
|
89
|
-
wbhuman_resources/viewsets/display/review.py,sha256=
|
|
88
|
+
wbhuman_resources/viewsets/display/kpis.py,sha256=40RM0Bq7nWpMc0b29kJhgynDjMyUoedcld1AlQ5w21I,3668
|
|
89
|
+
wbhuman_resources/viewsets/display/review.py,sha256=9vW-h8oY4GBf5I8scUI48EPZPWpNIZ70ht5QT9Hy-DY,18879
|
|
90
90
|
wbhuman_resources/viewsets/endpoints/__init__.py,sha256=4wnSFaRKJwTcK2_F7upzVZKPtK5BLcLRpOPcECq9in8,1450
|
|
91
91
|
wbhuman_resources/viewsets/endpoints/absence.py,sha256=s5Z0B_nenU0b_cIpe1TroLA71ASxszBt4uWODmRbrU8,1863
|
|
92
92
|
wbhuman_resources/viewsets/endpoints/calendars.py,sha256=Rt-fMwNBQCugBE3-LLK3P3OsF7upbEPm2pyy175ZcPM,640
|
|
@@ -105,6 +105,6 @@ wbhuman_resources/viewsets/titles/absence.py,sha256=4F4ENgmZBGKiDuC8DmgrklNXEsRo
|
|
|
105
105
|
wbhuman_resources/viewsets/titles/employee.py,sha256=VP_AC3E-3fpbO8-RUvi2haXcoJr9LVLYtJifGawVRGo,565
|
|
106
106
|
wbhuman_resources/viewsets/titles/kpis.py,sha256=OSH_vIsIjfThWn17X_K7ykBKAFqNvz8M4PyFCF8BRQo,491
|
|
107
107
|
wbhuman_resources/viewsets/titles/review.py,sha256=fL_PqTNAIK7alk_-7RaklkiR9guh54u8oS0m5AWOSSc,2458
|
|
108
|
-
wbhuman_resources-1.
|
|
109
|
-
wbhuman_resources-1.
|
|
110
|
-
wbhuman_resources-1.
|
|
108
|
+
wbhuman_resources-1.56.0.dist-info/METADATA,sha256=Sa8g7YSmf41ydVmtZ39-9oZ1CmymNa1bmy5vxovq7Qg,272
|
|
109
|
+
wbhuman_resources-1.56.0.dist-info/WHEEL,sha256=tkmg4JIqwd9H8mL30xA7crRmoStyCtGp0VWshokd1Jc,105
|
|
110
|
+
wbhuman_resources-1.56.0.dist-info/RECORD,,
|
|
File without changes
|