The period API lets you create and delete periods.

Classes

PeriodCreator

The PeriodCreator is a context manager for creating new periods.

Methods

FunctionParametersReturn ValueDescription
PeriodCreator.__enter__(self)
The PeriodCreator instanceEnter the context to queue up period changes
PeriodCreator.__exit__(self, type, value, tb)type: Exception Type
value: Exception instance
tb: Traceback

When the context is left, all periods are created
PeriodCreator.add(self, res_id, start_period, end_period)res_id: The Resource to add periods for
start_period: Days since 01.01.1970
end_period: Days since 01.01.1970

Adds a resource and timeframe to generate periods for. When the context is left, these periods will be created.

Note: The newly created periods will not be aggregated

Functions

FunctionParametersReturn ValueDescription
aggregate_periods(parent_res_id, start_period, end_period)parent_res_id: Resource
start_period: Days since 01.01.1970
end_period: Days since 01.01.1970

Aggregate the periods of the parent_res_id in the given timeframe up across all parent resources
aggregate_periods_from_start_to_end(res_id)res_id: Resource
Aggregate all periods of the resource based on their Start period and End period
any_child_resource_has_workday(resource_id, period)resource_id: Resource
period: Days since 01.01.1970
True if the given period is a workday for any child resource, False if it is not.Check whether a given date is a workday for any child resource of a department
delete_obsolete_periods(res_id)res_id: Resource
Delete all period records outside the Start period and End period
get_amount_of_children(parent_res_id)parent_res_id: ResourceAmount of child resources
get_start_end_period_from_db(res_id)res_id: ResourceStart and end period as a tupleFetch the start and end period of a resource from the database
reset_summarized_periods(res_id)res_id: Resource
Sets all aggregated data items in the period table to 0

Examples

Creating new periods

from ppms.period import PeriodCreator

with PeriodCreator() as creator:
    creator.add('R2', (100, 200))
    creator.add('R41', (100, 800))
PY