def query_soknader(self, facets): kwargs = {} for facet in facets: if facet.name == u"Søker": kwargs['sokere'] = self.convert_facet_value_to_list_of_values(facet.values) elif facet.name == u"Status": kwargs['soknad_states'] = self.convert_facet_value_to_list_of_values(facet.values) elif facet.name == u"Tilskuddsordning": kwargs['tilskuddsordninger'] = self.convert_facet_value_to_list_of_values(facet.values) elif facet.name == u"Saksbehandler": kwargs['saksbehandlere'] = self.convert_facet_value_to_list_of_values(facet.values) elif facet.name == u"Dato levert": kwargs['levert_period_names'] = self.convert_facet_value_to_list_of_values(facet.values) else: current_app.logger.warn("Ignoring unknown facet: %s" % facet) user = get_user_from_auth() if is_soker(user): # external users can see soknader for all the organisations they are member of # and those without any org which they have registered themselves organisations = get_organisations_for_person(user["person_id"], request.cookies) kwargs['restrict_to_organisations'] = [organisation["id"] for organisation in organisations] kwargs['registered_by_person'] = user["person_id"] return self.repo.find_soknader(**kwargs) elif is_saksbehandler(user) or is_godkjenner(user): # saksbehandlere og godkjennere skal ikke se søknadene i status "kladd" kwargs['exclude_soknad_states'] = ['Kladd'] return self.repo.find_soknader(**kwargs) else: abort(400, message="The following user cannot query soknader: %s" % user)
def post(self, soknad_id): if soknad_id is not None: soknad = SoknadRepo.find_by_id(soknad_id) else: return SakApi.create_error_response_for_iframe(body_status=400, body_error='Missing object id') ensure(MANAGE, SoknadAction(soknad, SoknadStateMachine.t_last_opp_saksvedlegg)) validator = VedleggValidator(request.form).validate_post_fields() if validator.has_errors(): return SakApi.create_error_response_for_iframe(body_status=400, body_error=validator.errors) file = request.files.get('upload_file') if file is None: current_app.logger.warn('Missing required file: document') return SakApi.create_error_response_for_iframe(body_status=400, body_error=u'Dokument er påkrevd.') extension = os.path.splitext(file.filename)[1] if file.mimetype not in VALID_MIME_TYPES or extension not in VALID_EXTENSIONS: current_app.logger.warn('Invalid mimetype: %s', file.mimetype) return SakApi.create_error_response_for_iframe(body_status=400, body_error=u'Ugyldig filtype.') filnavn = uuid_with_ext(file.filename) target_path = generate_dir_path(DOC_PATH, get_rel_saksvedlegg_path(soknad)) backend = get_backend(file, filename=filnavn, path=target_path) backend.save() saksvedlegg = Vedlegg() user = get_user_from_auth() saksvedlegg.filnavn = file.filename saksvedlegg.file_ref = filnavn saksvedlegg.beskrivelse = request.form.get('tittel') saksvedlegg.user_id = user['id'] saksvedlegg.vedlagtdato = datetime.now() soknad.saksvedlegg.append(saksvedlegg) if soknad.saksbehandler_id: # Arkivering # ########### organisation = get_organisation(soknad.organisation_id, request.cookies) person = get_person(soknad.person_id, request.cookies) try: save_journalpost_for_saksvedlegg(soknad, organisation, person, saksvedlegg) except InvalidArkivExtensionError as e: return SakApi.create_error_response_for_iframe(body_status=400, body_error=e.message) current_app.db_session.commit() return Response(response=json.dumps(marshal(saksvedlegg, saksvedlegg_fields)), status=201, content_type='text/html')
def post(self, tilskuddsordning_id, action_id): tilskuddsordning = self.repo.find_by_id(tilskuddsordning_id) if action_id == 'varsle_godkjenner': saksbehandler = get_user_from_auth() success, msg = send_notification_email_to_godkjenner_for_tilskuddsordning(tilskuddsordning, saksbehandler) if success: return None, 201 else: abort(400, __error__=[msg]) abort(400, __error__=[U'Ugyldig parametre tilskuddsordning_id %s og action = %s' % (tilskuddsordning_id, action_id)])
def get(self, tilskuddsordning_id=None): user = get_user_from_auth() if tilskuddsordning_id: tilskuddsordning = self.get_by_id(tilskuddsordning_id) ensure(GET, tilskuddsordning) marshalled = marshal(tilskuddsordning, tilskuddsordning_fields) if is_administrator(user) or is_saksbehandler(user) or is_godkjenner(user): marshalled["vedtatt_belop"] = self.get_vedtatt_belop(tilskuddsordning_id) return marshalled else: if is_soker(user): return marshal(self.repo.find_by_where("publisert", True), tilskuddsordning_fields) else: return marshal(self.repo.find_all(), tilskuddsordning_fields)
def soknadliste_fields(): user = get_user_from_auth() sf = { 'id': fields.Integer, 'person_id': fields.Integer, 'saksbehandler_id': fields.String, 'organisation_id': fields.Integer, 'status': Status(user=user), 'omsokt_belop': fields.Integer, 'prosjektnavn': fields.String, 'levert_dato': fields.String, 'vedtak': VedtakListe(fields.Nested(vedtak_fields()), user=user), } return sf
def post(self): rapport_id = request.form.get('rapport_id') soknad_id = request.form.get('soknad_id') if not (rapport_id is None): soknad_or_rapport = RapportRepo.find_by_id(rapport_id) soknad_id = soknad_or_rapport.soknad_id elif not (soknad_id is None): soknad_or_rapport = SoknadRepo.find_by_id(soknad_id) else: return SakApi.create_error_response_for_iframe(body_status=400, body_error='Missing object id') ensure(PUT, soknad_or_rapport) file = request.files.get('upload_file') if file is None: current_app.logger.warn('Missing required file: document') return SakApi.create_error_response_for_iframe(body_status=400, body_error=u'Dokument er påkrevd.') extension = os.path.splitext(file.filename)[1] if file.mimetype not in VALID_MIME_TYPES or extension not in VALID_EXTENSIONS: current_app.logger.warn('Invalid mimetype: %s', file.mimetype) return SakApi.create_error_response_for_iframe(body_status=400, body_error=u'Ugyldig filtype.') filnavn = uuid_with_ext(file.filename) target_path = generate_dir_path(DOC_PATH, get_rel_vedlegg_path(soknad_id)); backend = get_backend(file, filename=filnavn, path=target_path) backend.save() vedlegg = Vedlegg() user = get_user_from_auth() vedlegg.filnavn = file.filename vedlegg.file_ref = filnavn vedlegg.user_id = user['id'] vedlegg.vedlagtdato = datetime.now() soknad_or_rapport.vedlegg.append(vedlegg) current_app.db_session.commit() return Response(response=json.dumps(marshal(vedlegg, vedlegg_fields)), status=201, content_type='text/html')
def post(self): data = request.get_json() user = get_user_from_auth() self.validate_post_fields(data) soknad = Soknad() soknad.status = SoknadStateMachine.s_kladd.id soknad.person_id = user["person_id"] tilskuddsordning = TilskuddsordningRepo.find_by_id(int(data.get("tilskuddsordning_id"))) soknad.tilskuddsordning = tilskuddsordning ensure(POST, soknad) self.repo.save(soknad, data) return marshal(soknad, soknad_fields()), 201
def create_erv_docx_from_template(soknad, organisation, utbetaling): now = datetime.now() orgnr_fnr = get_organisasjonsnummer_or_foedselsnummer(organisation, soknad.person_id) erv = { u'utbetales_til': organisation['name'] if organisation['name'] is not None else "", u'orgnr_fnr': orgnr_fnr, u'bankkonto': soknad.kontonummer if soknad.kontonummer is not None else "", u'belop': "%s,00" % utbetaling.utbetalt_belop if utbetaling.utbetalt_belop is not None else "", u'fakturadato': erv_datestr(utbetaling.registrertdato) if utbetaling.registrertdato is not None else "", u'forfallsdato': erv_datestr(utbetaling.utbetalingsdato) if utbetaling.utbetalingsdato is not None else "", u'tekst': "%s" % utbetaling.tekst if utbetaling.tekst is not None else "", u'utfylt_av': get_user_from_auth()['profile']['full_name'], u'utfylt_dato': erv_datestr(now) } return create_docx_from_template(ERV_TEMPLATE, erv=erv)
def get(self, soknad_id, action_id=None): # hent søknad soknad = SoknadRepo.find_by_id(soknad_id) ensure(GET, soknad) user = get_user_from_auth() # filter transitions actions = filter_actions(soknad, user) if action_id: if action_id in actions: return marshal(actions[action_id], action_fields) else: abort(404, __error__=[u"Fant ingen action med id=%s" % action_id]) return marshal(actions.values(), action_fields)
def vedtak_fields(): user = get_user_from_auth() sf = { 'id': fields.Integer, 'vedtatt_belop': fields.Integer, 'vedtaksdato': ISO8601DateTime, 'vedtakstekst': fields.String, 'andre_opplysninger': fields.String, 'rapportfrist': ISO8601DateTime, 'endre_rapportfrist_arsak': fields.String, 'behandlet_av_formannskapet': fields.Boolean, 'tilskuddsordning_type': fields.String } if is_saksbehandler(user) or is_godkjenner(user): sf["innstilt_belop"] = fields.Integer sf["intern_merknad"] = fields.String return sf
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 soknad_fields(): user = get_user_from_auth() sf = { 'id': fields.Integer, 'tilskuddsordning': fields.Nested(tilskuddsordning_light_fields), 'person_id': fields.Integer, 'saksbehandler_id': fields.String, 'organisation_id': fields.Integer, 'status': Status(user=user), 'omsokt_belop': fields.Integer, 'epost': fields.String, 'kontonummer': fields.String, 'telefon': fields.String, 'om_oss': fields.String, 'prosjektnavn': fields.String, 'beskrivelse': fields.String, 'maalsetting': fields.String, 'kommentar': fields.String, 'trukket_kommentar': fields.String, 'merknad': fields.String, 'levert_dato': ISO8601DateTime, 'vedlegg': fields.List(fields.Nested(vedlegg_fields)), 'vedlagtlink': fields.List(fields.Nested(vedlagtlink_fields)), 'arrangement': fields.List(fields.Nested(arrangement_fields)), 'okonomipost': fields.List(fields.Nested(okonomipost_fields)), 'rapport': RapportListe(fields.Nested(rapport_soknad_fields), user=user), 'vedtak': VedtakListe(fields.Nested(vedtak_fields()), user=user), 'klage': fields.List(fields.Nested(klage_fields)), 'utbetaling': fields.List(fields.Nested(utbetaling_fields)), 'avskrevet_rapportkrav_kommentar': fields.String } if is_saksbehandler(user) or is_godkjenner(user): sf["saksvedlegg"] = fields.List(fields.Nested(saksvedlegg_fields)) return sf