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 save_file_to_disk(file_content, filename, relative_path="", use_uuid=True): generated_file_name = uuid_with_ext(filename) if use_uuid else filename document_root_path = os.environ.get('DOCUMENTS_PATH', '/tmp') assert(os.path.isdir(document_root_path)) target_dir = generate_dir_path(document_root_path, relative_path) file = open(u"%s/%s" % (target_dir, generated_file_name), 'w') file.write(file_content) file.close() current_app.logger.info(u"File '%s' written to %s." % (generated_file_name, target_dir)) return generated_file_name, target_dir
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, **kwargs): facility_id = request.form.get('facilityId') if facility_id is None: abort(400) facility = current_app.db_session.query(Facility).get(facility_id) if facility is None: abort(404) errors = {} title = request.form.get('title') if title is None or len(title.strip()) == 0: current_app.logger.warn('Missing required parameter: title') errors['title'] = u'Tittel er påkrevd' elif len(title) > 50: errors['title'] = u'Tittel kan ikke være lengre enn 50 tegn' file = request.files.get('document') if file is None: current_app.logger.warn('Missing required file: document') errors['file'] = u'Dokument er påkrevd' elif file.mimetype not in FacilityDocumentListResource.valid_mimetypes: current_app.logger.warn('Invalid mimetype: %s', file.mimetype) errors['document'] = (u'Ugyldig filtype. Gyldige filtyper er ' u'PDF/DOC/DOCX') if len(errors) != 0: abort_with_msg(errors) backend = get_backend(file, filename=uuid_with_ext(file.filename), path=os.environ.get('DOCUMENTS_PATH', '/tmp')) backend.save() document = Document(facility, url=backend.get_url('documents'), title=title, filename=backend.filename, storage_backend=backend.name) current_app.db_session.add(document) current_app.db_session.commit() current_app.db_session.refresh(facility) return Response(response=json.dumps(marshal(document, document_fields)), status=201, content_type=content_type_from_request())