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)
Ejemplo n.º 5
0
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)
Ejemplo n.º 10
0
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
Ejemplo n.º 12
0
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