def put(self, soknad_id=None, action_id=None): data = request.get_json() # hent søknad soknad = SoknadRepo.find_by_id(soknad_id) # sjekk om angitt action er lovlig transition user = get_user_from_auth() sm = SoknadStateMachine() transitions = sm.get_transitions(soknad.status, user) if action_id not in transitions: abort( 403, __error__=[u"Aksjon %s ikke tilgjengelig for søknader med status %s" % (action_id, soknad.status)] ) action = transitions[action_id] SoknadActionExecutor.execute(soknad, action, data) return None, 200
def format(self, value): sm = SoknadStateMachine() state = sm.find_state_by_id(value) if is_soker(self.user): return state.state_name_soker return state.state_name_saksbehandler
def filter_actions(soknad, user): mapping_roles_and_transitions = { 'tilskudd_soker': [ SoknadStateMachine.t_slett, SoknadStateMachine.t_sende_inn, SoknadStateMachine.t_trekk, SoknadStateMachine.t_rediger_soknad, SoknadStateMachine.t_lever_rapport, SoknadStateMachine.t_opprett_rapport, SoknadStateMachine.t_rediger_rapport, SoknadStateMachine.t_godta_vedtak, SoknadStateMachine.t_send_tilbake_til_saksbehandling, SoknadStateMachine.t_endre_kontakt ], 'tilskudd_saksbehandler': [ SoknadStateMachine.t_trekk, SoknadStateMachine.t_apne_soknad_for_redigering, SoknadStateMachine.t_behandle, SoknadStateMachine.t_endre_saksbehandler, SoknadStateMachine.t_til_vedtak, SoknadStateMachine.t_godkjenn_rapport, SoknadStateMachine.t_rediger_rapportfrist, SoknadStateMachine.t_avslutt, SoknadStateMachine.t_til_utbetaling, SoknadStateMachine.t_underkjenn_rapport, SoknadStateMachine.t_avskriv_rapportkrav, SoknadStateMachine.t_krev_tilbakebetaling, SoknadStateMachine.t_vurder_klage, SoknadStateMachine.t_registrer_utbetaling, SoknadStateMachine.t_last_opp_saksvedlegg, SoknadStateMachine.t_endre_tilskuddsordning ], 'tilskudd_godkjenner': [ SoknadStateMachine.t_fatt_vedtak, SoknadStateMachine.t_tilbake_til_innstilling, SoknadStateMachine.t_fatt_klagevedtak, SoknadStateMachine.t_tilbake_til_vurder_klage ], 'tilskudd_administrator': [] } if soknad.status == SoknadStateMachine.s_vedtak_fattet.id and if_soker_can_manage_soknad(soknad, user): if len(soknad.vedtak) != 0: nyeste_vedtak = soknad.nyeste_vedtak() if nyeste_vedtak.vedtatt_belop > 0: mapping_roles_and_transitions.get('tilskudd_soker').append(SoknadStateMachine.t_takke_nei) if not nyeste_vedtak.behandlet_av_formannskapet: if len(soknad.klage) > 0: mapping_roles_and_transitions.get('tilskudd_soker').append(SoknadStateMachine.t_oppretthold_klage) else: mapping_roles_and_transitions.get('tilskudd_soker').append(SoknadStateMachine.t_vedtak_klaget) roles = user.get('roles', []) if if_soker_can_manage_soknad(soknad, user): roles.append({'name': 'tilskudd_soker'}) soker_can_manage_soknad = if_soker_can_manage_soknad(soknad, user) saksbehandler_for_soknad = is_saksbehandler_for_soknad(soknad, user) saksbehandler_for_tilskuddsordning = is_saksbehandler_for_tilskuddsordning(soknad.tilskuddsordning, user) godkjenner_for_tilskuddsordning = is_godkjenner_for_tilskuddsordning(soknad.tilskuddsordning, user) role_actions = {} sm = SoknadStateMachine() actions = sm.get_transitions(soknad.status, user) for role, mapped_actions in mapping_roles_and_transitions.iteritems(): for action in actions.values(): if action in mapped_actions and ( (role == 'tilskudd_soker' and soker_can_manage_soknad) or (role == 'tilskudd_godkjenner' and godkjenner_for_tilskuddsordning) or (role == 'tilskudd_saksbehandler' and (saksbehandler_for_soknad or (action == SoknadStateMachine.t_behandle and saksbehandler_for_tilskuddsordning) or (action == SoknadStateMachine.t_endre_saksbehandler and saksbehandler_for_tilskuddsordning)))): role_actions[action.id] = action return role_actions