wbhuman_resources 1.59.5rc0__py2.py3-none-any.whl → 1.59.6__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/factories/absence.py +1 -0
- wbhuman_resources/factories/calendars.py +1 -0
- wbhuman_resources/factories/employee.py +3 -0
- wbhuman_resources/factories/kpi.py +2 -0
- wbhuman_resources/migrations/0023_alter_employeehumanresource_weekly_off_periods.py +18 -0
- wbhuman_resources/models/calendars.py +1 -1
- wbhuman_resources/viewsets/absence_charts.py +4 -6
- wbhuman_resources/viewsets/kpi.py +2 -2
- wbhuman_resources/viewsets/review.py +12 -14
- {wbhuman_resources-1.59.5rc0.dist-info → wbhuman_resources-1.59.6.dist-info}/METADATA +2 -2
- {wbhuman_resources-1.59.5rc0.dist-info → wbhuman_resources-1.59.6.dist-info}/RECORD +12 -11
- {wbhuman_resources-1.59.5rc0.dist-info → wbhuman_resources-1.59.6.dist-info}/WHEEL +0 -0
|
@@ -22,6 +22,7 @@ class AbsenceRequestTypeFactory(factory.django.DjangoModelFactory):
|
|
|
22
22
|
class Meta:
|
|
23
23
|
model = AbsenceRequestType
|
|
24
24
|
django_get_or_create = ["title"]
|
|
25
|
+
skip_postgeneration_save = True
|
|
25
26
|
|
|
26
27
|
title = factory.Faker("text", max_nb_chars=64)
|
|
27
28
|
icon = factory.Iterator(WBIcon.values)
|
|
@@ -49,6 +49,7 @@ class DefaultDailyPeriodFactory(factory.django.DjangoModelFactory):
|
|
|
49
49
|
class Meta:
|
|
50
50
|
model = DefaultDailyPeriod
|
|
51
51
|
django_get_or_create = ["lower_time", "upper_time", "calendar"]
|
|
52
|
+
skip_postgeneration_save = True
|
|
52
53
|
|
|
53
54
|
|
|
54
55
|
class DayOffFactory(factory.django.DjangoModelFactory):
|
|
@@ -17,6 +17,7 @@ fake = Faker()
|
|
|
17
17
|
class PositionFactory(factory.django.DjangoModelFactory):
|
|
18
18
|
class Meta:
|
|
19
19
|
model = Position
|
|
20
|
+
skip_postgeneration_save = True
|
|
20
21
|
|
|
21
22
|
name = factory.Faker("text", max_nb_chars=64)
|
|
22
23
|
manager = None
|
|
@@ -32,6 +33,7 @@ class EmployeeHumanResourceFactory(factory.django.DjangoModelFactory):
|
|
|
32
33
|
class Meta:
|
|
33
34
|
model = EmployeeHumanResource
|
|
34
35
|
django_get_or_create = ["profile"]
|
|
36
|
+
skip_postgeneration_save = True
|
|
35
37
|
|
|
36
38
|
is_active = True
|
|
37
39
|
profile = factory.SubFactory("wbcore.contrib.authentication.factories.AuthenticatedPersonFactory")
|
|
@@ -49,6 +51,7 @@ class EmployeeYearBalanceFactory(factory.django.DjangoModelFactory):
|
|
|
49
51
|
class Meta:
|
|
50
52
|
model = EmployeeYearBalance
|
|
51
53
|
django_get_or_create = ["employee", "year"]
|
|
54
|
+
skip_postgeneration_save = True
|
|
52
55
|
|
|
53
56
|
employee = factory.SubFactory("wbhuman_resources.factories.EmployeeHumanResourceFactory")
|
|
54
57
|
year = factory.Faker("pyint", min_value=1970, max_value=2022)
|
|
@@ -25,6 +25,7 @@ fake = Faker()
|
|
|
25
25
|
class ReviewGroupFactory(factory.django.DjangoModelFactory):
|
|
26
26
|
class Meta:
|
|
27
27
|
model = ReviewGroup
|
|
28
|
+
skip_postgeneration_save = True
|
|
28
29
|
|
|
29
30
|
name = factory.Faker("text", max_nb_chars=64)
|
|
30
31
|
|
|
@@ -123,6 +124,7 @@ class ReviewAnswerNoCategoryFactory(ReviewAnswerFactory):
|
|
|
123
124
|
class KPIFactory(factory.django.DjangoModelFactory):
|
|
124
125
|
class Meta:
|
|
125
126
|
model = KPI
|
|
127
|
+
skip_postgeneration_save = True
|
|
126
128
|
|
|
127
129
|
name = factory.Faker("pystr")
|
|
128
130
|
goal = factory.Faker("pyint", min_value=0, max_value=9999)
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Generated by Django 5.2.9 on 2025-12-09 08:52
|
|
2
|
+
|
|
3
|
+
from django.db import migrations, models
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class Migration(migrations.Migration):
|
|
7
|
+
|
|
8
|
+
dependencies = [
|
|
9
|
+
('wbhuman_resources', '0022_remove_review_editable_mode'),
|
|
10
|
+
]
|
|
11
|
+
|
|
12
|
+
operations = [
|
|
13
|
+
migrations.AlterField(
|
|
14
|
+
model_name='employeehumanresource',
|
|
15
|
+
name='weekly_off_periods',
|
|
16
|
+
field=models.ManyToManyField(related_name='employees_off', through='wbhuman_resources.EmployeeWeeklyOffPeriods', through_fields=('employee', 'period'), to='wbhuman_resources.defaultdailyperiod', verbose_name='Weekly off periods'),
|
|
17
|
+
),
|
|
18
|
+
]
|
|
@@ -302,7 +302,7 @@ class DefaultDailyPeriod(models.Model):
|
|
|
302
302
|
verbose_name = _("Default Daily Period")
|
|
303
303
|
verbose_name_plural = _("Default Daily Periods")
|
|
304
304
|
constraints = [
|
|
305
|
-
CheckConstraint(
|
|
305
|
+
CheckConstraint(condition=Q(upper_time__gt=F("lower_time")), name="check_lower_time_lt_upper_time"),
|
|
306
306
|
ExclusionConstraint(
|
|
307
307
|
expressions=[("timespan", RangeOperators.OVERLAPS), ("calendar", RangeOperators.EQUAL)],
|
|
308
308
|
name="check_no_overlapping_default_periods_time",
|
|
@@ -10,8 +10,8 @@ from django.utils import timezone
|
|
|
10
10
|
from django.utils.dateparse import parse_date
|
|
11
11
|
from django.utils.translation import gettext as _
|
|
12
12
|
from wbcore import viewsets
|
|
13
|
-
from wbcore.pandas import fields as pf
|
|
14
|
-
from wbcore.pandas.views import PandasAPIViewSet
|
|
13
|
+
from wbcore.contrib.pandas import fields as pf
|
|
14
|
+
from wbcore.contrib.pandas.views import PandasAPIViewSet
|
|
15
15
|
from wbcore.utils.date import get_date_interval_from_request
|
|
16
16
|
|
|
17
17
|
from wbhuman_resources.filters import AbsenceRequestPlannerFilter, AbsenceTableFilter
|
|
@@ -104,8 +104,7 @@ def update_layoute(fig, start, end):
|
|
|
104
104
|
)
|
|
105
105
|
],
|
|
106
106
|
yaxis=dict(
|
|
107
|
-
title="",
|
|
108
|
-
titlefont=dict(color="#000000"),
|
|
107
|
+
title=dict(text="", font=dict(color="#000000")),
|
|
109
108
|
tickfont=dict(size=11, family="Courier", color="#000000"),
|
|
110
109
|
anchor="x",
|
|
111
110
|
side="left",
|
|
@@ -120,8 +119,7 @@ def update_layoute(fig, start, end):
|
|
|
120
119
|
spikethickness=1,
|
|
121
120
|
),
|
|
122
121
|
xaxis=dict(
|
|
123
|
-
title="",
|
|
124
|
-
titlefont=dict(color="#000000"),
|
|
122
|
+
title=dict(text="", font=dict(color="#000000")),
|
|
125
123
|
tickfont=dict(color="#000000"),
|
|
126
124
|
showline=False,
|
|
127
125
|
linewidth=0.5,
|
|
@@ -9,9 +9,9 @@ from django.utils.translation import gettext
|
|
|
9
9
|
from django.utils.translation import gettext_lazy as _
|
|
10
10
|
from rest_framework import filters
|
|
11
11
|
from wbcore import viewsets
|
|
12
|
+
from wbcore.contrib.pandas import fields as pf
|
|
13
|
+
from wbcore.contrib.pandas.views import PandasAPIViewSet
|
|
12
14
|
from wbcore.filters import DjangoFilterBackend
|
|
13
|
-
from wbcore.pandas import fields as pf
|
|
14
|
-
from wbcore.pandas.views import PandasAPIViewSet
|
|
15
15
|
from wbcore.serializers.serializers import ModelSerializer
|
|
16
16
|
from wbcore.utils.strings import format_number
|
|
17
17
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import pandas as pd
|
|
2
2
|
from django.contrib.messages import info, warning
|
|
3
|
-
from django.db.models import
|
|
3
|
+
from django.db.models import F, Q, Value, functions
|
|
4
4
|
from django.db.models.fields import CharField
|
|
5
5
|
from django.shortcuts import get_object_or_404
|
|
6
6
|
from django.utils import timezone
|
|
@@ -12,8 +12,8 @@ from rest_framework.decorators import action
|
|
|
12
12
|
from rest_framework.response import Response
|
|
13
13
|
from wbcore import viewsets
|
|
14
14
|
from wbcore.contrib.authentication.authentication import JWTCookieAuthentication
|
|
15
|
-
from wbcore.pandas import fields as pf
|
|
16
|
-
from wbcore.pandas.views import PandasAPIViewSet
|
|
15
|
+
from wbcore.contrib.pandas import fields as pf
|
|
16
|
+
from wbcore.contrib.pandas.views import PandasAPIViewSet
|
|
17
17
|
from wbcore.utils.strings import format_number
|
|
18
18
|
from wbcore.utils.views import CloneMixin
|
|
19
19
|
from wbcore.viewsets.mixins import OrderableMixin
|
|
@@ -412,18 +412,16 @@ class ReviewQuestionModelViewSet(OrderableMixin, viewsets.ModelViewSet):
|
|
|
412
412
|
super()
|
|
413
413
|
.get_queryset()
|
|
414
414
|
.annotate(
|
|
415
|
-
review_for=
|
|
416
|
-
functions.
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
functions.Cast("for_company_peers", output_field=CharField()),
|
|
424
|
-
),
|
|
415
|
+
review_for=functions.Concat(
|
|
416
|
+
functions.Cast("for_reviewee", output_field=CharField()),
|
|
417
|
+
Value(" / "),
|
|
418
|
+
functions.Cast("for_reviewer", output_field=CharField()),
|
|
419
|
+
Value(" / "),
|
|
420
|
+
functions.Cast("for_department_peers", output_field=CharField()),
|
|
421
|
+
Value(" / "),
|
|
422
|
+
functions.Cast("for_company_peers", output_field=CharField()),
|
|
425
423
|
output_field=CharField(),
|
|
426
|
-
)
|
|
424
|
+
),
|
|
427
425
|
)
|
|
428
426
|
)
|
|
429
427
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: wbhuman_resources
|
|
3
|
-
Version: 1.59.
|
|
3
|
+
Version: 1.59.6
|
|
4
4
|
Summary: A workbench module for managing human resources.
|
|
5
5
|
Author-email: Christopher Wittlinger <c.wittlinger@stainly.com>
|
|
6
6
|
Requires-Dist: wbcore
|
|
7
7
|
Requires-Dist: workalendar==17.*
|
|
8
|
-
Requires-Dist: xlsxwriter==3.2
|
|
8
|
+
Requires-Dist: xlsxwriter==3.2.*
|
|
@@ -12,10 +12,10 @@ wbhuman_resources/admin/employee.py,sha256=XfxHCRv3lg9wFiOixIQIEmbRCLtZ3b3VBDS4k
|
|
|
12
12
|
wbhuman_resources/admin/kpi.py,sha256=ErNqXohvn-ht9cSFWg2qxd0qWyR6np0QklPARBNlKPI,542
|
|
13
13
|
wbhuman_resources/admin/review.py,sha256=Fxkfk5Fr3O8aOTGNXzQd8W_XRy4dKbAmBB6thAF6N-c,5038
|
|
14
14
|
wbhuman_resources/factories/__init__.py,sha256=-7-O4_7YqtwDDQUIRt4hJ6yiSpS0ESMbJTUoIhKPYS4,945
|
|
15
|
-
wbhuman_resources/factories/absence.py,sha256=
|
|
16
|
-
wbhuman_resources/factories/calendars.py,sha256=
|
|
17
|
-
wbhuman_resources/factories/employee.py,sha256=
|
|
18
|
-
wbhuman_resources/factories/kpi.py,sha256=
|
|
15
|
+
wbhuman_resources/factories/absence.py,sha256=g3n3roqTJPNhRseCkRQ_AmGdafn9Kinfbg6M4s1Daxc,3640
|
|
16
|
+
wbhuman_resources/factories/calendars.py,sha256=sNN2KX1NKXSSnXsQoNPOFh-05R584kel6vZ1O0ZX5no,1667
|
|
17
|
+
wbhuman_resources/factories/employee.py,sha256=gRPUeSSCW__68YjOxjw-c6yXdqvnQSSawYxuY-gZtew,3018
|
|
18
|
+
wbhuman_resources/factories/kpi.py,sha256=1HyTDbD7RhnyT39cbH22k8g164_Wsq50QOxAcSmA998,5413
|
|
19
19
|
wbhuman_resources/filters/__init__.py,sha256=X3NkjcBU_i_K8cTHEptAH3YRaG1CXQ-JAHW7rqcJ2sI,689
|
|
20
20
|
wbhuman_resources/filters/absence.py,sha256=yNQDFWeO1kyiXfmLKKLPHReq_r8iwgGYnm0AdwWI-98,3795
|
|
21
21
|
wbhuman_resources/filters/absence_graphs.py,sha256=L7eN32rJ9V20mPfv5XtuRpH0BUh1V6th7czA-ZTKkXo,2984
|
|
@@ -40,10 +40,11 @@ wbhuman_resources/migrations/0019_alter_absencerequest_options_alter_kpi_options
|
|
|
40
40
|
wbhuman_resources/migrations/0020_alter_employeeyearbalance_year_alter_review_year.py,sha256=fdt5rwLTNBWM6qN0a3T5b2WZs_BWoDilF1LjLYEe-2Q,788
|
|
41
41
|
wbhuman_resources/migrations/0021_alter_position_color.py,sha256=i1IPWN4StZ1DoeVgHlzqujzASz2JJeIo5vi07CnQi7Y,506
|
|
42
42
|
wbhuman_resources/migrations/0022_remove_review_editable_mode.py,sha256=5Q1y_wZZruvKRkK4l6LsHDUYagJ2spWx7RPHfH5X8Pw,2224
|
|
43
|
+
wbhuman_resources/migrations/0023_alter_employeehumanresource_weekly_off_periods.py,sha256=CqsuaO1Jc77wja8LYAQgfYF37BLc9pb69exHDIAa67s,624
|
|
43
44
|
wbhuman_resources/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
44
45
|
wbhuman_resources/models/__init__.py,sha256=PW4LDmMpJqcynmnbdy_VSwbhxyDU9ZCR2LIXk6LkHlg,631
|
|
45
46
|
wbhuman_resources/models/absence.py,sha256=WDepyQjrySU860ESSZRP4Z13UlenMZD5JTsDS8Bm7xY,35892
|
|
46
|
-
wbhuman_resources/models/calendars.py,sha256=
|
|
47
|
+
wbhuman_resources/models/calendars.py,sha256=g4AVAmRbe3tZQ0asZUKe8u6Dv1Iw52okutqnbrdZPt4,14625
|
|
47
48
|
wbhuman_resources/models/employee.py,sha256=9O39lFx1D-9YGSHCUph3ixqccQQaTsVwjWxfLnMhFwE,50350
|
|
48
49
|
wbhuman_resources/models/kpi.py,sha256=BrYKb56MKm5Ya0sIav3-jmw0qk4zKNoSRr0bYfNM9mk,7270
|
|
49
50
|
wbhuman_resources/models/preferences.py,sha256=iQhcu-jrEkk8DgM5hgakg5mdkbtlO11KeJC0QpTBcKI,1432
|
|
@@ -70,12 +71,12 @@ wbhuman_resources/tests/models/test_review.py,sha256=YZHxBmvqEpvbSaePldJZ1vzFk7F
|
|
|
70
71
|
wbhuman_resources/tests/models/test_utils.py,sha256=f3df5rpk7--6_kM1XGspeCrDUYto0m97i8Cs8pYM7B4,4676
|
|
71
72
|
wbhuman_resources/viewsets/__init__.py,sha256=Yg_nkFnzkf_HGmScY6jcZBXcFcwJ4ePW5gKwpaG2ybU,2142
|
|
72
73
|
wbhuman_resources/viewsets/absence.py,sha256=eY67-chD5RXX7_jt3rPVSZTili_p2jY52QMNy13h1jU,13191
|
|
73
|
-
wbhuman_resources/viewsets/absence_charts.py,sha256=
|
|
74
|
+
wbhuman_resources/viewsets/absence_charts.py,sha256=eML8_ayANy0GjeUTpfXyivQAeFJxEUroOOk59j5Nod0,12307
|
|
74
75
|
wbhuman_resources/viewsets/calendars.py,sha256=qX5rPnw6f6LBYd8_vxc17AUtX22LGwhZs5_fiO2sBbE,3153
|
|
75
76
|
wbhuman_resources/viewsets/employee.py,sha256=ffJpIrV2f2n_a2I-Dx6XXlirLO6G3D83cdpwZDKBAVI,7345
|
|
76
|
-
wbhuman_resources/viewsets/kpi.py,sha256=
|
|
77
|
+
wbhuman_resources/viewsets/kpi.py,sha256=eZfYwIZwG3xCNXG5gcE_p74VJFueQhNkt8z-rN73ydk,10968
|
|
77
78
|
wbhuman_resources/viewsets/mixins.py,sha256=ziLsNSENzxTcFQStsNZgsHeqQRKEQnHeryFigND2pMI,458
|
|
78
|
-
wbhuman_resources/viewsets/review.py,sha256=
|
|
79
|
+
wbhuman_resources/viewsets/review.py,sha256=B5a8zBgWgLxNmbCp2EzY0-nLCTW75e2rPYr5VyEZ5J4,32510
|
|
79
80
|
wbhuman_resources/viewsets/utils.py,sha256=stM4coAl9JVLdJ1Q2z4ziDOoNSNXugydpT4a4Tv9N2s,969
|
|
80
81
|
wbhuman_resources/viewsets/buttons/__init__.py,sha256=bjyHwL71gqYc5hz13GtDU7l8ocOscBgThet7FIesZ_s,248
|
|
81
82
|
wbhuman_resources/viewsets/buttons/absence.py,sha256=wEumCQ3qEomU9-RrsSCJS_A2FeBChTPoaOXANyP0uOU,1227
|
|
@@ -106,6 +107,6 @@ wbhuman_resources/viewsets/titles/absence.py,sha256=4F4ENgmZBGKiDuC8DmgrklNXEsRo
|
|
|
106
107
|
wbhuman_resources/viewsets/titles/employee.py,sha256=VP_AC3E-3fpbO8-RUvi2haXcoJr9LVLYtJifGawVRGo,565
|
|
107
108
|
wbhuman_resources/viewsets/titles/kpis.py,sha256=OSH_vIsIjfThWn17X_K7ykBKAFqNvz8M4PyFCF8BRQo,491
|
|
108
109
|
wbhuman_resources/viewsets/titles/review.py,sha256=fL_PqTNAIK7alk_-7RaklkiR9guh54u8oS0m5AWOSSc,2458
|
|
109
|
-
wbhuman_resources-1.59.
|
|
110
|
-
wbhuman_resources-1.59.
|
|
111
|
-
wbhuman_resources-1.59.
|
|
110
|
+
wbhuman_resources-1.59.6.dist-info/METADATA,sha256=WLut_AjVN10XEhItGTs9QpL81gGV8VcjCHMpO9mxZfM,272
|
|
111
|
+
wbhuman_resources-1.59.6.dist-info/WHEEL,sha256=aha0VrrYvgDJ3Xxl3db_g_MDIW-ZexDdrc_m-Hk8YY4,105
|
|
112
|
+
wbhuman_resources-1.59.6.dist-info/RECORD,,
|
|
File without changes
|