translator_directory.forms.time_report

Classes

TranslatorTimeReportForm

Form for creating/editing translator time reports.

Module Contents

class translator_directory.forms.time_report.TranslatorTimeReportForm(formdata: webob.multidict.MultiDict[str, Any] | None = None, obj: object | None = None, prefix: str = '', data: dict[str, Any] | None = None, meta: dict[str, Any] | None = None, *, extra_filters: collections.abc.Mapping[str, collections.abc.Sequence[Any]] | None = None, **kwargs: Any)[source]

Bases: onegov.form.Form

Form for creating/editing translator time reports.

request: onegov.translator_directory.request.TranslatorAppRequest[source]
assignment_type[source]
start_date[source]
start_time[source]
end_date[source]
end_time[source]
break_time[source]
case_number[source]
is_urgent[source]
notes[source]
validate_end_time(field: onegov.form.fields.TimeField) None[source]
on_request() None[source]
get_hourly_rate(translator: onegov.translator_directory.models.translator.Translator) decimal.Decimal[source]

Determine hourly rate based on translator certification.

get_duration_hours() decimal.Decimal[source]

Calculate duration in hours from start/end times, rounded.

Calculates raw time between start and end (ignoring breaks for now).

calculate_night_hours() decimal.Decimal[source]

Calculate actual hours worked during night (20:00-06:00).

calculate_weekend_holiday_hours() decimal.Decimal[source]

Calculate actual hours worked during weekends or public holidays.

Counts hours that fall on: - Saturday or Sunday (any time) - Public holidays (any time)

Returns hours as Decimal, rounded to nearest 0.5 hour.

populate_obj(obj: onegov.translator_directory.models.time_report.TranslatorTimeReport) None[source]

Populate the model from form, converting hours to minutes.

process(formdata: object = None, obj: object = None, **kwargs: object) None[source]

Process form data for editing existing time reports.

get_surcharge_types() list[str][source]

Get list of active surcharge types from form based on actual hours.

get_travel_compensation(translator: onegov.translator_directory.models.translator.Translator) decimal.Decimal[source]

Calculate travel compensation based on round trip distance.

The drive_distance is multiplied by 2 to account for the round trip (Wegentschädigung * 2). Returns 0 for telephonic and written assignments.

update_model(model: onegov.translator_directory.models.time_report.TranslatorTimeReport) None[source]

Update the time report model with form data.