def file_uploaded_owner(created_user_id=0, updated_user_id=0): """Build upload file owners. :param created_user_id: The created user id. (Default: ``0``) :param updated_user_id: The updated user id. (Default: ``0``) :returns: A response with json data. """ # created user. created_username = '' created_displayname = '' created_email = '' show_created_user = False # updated user. updated_username = '' updated_displayname = '' updated_email = '' show_updated_user = False if current_user.is_authenticated: show_created_user = True show_updated_user = True created_user = User.query.get_or_404(created_user_id) if created_user is not None: created_email = created_user.email created_userprofile = UserProfile.get_by_userid(created_user_id) if created_userprofile is not None: created_username = created_userprofile._username created_displayname = created_userprofile._displayname updated_user = User.query.get_or_404(updated_user_id) if updated_user is not None: updated_email = updated_user.email updated_userprofile = UserProfile.get_by_userid(updated_user_id) if updated_userprofile is not None: updated_username = updated_userprofile._username updated_displayname = updated_userprofile._displayname return { 'created_user': { 'user_id': created_user_id if show_created_user else 0, 'username': created_username, 'displayname': created_displayname, 'email': created_email, }, 'updated_user': { 'user_id': updated_user_id if show_updated_user else 0, 'username': updated_username, 'displayname': updated_displayname, 'email': updated_email, } }
def new_shib_profile(self): """ create new profile info for shibboleth user :return: UserProfile instance """ with db.session.begin_nested(): # create profile. userprofile = UserProfile( user_id=self.user.id, timezone=current_app.config['USERPROFILES_TIMEZONE_DEFAULT'], language=current_app.config['USERPROFILES_LANGUAGE_DEFAULT']) userprofile.username = self.shib_user.shib_user_name db.session.add(userprofile) db.session.commit() return userprofile
def test_template_filter(app): """Test template filter.""" with app.app_context(): user = User(email='*****@*****.**', password='******') db.session.add(user) db.session.commit() user.profile = UserProfile(username='******', full_name='name') db.session.commit() assert userprofile(user.profile.user_id) == user.profile
def create(cls, data, id_=None): """Create a deposit. Adds bucket creation immediately on deposit creation. """ bucket = Bucket.create( quota_size=current_app.config['WEKO_BUCKET_QUOTA_SIZE'], max_file_size=current_app.config['WEKO_MAX_FILE_SIZE'], ) if '$schema' in data: data.pop('$schema') data['_buckets'] = {'deposit': str(bucket.id)} # save user_name & display name. if current_user and current_user.is_authenticated: user = UserProfile.get_by_userid(current_user.get_id()) username = '' displayname = '' if user is not None: username = user._username displayname = user._displayname if '_deposit' in data: data['_deposit']['owners_ext'] = { 'username': username, 'displayname': displayname, 'email': current_user.email } deposit = super(WekoDeposit, cls).create(data, id_=id_) RecordsBuckets.create(record=deposit.model, bucket=bucket) recid = PersistentIdentifier.get('recid', str(data['_deposit']['id'])) depid = PersistentIdentifier.get('depid', str(data['_deposit']['id'])) p_depid = PersistentIdentifier.create('parent', 'parent:recid/{0}'.format( str(data['_deposit']['id'])), object_type='rec', object_uuid=uuid.uuid4(), status=PIDStatus.REGISTERED) PIDVersioning(parent=p_depid).insert_draft_child(child=recid) RecordDraft.link(recid, depid) return deposit
def file_ui(pid, record, _record_file_factory=None, is_preview=False, **kwargs): """File Ui. :param is_preview: Determine the type of event. True: file-preview, False: file-download :param _record_file_factory: :param pid: The :class:`invenio_pidstore.models.PersistentIdentifier` instance. :param record: The record metadata. """ _record_file_factory = _record_file_factory or record_file_factory # Extract file from record. fileobj = _record_file_factory(pid, record, kwargs.get('filename')) if not fileobj: abort(404) obj = fileobj.obj # Check file contents permission if not file_permission_factory(record, fjson=fileobj).can(): abort(403) # #Check permissions # ObjectResource.check_object_permission(obj) # Get user's language user = UserProfile.get_by_userid(current_user.get_id()) lang = 'en' # Defautl language for PDF coverpage if user is None: lang = 'en' else: lang = user.language add_signals_info(record, obj) """ Send file without its pdf cover page """ try: pdfcoverpage_set_rec = PDFCoverPageSettings.find(1) coverpage_state = WekoRecord.get_record_cvs(pid.object_uuid) is_original = request.args.get('original') or False is_pdf = 'pdf' in fileobj.mimetype can_download_original_pdf = check_original_pdf_download_permission( record) # if not pdf or cover page disabled: Download directly # if pdf and cover page enabled and has original in query param: check # permission (user roles) if is_pdf is False \ or pdfcoverpage_set_rec is None \ or pdfcoverpage_set_rec.avail == 'disable' \ or coverpage_state is False \ or (is_original and can_download_original_pdf): return ObjectResource.send_object( obj.bucket, obj, expected_chksum=fileobj.get('checksum'), logger_data={ 'bucket_id': obj.bucket_id, 'pid_type': pid.pid_type, 'pid_value': pid.pid_value, }, as_attachment=not is_preview, is_preview=is_preview) except AttributeError: return ObjectResource.send_object( obj.bucket, obj, expected_chksum=fileobj.get('checksum'), logger_data={ 'bucket_id': obj.bucket_id, 'pid_type': pid.pid_type, 'pid_value': pid.pid_value, }, as_attachment=not is_preview, is_preview=is_preview) # Send file with its pdf cover page file_instance_record = FileInstance.query.filter_by(id=obj.file_id).first() obj_file_uri = file_instance_record.uri # return obj_file_uri signals.file_downloaded.send(current_app._get_current_object(), obj=obj) return make_combined_pdf(pid, obj_file_uri, fileobj, obj, lang)