Merge pull request #337 from sartography/add-by-user-61
Add by user #61
This commit is contained in:
commit
8cb7cbc0ad
|
@ -68,6 +68,7 @@ class FileDataModel(db.Model):
|
|||
date_created = db.Column(db.DateTime(timezone=True), server_default=func.now())
|
||||
file_model_id = db.Column(db.Integer, db.ForeignKey('file.id'))
|
||||
file_model = db.relationship("FileModel", foreign_keys=[file_model_id])
|
||||
user_uid = db.Column(db.String, db.ForeignKey('user.uid'), nullable=True)
|
||||
|
||||
|
||||
class FileModel(db.Model):
|
||||
|
@ -114,6 +115,7 @@ class File(object):
|
|||
instance.last_modified = data_model.date_created
|
||||
instance.latest_version = data_model.version
|
||||
instance.size = data_model.size
|
||||
instance.user_uid = data_model.user_uid
|
||||
else:
|
||||
instance.last_modified = None
|
||||
instance.latest_version = None
|
||||
|
@ -141,7 +143,7 @@ class FileSchema(Schema):
|
|||
fields = ["id", "name", "is_status", "is_reference", "content_type",
|
||||
"primary", "primary_process_id", "workflow_spec_id", "workflow_id",
|
||||
"irb_doc_code", "last_modified", "latest_version", "type", "size", "data_store",
|
||||
"document"]
|
||||
"document", "user_uid"]
|
||||
unknown = INCLUDE
|
||||
type = EnumField(FileType)
|
||||
|
||||
|
|
|
@ -19,6 +19,7 @@ from crc.models.data_store import DataStoreModel
|
|||
from crc.models.file import FileType, FileDataModel, FileModel, LookupFileModel, LookupDataModel
|
||||
from crc.models.workflow import WorkflowSpecModel, WorkflowModel, WorkflowSpecDependencyFile
|
||||
from crc.services.cache_service import cache
|
||||
from crc.services.user_service import UserService
|
||||
import re
|
||||
|
||||
|
||||
|
@ -168,10 +169,14 @@ class FileService(object):
|
|||
except XMLSyntaxError as xse:
|
||||
raise ApiError("invalid_xml", "Failed to parse xml: " + str(xse), file_name=file_model.name)
|
||||
|
||||
try:
|
||||
user_uid = UserService.current_user().uid
|
||||
except ApiError as ae:
|
||||
user_uid = None
|
||||
new_file_data_model = FileDataModel(
|
||||
data=binary_data, file_model_id=file_model.id, file_model=file_model,
|
||||
version=version, md5_hash=md5_checksum, date_created=datetime.utcnow(),
|
||||
size=size
|
||||
size=size, user_uid=user_uid
|
||||
)
|
||||
session.add_all([file_model, new_file_data_model])
|
||||
session.commit()
|
||||
|
|
|
@ -0,0 +1,27 @@
|
|||
"""add user_uid column to file_data table
|
||||
|
||||
Revision ID: 30e017a03948
|
||||
Revises: bbf064082623
|
||||
Create Date: 2021-07-06 10:39:04.661704
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = '30e017a03948'
|
||||
down_revision = 'bbf064082623'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
op.add_column('file_data', sa.Column('user_uid', sa.String(), nullable=True))
|
||||
op.create_foreign_key(None, 'file_data', 'user', ['user_uid'], ['uid'])
|
||||
|
||||
|
||||
def downgrade():
|
||||
# op.drop_constraint('file_data_user_uid_fkey', 'file_data', type_='foreignkey')
|
||||
# op.execute("update file_data set user_uid = NULL WHERE user_uid IS NOT NULL")
|
||||
op.drop_column('file_data', 'user_uid')
|
|
@ -148,13 +148,6 @@ class BaseTest(unittest.TestCase):
|
|||
otherwise it depends on a small setup for running tests."""
|
||||
from example_data import ExampleDataLoader
|
||||
ExampleDataLoader.clean_db()
|
||||
if use_crc_data:
|
||||
ExampleDataLoader().load_all()
|
||||
elif use_rrt_data:
|
||||
ExampleDataLoader().load_rrt()
|
||||
else:
|
||||
ExampleDataLoader().load_test_data()
|
||||
|
||||
# If in production mode, only add the first user.
|
||||
if app.config['PRODUCTION']:
|
||||
session.add(UserModel(**self.users[0]))
|
||||
|
@ -162,6 +155,13 @@ class BaseTest(unittest.TestCase):
|
|||
for user_json in self.users:
|
||||
session.add(UserModel(**user_json))
|
||||
|
||||
if use_crc_data:
|
||||
ExampleDataLoader().load_all()
|
||||
elif use_rrt_data:
|
||||
ExampleDataLoader().load_rrt()
|
||||
else:
|
||||
ExampleDataLoader().load_test_data()
|
||||
|
||||
session.commit()
|
||||
for study_json in self.studies:
|
||||
study_model = StudyModel(**study_json)
|
||||
|
|
|
@ -126,6 +126,7 @@ class TestFilesApi(BaseTest):
|
|||
self.assertEqual(FileType.xlsx, file.type)
|
||||
self.assertTrue(file.is_reference)
|
||||
self.assertEqual("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", file.content_type)
|
||||
self.assertEqual('dhf8r', json_data['user_uid'])
|
||||
|
||||
def test_set_reference_file_bad_extension(self):
|
||||
file_name = DocumentService.DOCUMENT_LIST
|
||||
|
|
Loading…
Reference in New Issue