def get(self, vedlegg_id): rapport_vedlegg = current_app.db_session.query(RapportVedlegg).filter( RapportVedlegg.vedlegg_id == vedlegg_id).first() soknad_vedlegg = current_app.db_session.query(SoknadVedlegg).filter( SoknadVedlegg.vedlegg_id == vedlegg_id).first() if rapport_vedlegg is not None: object = rapport_vedlegg.rapport vedlegg = rapport_vedlegg.vedlegg soknad_id = object.soknad_id elif soknad_vedlegg is not None: object = soknad_vedlegg.soknad vedlegg = soknad_vedlegg.vedlegg soknad_id = object.id else: abort(404, __error__=['Vedlegg med id %d finnes ikke' % vedlegg_id]) ensure(GET, object) try: doc_path = "%s/%s" % (DOC_PATH, get_rel_vedlegg_path(soknad_id)) return send_from_directory(doc_path, vedlegg.file_ref, as_attachment=True, attachment_filename=vedlegg.filnavn.encode("utf-8")) except NotFound: abort(500, __error__=['Filen for vedlegg med id %d finnes ikke' % vedlegg_id])
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 vedlegg_to_docs(soknad, vedlegg): return [{"beskrivelse": d.beskrivelse, "filnavn": d.filnavn, "file_ref": copy_dokument_on_disk(d.file_ref, d.file_ref, get_rel_vedlegg_path(soknad.id), dest_dir_rel_path=get_rel_arkivmappe_path(soknad))} for d in vedlegg]