[ 
https://issues.apache.org/jira/browse/AIRAVATA-3342?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17146659#comment-17146659
 ] 

Marcus Christie edited comment on AIRAVATA-3342 at 6/26/20, 9:47 PM:
---------------------------------------------------------------------

Tried to integrate testing, but I'm getting stuck on trying to have a test 
UserFiles db model.

{code}
======================================================================
ERROR: tests.test_user_storage (unittest.loader._FailedTest)
----------------------------------------------------------------------
ImportError: Failed to import test module: tests.test_user_storage
Traceback (most recent call last):
  File 
"/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/unittest/loader.py",
 line 428, in _find_test_path
    module = self._get_module_from_name(name)
  File 
"/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/unittest/loader.py",
 line 369, in _get_module_from_name
    __import__(name)
  File 
"/Users/machrist/Airavata/django/airavata-django-portal-sdk/tests/test_user_storage.py",
 line 21, in <module>
    class TestUserFiles(base.UserFiles):
  File 
"/Users/machrist/Airavata/django/airavata-django-portal-sdk/venv/lib/python3.6/site-packages/django/db/models/base.py",
 line 115, in __new__
    "INSTALLED_APPS." % (module, name)
RuntimeError: Model class tests.test_user_storage.TestUserFiles doesn't declare 
an explicit app_label and isn't in an application in INSTALLED_APPS.
{code}

Django really wants models to be in apps and come to think of it, having the 
SDK be an app would mean I could just define the UserFiles model directly 
instead of needing an abstract model that is actually implemented in the 
airavata-django-portal.

The other approach I think is to remove all of the Django code from the SDK, 
but I'm not sure how far that can go. I would need to provide abstractions so 
that Django implementations of functionality can be plugged in. I suppose if 
that were under the covers and not exposed to users of the SDK, that could work.



was (Author: marcuschristie):
Tried to integrate testing, but I'm getting stuck on trying to have a test 
UserFiles db model.

```
======================================================================
ERROR: tests.test_user_storage (unittest.loader._FailedTest)
----------------------------------------------------------------------
ImportError: Failed to import test module: tests.test_user_storage
Traceback (most recent call last):
  File 
"/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/unittest/loader.py",
 line 428, in _find_test_path
    module = self._get_module_from_name(name)
  File 
"/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/unittest/loader.py",
 line 369, in _get_module_from_name
    __import__(name)
  File 
"/Users/machrist/Airavata/django/airavata-django-portal-sdk/tests/test_user_storage.py",
 line 21, in <module>
    class TestUserFiles(base.UserFiles):
  File 
"/Users/machrist/Airavata/django/airavata-django-portal-sdk/venv/lib/python3.6/site-packages/django/db/models/base.py",
 line 115, in __new__
    "INSTALLED_APPS." % (module, name)
RuntimeError: Model class tests.test_user_storage.TestUserFiles doesn't declare 
an explicit app_label and isn't in an application in INSTALLED_APPS.
```

Django really wants models to be in apps and come to think of it, having the 
SDK be an app would mean I could just define the UserFiles model directly 
instead of needing an abstract model that is actually implemented in the 
airavata-django-portal.

The other approach I think is to remove all of the Django code from the SDK, 
but I'm not sure how far that can go. I would need to provide abstractions so 
that Django implementations of functionality can be plugged in. I suppose if 
that were under the covers and not exposed to users of the SDK, that could work.

> Implement SDK function for managing user storage
> ------------------------------------------------
>
>                 Key: AIRAVATA-3342
>                 URL: https://issues.apache.org/jira/browse/AIRAVATA-3342
>             Project: Airavata
>          Issue Type: Sub-task
>            Reporter: Marcus Christie
>            Assignee: Marcus Christie
>            Priority: Major
>
> An initial version of the user file management aspects of the SDK were 
> implemented in the maptool custom Django app: 
> https://github.com/SciGaP/simccs-maptool/blob/dev/simccs_maptool/django_airavata_sdk.py
> The API need not have exactly the same signature, but that implementation 
> should make clear the kind of functionality that should be offered.
> TODO
> - [ ] put the airavata_python_sdk into a module? Right now the top level 
> modules are `clients`, `samples`, `transport`. Also the there is a `build` 
> directory there with duplicates of the python modules?
> - [ ] generate documentation for public API
> - [ ] have django_airavata_api.User_Files extend sdk's UserFiles and might as 
> well set the {{settings.USER_FILES_MODEL}}
> - [ ] switch airavata-django-portal code over to using SDK
> - [ ] move data_products_helper tests to SDK
> - [ ] access control? how to determine if user has access to files?
> - [ ] setup apache repo to push the sdk to
> - [ ] make the SDK a proper Django app, this will ease testing and integration



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to