coati-payroll 0.0.5__py3-none-any.whl → 0.0.7__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.

Potentially problematic release.


This version of coati-payroll might be problematic. Click here for more details.

coati_payroll/cli.py CHANGED
@@ -76,15 +76,11 @@ class PluginsCommand(click.Group):
76
76
  return []
77
77
 
78
78
  def get_command(self, cli_ctx, name):
79
- try:
80
- module = load_plugin_module(name)
81
- except Exception as exc:
82
- message = str(exc)
83
-
84
- def _missing():
85
- raise click.ClickException(message)
86
-
87
- return click.Command(name, callback=lambda: _missing())
79
+ def _load_module_or_fail():
80
+ try:
81
+ return load_plugin_module(name)
82
+ except Exception as exc:
83
+ raise click.ClickException(str(exc))
88
84
 
89
85
  @click.group(name=name, help=f"Gestión del plugin '{name}'")
90
86
  def plugin_group():
@@ -95,6 +91,7 @@ class PluginsCommand(click.Group):
95
91
  @with_appcontext
96
92
  @pass_context
97
93
  def plugin_init(ctx):
94
+ module = _load_module_or_fail()
98
95
  init_fn = getattr(module, "init", None)
99
96
  if init_fn is None or not callable(init_fn):
100
97
  raise click.ClickException("Plugin does not provide callable 'init()'")
@@ -112,6 +109,7 @@ class PluginsCommand(click.Group):
112
109
  @with_appcontext
113
110
  @pass_context
114
111
  def plugin_update(ctx):
112
+ module = _load_module_or_fail()
115
113
  update_fn = getattr(module, "update", None)
116
114
  if update_fn is None or not callable(update_fn):
117
115
  raise click.ClickException("Plugin does not provide callable 'update()'")
@@ -131,6 +129,7 @@ class PluginsCommand(click.Group):
131
129
  def plugin_demo_data(ctx):
132
130
  """Carga datos de demostración para pruebas automáticas."""
133
131
  # Permitir alias: demo_data o load_demo_data
132
+ module = _load_module_or_fail()
134
133
  demo_fn = getattr(module, "demo_data", None)
135
134
  if demo_fn is None or not callable(demo_fn):
136
135
  demo_fn = getattr(module, "load_demo_data", None)
Binary file
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 1000"><defs><style>.cls-1{fill:#af5231;}</style></defs><g id="Capa_6" data-name="Capa 6"><path class="cls-1" d="M519.7,710.86c-12.48,20.7-27.08,23.2-28,29.1-2.12,0-4.24.11-6.36.11h-.59c-2.35,0-4.71-.06-7-.17-2.94-.06-5.89-.23-8.77-.45-1.06-.06-2.06-.17-3.06-.29-1.59-.11-3.12-.28-4.71-.45-3.41-.34-6.71-.79-10-1.36a207.87,207.87,0,0,1-101.42-47c.35.11.71.28,1.06.4,40.32,15,80.76-3.8,89.41-7.78,30.44-14.18,53.1-38.39,52.92-47.75,6.42.9,12.89,1.47,19.49,1.76,2.94.17,5.88.22,8.82.22,1.53,0,3.12,0,4.65-.11a17.45,17.45,0,0,0,1.77-.06,17.88,17.88,0,0,0-5.12,10c-1.18,8.57,5.53,10.55,7.77,22.86C533.71,687.61,523.53,704.56,519.7,710.86Z"/><path class="cls-1" d="M625.83,687.27v.05l-3.89,3.24v.05q-6.44,5.28-13.24,10a209.2,209.2,0,0,1-52.45,26.55c3-6.87,5-14.69,7.07-23,3.12-12.08,5.24-20.47,3.12-30.51-2.83-13.22-10.07-15.14-10.07-25.69,0-6.75,3-12,5.36-16,3.18-.57,6.3-1.25,9.42-2a188.25,188.25,0,0,0,23.13-7,33.82,33.82,0,0,0-.88,12.53,30.85,30.85,0,0,0,11.89,20.31c11.12,9,19.54,2.5,23.07,9.7C631.25,671.61,627.77,681,625.83,687.27Z"/><path class="cls-1" d="M693,575.37l-.36,1.67a1.09,1.09,0,0,1-.16.64,207.59,207.59,0,0,1-33.14,72.8,202.76,202.76,0,0,1-20.59,24.64c3-8.9,4.09-19,.8-22.73-4-4.61-10.7,4.25-17.13-.91-5-4-6.16-13.72-6.6-17.65-1.15-10.77,1.83-17.05,1.83-21.26a189.78,189.78,0,0,0,32.07-21.18,167.71,167.71,0,0,0,12.91-11.57A42.36,42.36,0,0,1,693,575.37Z"/><path class="cls-1" d="M634.53,379.45c-5.4,6.51-15.1,13.31-23.88,18.68-7.07,4.33-16.69,2.78-33.34,2.66-14-11.73,7.15-25,7.15-25s-49.12-26.15-82.94-42.48-63.31,0-63.31,0-11.28,9.42-6.95,24.12,46.14,1.51,46.14,1.51C514.83,348.77,527,394,527,394l-24.83,2c2.5,3.22,24.4,5.09,44.43,6.12l-31.12.79c-33.14,1-63.23,10.69-86.52,26.31-2.14,1.47-4.25,2.94-6.24,4.41,0,0-.08,0-.08.12a118.83,118.83,0,0,0-39.5,88.47c0,34.18,14.67,65,38.27,87.43,5.05,2.94,10.37,5.56,15.66,8,.12,0,.24.12.36.16,3.81,1.74,7.67,3.33,11.52,4.84-14.66,1-17,22.58-31.35,35.1-.08,0-.08,0-.12,0-25.8,22.37-78.05,5.52-94.83,6.63-.59-.59-1.19-1.27-1.71-1.91a204.72,204.72,0,0,1-19.55-27.85,201.48,201.48,0,0,1-21.18-50,203.75,203.75,0,0,1-6.44-33.58c-.51-4.93-.79-9.82-1-14.82,0-2.27-.12-4.45-.12-6.76,0-2,0-4,.08-6,.16-5.21.48-10.41,1-15.54a208.12,208.12,0,0,1,63.95-130.15,4.61,4.61,0,0,1,.71-.64.85.85,0,0,0-.12.28c0-.12.24-.24.36-.32a85.23,85.23,0,0,1,26.07-21c.76-.44,1.51-.84,2.35-1.23a54.57,54.57,0,0,1,5.4-2.51c-.28-.28-.52-.55-.76-.83a27.18,27.18,0,0,1-3.29-3.82,40.89,40.89,0,0,1-8.67-25.15c0-24.17,21.26-43.8,47.45-43.8,20.63,0,38.08,12.08,44.75,28.85,3.1-.12,6.28-.19,9.54-.19,28.49,0,54.09,6.51,71.38,16.81A63.15,63.15,0,0,1,546,334.3c15.86,3.06,32.63,15.9,61.36,22.69a146.54,146.54,0,0,0,16.42,3c3.57.48,11,1.28,14.1,6.4C640.22,370.27,638.43,374.8,634.53,379.45Z"/></g></svg>
@@ -29,30 +29,33 @@
29
29
  <td>{{ plugin.version or '-' }}</td>
30
30
  <td>
31
31
  {% if plugin.installed %}
32
- <span class="badge bg-success">{{ _('Sí') }}</span>
32
+ <span class="badge bg-success">{{ _('Sí') }}</span>
33
33
  {% else %}
34
- <span class="badge bg-secondary">{{ _('No') }}</span>
34
+ <span class="badge bg-secondary">{{ _('No') }}</span>
35
35
  {% endif %}
36
36
  </td>
37
37
  <td>
38
38
  {% if plugin.active %}
39
- <span class="badge bg-success">{{ _('Activo') }}</span>
39
+ <span class="badge bg-success">{{ _('Activo') }}</span>
40
40
  {% else %}
41
- <span class="badge bg-warning">{{ _('Inactivo') }}</span>
41
+ <span class="badge bg-warning">{{ _('Inactivo') }}</span>
42
42
  {% endif %}
43
43
  </td>
44
44
  <td>
45
- <form action="{{ url_for('plugins.toggle', plugin_id=plugin.id) }}" method="POST" class="d-inline">
45
+ <form action="{{ url_for('plugins.toggle', plugin_id=plugin.id) }}" method="POST"
46
+ class="d-inline">
47
+ <input type="hidden" name="csrf_token" value="{{ csrf_token() }}">
46
48
  {% if plugin.active %}
47
- <button type="submit" class="btn btn-sm btn-outline-warning">
48
- <i class="bi bi-toggle-off"></i>
49
- {{ _('Desactivar') }}
50
- </button>
49
+ <button type="submit" class="btn btn-sm btn-outline-warning">
50
+ <i class="bi bi-toggle-off"></i>
51
+ {{ _('Desactivar') }}
52
+ </button>
51
53
  {% else %}
52
- <button type="submit" class="btn btn-sm btn-outline-success" {% if not plugin.installed %}disabled{% endif %}>
53
- <i class="bi bi-toggle-on"></i>
54
- {{ _('Activar') }}
55
- </button>
54
+ <button type="submit" class="btn btn-sm btn-outline-success"
55
+ {% if not plugin.installed %}disabled{% endif %}>
56
+ <i class="bi bi-toggle-on"></i>
57
+ {{ _('Activar') }}
58
+ </button>
56
59
  {% endif %}
57
60
  </form>
58
61
  </td>
coati_payroll/version.py CHANGED
@@ -15,4 +15,4 @@
15
15
  Data model for the payroll module.
16
16
  """
17
17
 
18
- __version__ = "0.0.5"
18
+ __version__ = "0.0.7"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: coati-payroll
3
- Version: 0.0.5
3
+ Version: 0.0.7
4
4
  Summary: A jurisdiction-agnostic payroll calculation engine.
5
5
  Requires-Python: >=3.11
6
6
  Description-Content-Type: text/markdown
@@ -2,7 +2,7 @@ coati_payroll/__init__.py,sha256=UMMb03475dPNvlnvP4TuyNH0GAmL1FjPi5ND92-igbc,161
2
2
  coati_payroll/app.py,sha256=PPn5U2ViKU8yRiP0OMPkozq4CRWxp9Un27R_jAAkQ_g,3502
3
3
  coati_payroll/audit_helpers.py,sha256=0BDspyO5eQLRrdUCUcu5xe7F--2a-8OOAcejLJ4CcAg,27556
4
4
  coati_payroll/auth.py,sha256=v8yzxQnDZy3kbJnt9MWikyDJNwgCSkZpvfwARUnDh4s,4436
5
- coati_payroll/cli.py,sha256=fptyskL-5NKuk51CZeHNCp54nAVkrdyztmQ75RPvATM,47424
5
+ coati_payroll/cli.py,sha256=mDpvB-n7zkruH3lvf9rlgKNP-9LVu8gexyV3rpF1gYA,47474
6
6
  coati_payroll/config.py,sha256=dM3kcUsW6_gR1Vopdb_28fWxmhUi7lkj30kJfSU8zrY,9420
7
7
  coati_payroll/demo_data.py,sha256=pE7DUwZWq3jHCwt6vO_kW0sIuMFJmu9u1pqKUGWF9Ag,31437
8
8
  coati_payroll/enums.py,sha256=TEJ8Yxy-0UPsQUSDs7pbZgOg-VoqFOx8KnY0lTh3KzA,9211
@@ -23,7 +23,7 @@ coati_payroll/schema_validator.py,sha256=wa2X7VrXrEA6OzybycHdMD7smKqeF6Vp7oNSmV7
23
23
  coati_payroll/security.py,sha256=EYARqQI6llhfczpGamaaJdFF0fLBHn0-2dWcXy6kEO0,3040
24
24
  coati_payroll/system_reports.py,sha256=b0rLFUsGt-KYZPWh4tSpBeGqdJBOYfIO3cDuIAFJMIg,20406
25
25
  coati_payroll/vacation_service.py,sha256=iMgE7CcCfd5ytCWknyokFlphfYrnmAu6jtlPIPzgpHQ,17600
26
- coati_payroll/version.py,sha256=r0fZ5Gv_R-WFge_67fVpFnR6bRtG-0y3B-HYxUoReNI,649
26
+ coati_payroll/version.py,sha256=GvHoJEBHSPur034uKxNMWbpzd5Jp-srmBRasJ0r8KIE,649
27
27
  coati_payroll/formula_engine/__init__.py,sha256=Nixn2nFtOk6PGZpnXCwRLnb-Pid_lz6qPRIv7j2P3HM,2461
28
28
  coati_payroll/formula_engine/data_sources.py,sha256=_UapWZiyWUqADnafpcd8936Vpg3Av_R2wxbvUEEi9Dc,30785
29
29
  coati_payroll/formula_engine/engine.py,sha256=f3a7mM8ckiGtE6RMK9ByEZdsllSGUsBLi19WxreDYsE,8897
@@ -108,6 +108,9 @@ coati_payroll/queue/drivers/dramatiq_driver.py,sha256=-mSLzIpy0DixQOAt_btv0dQC4D
108
108
  coati_payroll/queue/drivers/huey_driver.py,sha256=95edM5R1N-03rdSQb1t3VeH4SG99pxJn7i3RmG3ZrwM,13668
109
109
  coati_payroll/queue/drivers/noop_driver.py,sha256=Kd2wjCTSGa-T2JzblSlDtf6GfL1-r8A_495qDTVdE1I,1804
110
110
  coati_payroll/static/styles.css,sha256=54CyM8Ff6OvFlooiZOY1zHWc9mPvMKlSKb-xCrs2OmM,22969
111
+ coati_payroll/static/logo/Icono-small.png,sha256=x5Mh307ZRiyldYS5oWyaSa-w666rSVEuNtiGwhgLwxg,5949
112
+ coati_payroll/static/logo/Icono.png,sha256=QvxFpfx43nV8V9ebqTVMcFj4HqM5jvpD_pDp_0FrR-E,15733
113
+ coati_payroll/static/logo/Icono.svg,sha256=1EOrn-1KluJh_4-AZKhzTiE7yyt2hScAB4dGC0bPfek,2777
111
114
  coati_payroll/templates/base.html,sha256=dSRkOOWkvmQwP3WdpSGCR7XCF9ecZDabQC__wsHcYAk,12189
112
115
  coati_payroll/templates/index.html,sha256=o_7u3vfMLI9d2rlmrydxMNAX_VfNdfN9lV48LnYgBBk,11456
113
116
  coati_payroll/templates/macros.html,sha256=yQ43KWNjfmxiopSEiPxOK2PyD2GQdhW6O8GNJPCXLpY,6368
@@ -154,7 +157,7 @@ coati_payroll/templates/modules/planilla/ver_nomina.html,sha256=RPq5oriGArt4UTE2
154
157
  coati_payroll/templates/modules/planilla/ver_nomina_empleado.html,sha256=3SN62UbFjlds-URkP4Ko_t0JsF8zu25fbBZkMqHhQ20,9353
155
158
  coati_payroll/templates/modules/planilla/novedades/form.html,sha256=GnTNRjiukaSqJyyS13-47kWSIIqBLhH9OfYFD7oQGIw,6678
156
159
  coati_payroll/templates/modules/planilla/novedades/index.html,sha256=VsaJ6MkSeF-lAPy-aN7LTubOmMXdNi_wYKvS3YdoZL8,7918
157
- coati_payroll/templates/modules/plugins/index.html,sha256=RtWAPJpzmQtkv3j__cRt1Rx8ixNX7NWq1fF2FRlxNwo,3289
160
+ coati_payroll/templates/modules/plugins/index.html,sha256=dsWsUFqqqPHfYnPXyUwyyhXmUgkNp89uA5dBbVqgdvI,3420
158
161
  coati_payroll/templates/modules/prestacion/form.html,sha256=ry4TFxLoZvdgo-OEtLmC-rsk1qntGmgq2YS3ekMtcT0,49
159
162
  coati_payroll/templates/modules/prestacion/index.html,sha256=5mSd4BkL8TLrofWWXEv-HSwUA-_skbxnwv328WuzX-8,50
160
163
  coati_payroll/templates/modules/prestacion_management/dashboard.html,sha256=WRoFg2am3CqyO3U6JXf6cj0vl1vgX0nsJdSsQJSva5A,7279
@@ -235,9 +238,9 @@ coati_payroll/vistas/planilla/services/novedad_service.py,sha256=MYxbiqVrwzBbBTX
235
238
  coati_payroll/vistas/planilla/services/planilla_service.py,sha256=xpqxD6XLdTMRJfbPhvpWSYW7P6IcHKZgW6Ahg7kthk4,1195
236
239
  coati_payroll/vistas/planilla/validators/__init__.py,sha256=K-WnUGZaMYX-2DcduB-yMssuxUlztMCQKuGfqK67Vsk,754
237
240
  coati_payroll/vistas/planilla/validators/planilla_validators.py,sha256=WH1cyY1D7XPSb3MupNszofT3-YvgqBfp8vFDpo8hDA8,1680
238
- coati_payroll-0.0.5.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
239
- coati_payroll-0.0.5.dist-info/METADATA,sha256=UObvF57B8HfWBK15iF5lms84zfH6RaFmv6R8WVvBUNE,22236
240
- coati_payroll-0.0.5.dist-info/WHEEL,sha256=hPN0AlP2dZM_3ZJZWP4WooepkmU9wzjGgCLCeFjkHLA,92
241
- coati_payroll-0.0.5.dist-info/entry_points.txt,sha256=GtZVGVYEFlpeSs7eHYh701VG7ftRRrZ54fsyFmbeZZc,54
242
- coati_payroll-0.0.5.dist-info/top_level.txt,sha256=wRaRlWHJnSoqktbTT1XJUkPNgKnR7VS75Ytyl8JJYPY,14
243
- coati_payroll-0.0.5.dist-info/RECORD,,
241
+ coati_payroll-0.0.7.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
242
+ coati_payroll-0.0.7.dist-info/METADATA,sha256=ZoyFZS2uXCkabyQsT5uyow5oNwkVoWZgFXEL3SZ_liY,22236
243
+ coati_payroll-0.0.7.dist-info/WHEEL,sha256=hPN0AlP2dZM_3ZJZWP4WooepkmU9wzjGgCLCeFjkHLA,92
244
+ coati_payroll-0.0.7.dist-info/entry_points.txt,sha256=GtZVGVYEFlpeSs7eHYh701VG7ftRRrZ54fsyFmbeZZc,54
245
+ coati_payroll-0.0.7.dist-info/top_level.txt,sha256=wRaRlWHJnSoqktbTT1XJUkPNgKnR7VS75Ytyl8JJYPY,14
246
+ coati_payroll-0.0.7.dist-info/RECORD,,