Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
966 commits
Select commit Hold shift + click to select a range
1085d90
Change permissions handling for load and upload
summerhenson Feb 11, 2025
cdc707a
Change permissions handling for download
summerhenson Feb 11, 2025
e69f66c
Return bad request for non put or push upload
summerhenson Feb 11, 2025
e56304a
Add tests for accessing nonexistent data
summerhenson Feb 11, 2025
e3bf9e3
Comment out unfinished test line
summerhenson Feb 11, 2025
cdb492d
Read download files to ensure they close - attempt to fix unit test f…
summerhenson Feb 12, 2025
e466b51
Fix typo
summerhenson Feb 12, 2025
62d033a
Preliminary documentation for models
summerhenson Feb 13, 2025
4cf82d5
Base abstract model for user and is_public
summerhenson Feb 13, 2025
f6662ac
Enable list other users' public data
summerhenson Feb 14, 2025
dfdeb66
404 for list by nonexistent username
summerhenson Feb 14, 2025
2f0ed8c
Switch to filter by username param not request user
summerhenson Feb 14, 2025
01f7dae
Change permissions tests to expected user list behavior
summerhenson Feb 14, 2025
920d2ea
Change data tests to expected user list behavior
summerhenson Feb 14, 2025
f863436
Create initial version of dataset model
summerhenson Feb 17, 2025
898ccb6
Start OperationTree model
summerhenson Feb 17, 2025
f2f6b4e
Start Session model
summerhenson Feb 17, 2025
fbf9cca
Begin SasData serializers
summerhenson Feb 19, 2025
7291d8b
Start of Quantity serializer
summerhenson Feb 19, 2025
8ca8a3d
Serializer for NamedQuantity
summerhenson Feb 19, 2025
16706f7
Continue SasData serializer and add notes
summerhenson Feb 19, 2025
5f3998d
Add class for MetaData model
summerhenson Feb 19, 2025
411486b
Temporarily comment out unmigrated models
summerhenson Feb 20, 2025
c899c5c
Serializers for units
summerhenson Feb 20, 2025
bc2a134
QuantityHistory serializer
summerhenson Feb 20, 2025
13f123f
Serializers for Dataset and Group
summerhenson Feb 20, 2025
643dde5
Framework for metadata serializers
summerhenson Feb 20, 2025
dafc9d5
Instrument metadata serializers
summerhenson Feb 20, 2025
8415bb5
Finish metadata serializers
summerhenson Feb 20, 2025
abd26bc
Updates to in-progess data models
summerhenson Feb 25, 2025
a6442e8
Initial versions of phase 1 models
summerhenson Feb 26, 2025
af2844d
model migrations
summerhenson Feb 26, 2025
244c74f
Add field for authorized non-owners for data
summerhenson Feb 26, 2025
f6f5df1
Change permissions to check users with access instead of just ownership
summerhenson Feb 26, 2025
58bde89
Ensure owner can access data
summerhenson Feb 26, 2025
4b242e7
Bare bones serializers for database models
summerhenson Feb 26, 2025
6707b32
Switch serialization methods to non-protected so pycharm stops naggin…
summerhenson Feb 27, 2025
aa3e34f
Deserialization for SasData class
summerhenson Feb 27, 2025
917f3ce
Deserialization for Group and Dataset classes
summerhenson Feb 27, 2025
c32b444
Deserialization for Quantity classes
summerhenson Feb 27, 2025
f1bdbf8
Add functionality to give and remove access to a file
summerhenson Feb 27, 2025
cb26589
Add response to access management view
summerhenson Feb 27, 2025
2af9eaa
Tests for access granting/removal
summerhenson Feb 27, 2025
f43fabe
Fix errors in access management view
summerhenson Feb 27, 2025
df68e09
More tests for access management
summerhenson Feb 28, 2025
6149c79
Remove redundant code in permissions
summerhenson Mar 3, 2025
b89bdb8
QuantityType serialisation for some types
summerhenson Mar 3, 2025
0d7ec28
Allow viewing who has access to a file
summerhenson Mar 3, 2025
0f450b4
Test listing users with access to a file
summerhenson Mar 3, 2025
e8433ef
Test permissions on file access management views
summerhenson Mar 3, 2025
156c82c
Serialize variance not standard deviation
summerhenson Mar 5, 2025
0c1b9fe
Finish models pending later changes
summerhenson Mar 5, 2025
9308f31
Add to documentation on future ORCID integration
summerhenson Mar 5, 2025
3987cd1
Change data creation status code to 201
summerhenson Mar 5, 2025
de9abf8
Modify tests to run faster
summerhenson Mar 6, 2025
da7ba9e
Change authentication tests to run faster
summerhenson Mar 6, 2025
bd56f03
Speed up data tests
summerhenson Mar 6, 2025
ee6e4e1
One more attempt to speed up user_app tests
summerhenson Mar 6, 2025
485f71d
Create view to delete a file
summerhenson Mar 6, 2025
ccf8368
Tests for file delete
summerhenson Mar 6, 2025
0ba8cc9
Reorganize data tests
summerhenson Mar 10, 2025
457f0ce
Start planning tests for dataset
summerhenson Mar 10, 2025
450cdd6
Initial version of DataSetView
summerhenson Mar 10, 2025
55efe12
General structure of dataset views
summerhenson Mar 10, 2025
05a3ceb
Updated version of DataSetView pending serialization changes
summerhenson Mar 10, 2025
8f10e97
First draft of SingleDataSetView
summerhenson Mar 10, 2025
5c6c24a
First draft for DataSetUsersView
summerhenson Mar 10, 2025
6eee3df
Add filter based on username in get request body
summerhenson Mar 10, 2025
fcf4a7c
Nested metadata serialization
summerhenson Mar 10, 2025
47cbd8d
Fix error in paths
summerhenson Mar 10, 2025
5fdd051
Structure for dataset tests
summerhenson Mar 11, 2025
390e68d
Fix filtering by username
summerhenson Mar 11, 2025
b1b7678
Tests for listing datasets
summerhenson Mar 11, 2025
7bd43c6
Tests for loading a dataset
summerhenson Mar 11, 2025
51b8d0f
Test for deleting a dataset
summerhenson Mar 11, 2025
4b0e5d0
Fix error in permissions check
summerhenson Mar 11, 2025
bd9fcee
Tests for updating a dataset
summerhenson Mar 11, 2025
c8826cb
Only allow data owner to view/manage access
summerhenson Mar 11, 2025
eee6f0d
Tests for listing users with access to a dataset
summerhenson Mar 11, 2025
7ec9592
Test granting access to dataset
summerhenson Mar 11, 2025
5c88067
Fix dataset creation
summerhenson Mar 12, 2025
1cbf256
Set owner when data is created
summerhenson Mar 12, 2025
af98488
Disallow creating private data without an owner
summerhenson Mar 12, 2025
5736653
Finish tests for DataSetView
summerhenson Mar 12, 2025
2387679
Fix error in accessing request user from serializer
summerhenson Mar 12, 2025
b0e8ff0
Modify existing SingleDataSet tests
summerhenson Mar 12, 2025
65a156d
Tests for unauthorized deletes
summerhenson Mar 12, 2025
b275cf1
Finish DataSetAccessManagement tests
summerhenson Mar 12, 2025
832dac1
Allow private data owner to change, not just public
summerhenson Mar 13, 2025
ac3079f
Document dataset tests + one more test
summerhenson Mar 13, 2025
1fc96de
Documentation for datafile tests
summerhenson Mar 13, 2025
189c216
Tests to make sure a user can't specify a data object id
summerhenson Mar 13, 2025
253393e
Add operation/parameters fields to OperationTree model
summerhenson Mar 14, 2025
711cb7a
Change response status to 401 for unauthenticated
summerhenson Mar 14, 2025
8c16660
Change tests to reflect status code change
summerhenson Mar 14, 2025
f326cc1
Skeleton of reformatted data file API
summerhenson Mar 17, 2025
1f584e1
Fill out DataFileView methods
summerhenson Mar 17, 2025
3b863b9
Change serializer validation to raise exception
summerhenson Mar 17, 2025
54ba8f2
SingleDataFileView methods
summerhenson Mar 17, 2025
21b4f29
DataFileUsersView methods
summerhenson Mar 17, 2025
d800735
Update urls for DataFile
summerhenson Mar 17, 2025
8b7f771
Fix error in get method for file download
summerhenson Mar 17, 2025
080456e
Fix error in datafile post
summerhenson Mar 17, 2025
8128355
Update tests for url changes
summerhenson Mar 17, 2025
f8c57cf
Updates for changes to SasData class
summerhenson Mar 18, 2025
b5b6566
Add published state to session model
summerhenson Mar 18, 2025
3cd9e59
Update metadata serializers for latest changes
summerhenson Mar 19, 2025
44f04b5
Update metadata model for recent changes
summerhenson Mar 19, 2025
3269b76
Account for metadata changes in test
summerhenson Mar 19, 2025
22235fd
Changes to OperationTree model
summerhenson Mar 19, 2025
d65e5af
Change metadata serialization in SasData serialization method
summerhenson Mar 20, 2025
93d940f
Change defaults and designate allowed operations for metadata/operati…
summerhenson Mar 20, 2025
e165a6d
Customize creation in OperationTreeSerializer
summerhenson Mar 20, 2025
319269d
Quantity model
summerhenson Mar 20, 2025
9748c12
Change SasData serializer to facilitate database deserialization
summerhenson Mar 20, 2025
11ca9a7
Nested quantity serialization in DataSetSerializer
summerhenson Mar 20, 2025
6c619ca
Add nested quantities to tests
summerhenson Mar 20, 2025
326760c
Comment out failing sasdata tests until they get fixed
summerhenson Mar 21, 2025
e6125d0
Edits to github actions/yml files
summerhenson Mar 24, 2025
0af7d7b
Clarify logic in permissions
summerhenson Mar 24, 2025
8e04f09
Test tokens valid on multiple login
summerhenson Mar 24, 2025
7e9f367
Remove mysterious extra spaces
summerhenson Mar 24, 2025
b88437b
Change operations model to refer to quantity
summerhenson Mar 25, 2025
bc8e54c
Add nested serialization for operation tree in quantity
summerhenson Mar 25, 2025
00e5246
Make operations tree optional for a quantity
summerhenson Mar 25, 2025
f0fbca3
Rename api clients in tests for clarity
summerhenson Mar 27, 2025
4603bf4
Restrict Django test runner to database tests
summerhenson Mar 27, 2025
d6eeeac
String representation of units for serialization
summerhenson Apr 1, 2025
5877827
Change and test response for changing access to a DataFile
summerhenson Apr 3, 2025
dd6ae8b
Add hash value to quantity serialization
summerhenson Apr 3, 2025
fbe04e0
Delete old method-based views
summerhenson Apr 3, 2025
e12b789
Change and test response for DataSet access management
summerhenson Apr 3, 2025
d2a5bf8
Serialization for QuantityType
summerhenson Apr 4, 2025
d875813
Empty class for operation testing
summerhenson Apr 4, 2025
0c36841
PublishedState and Session models
summerhenson Apr 4, 2025
e673116
Empty classes for session views
summerhenson Apr 4, 2025
fb4be4e
Basic serializer for session
summerhenson Apr 4, 2025
8e33187
Nested serializers in SessionSerializer
summerhenson Apr 4, 2025
0f9e4f7
session post method
summerhenson Apr 4, 2025
9027991
Session access management views
summerhenson Apr 4, 2025
bca9d5e
urls for sessions
summerhenson Apr 4, 2025
545e17c
methods for SingleSessionView - might need to revise later
summerhenson Apr 4, 2025
1728648
Switch key from OperationTree to Quantity
summerhenson Apr 7, 2025
ad108da
Add nested OperationTree to Quantity serializer
summerhenson Apr 7, 2025
5e7e8c8
Add title to Session
summerhenson Apr 7, 2025
4d344ba
Use numerical_encoding in sasdata for QuantityType serialization/dese…
summerhenson Apr 8, 2025
9aaa583
Change some comments in models
summerhenson Apr 8, 2025
a5591ee
Fix some bugs in operation tree deserialization
summerhenson Apr 8, 2025
3f3d8e7
Test creation of operation trees
summerhenson Apr 8, 2025
98e89f8
Test creating a quantity with no operations performed on it
summerhenson Apr 8, 2025
e4493ef
Test creating an operation tree with an invalid operation
summerhenson Apr 8, 2025
d354c50
Store quantity label as part of quantity
summerhenson Apr 8, 2025
c09bd4b
Customize OperationTree serialization from database representation
summerhenson Apr 8, 2025
5cfa223
Test GET with unary operation
summerhenson Apr 8, 2025
1a48b71
More tests for GET with operation trees
summerhenson Apr 8, 2025
41d9b18
Fix minor bug in OperationTree tests
summerhenson Apr 8, 2025
bde881f
Comments and planning for OperationTree testing
summerhenson Apr 9, 2025
d5b11da
Reorganize OperationTree tests and move to dedicated file
summerhenson Apr 9, 2025
71cb994
Tests for tensor product operation
summerhenson Apr 9, 2025
1889498
Validate nested operations and check parameters based on type
summerhenson Apr 9, 2025
9c8485d
Test creating invalid non-top-level operation fails
summerhenson Apr 9, 2025
5641b34
Separate class for invalid operation tree testing
summerhenson Apr 10, 2025
afcc0a5
Check operation trees only in operation tree get tests
summerhenson Apr 10, 2025
3272253
Test creating operations with missing parameters fails
summerhenson Apr 10, 2025
d37c38f
Test creating a quantity with no history
summerhenson Apr 10, 2025
a21e1ae
Check whether deleting a dataset deletes its quantities (it doesn't) …
summerhenson Apr 10, 2025
13ea044
Test whether deleting a dataset/its quantities deletes operations (it…
summerhenson Apr 10, 2025
cd626bb
Try switching from many-to-many to one-to-many relationship for DataS…
summerhenson Apr 10, 2025
015ae99
Change operations test setup to account for altered model relationship
summerhenson Apr 10, 2025
5e6b1ef
Remove dataset id from serialized quantity
summerhenson Apr 10, 2025
c6d8d67
Prevent deleting parent operations instead of cascading
summerhenson Apr 10, 2025
a9d7d6c
Automatically delete OperationTrees when quantities are deleted
summerhenson Apr 10, 2025
02c44be
Test nested OperationTree instances are deleted
summerhenson Apr 10, 2025
47d8006
Change direction of DataSet/MetaData relationship for automatic deletion
summerhenson Apr 11, 2025
8605d8f
Change direction of Quantity/OperationTree relationship for automatic…
summerhenson Apr 11, 2025
1a4c28e
Change direction of Session/DataSet relationship for automatic deletion
summerhenson Apr 11, 2025
542d489
Change direction of Session/PublishedState relationship for automatic…
summerhenson Apr 11, 2025
b174b3f
Change direction of OperationTree parent-child links for automatic de…
summerhenson Apr 11, 2025
2718c4b
Serializer for session
summerhenson Apr 11, 2025
ab5ad16
Get method for Sessions
summerhenson Apr 11, 2025
3fd6091
Return is_public in access management GET requests
summerhenson Apr 14, 2025
1ea1c9e
Remove dataset id from MetaData instance serialization
summerhenson Apr 14, 2025
9d1a925
Test GET dataset with metadata
summerhenson Apr 14, 2025
5569a32
Add comments to serializer classes
summerhenson Apr 14, 2025
afb2a3b
Fix serialization of DataSet with files
summerhenson Apr 14, 2025
b695602
Check access to files in a dataset
summerhenson Apr 14, 2025
0b6a5e4
Test DataSet creation with files
summerhenson Apr 14, 2025
5964cdf
Filter files in dataset by access
summerhenson Apr 14, 2025
5730ec9
Test loading dataset with files
summerhenson Apr 14, 2025
2e5b3e1
Start session tests
summerhenson Apr 14, 2025
281bd45
Copy session is_public value to composing datasets
summerhenson Apr 14, 2025
75c64fb
Test listing sessions
summerhenson Apr 14, 2025
3d24ec1
Fix bugs in DataSet creation nested in a Session
summerhenson Apr 15, 2025
954ec48
Include username and authentication status in all post responses
summerhenson Apr 15, 2025
9244550
Disallow creating private sessions without an owner
summerhenson Apr 15, 2025
58cbc1a
Test Session post method
summerhenson Apr 15, 2025
0789f1b
Use the right serializer for sessions and return id with get
summerhenson Apr 15, 2025
0cfa6ea
Test get method for individual sessions
summerhenson Apr 15, 2025
a1a4a67
Test put method for individual sessions
summerhenson Apr 15, 2025
7f5a6e3
Test Session delete method
summerhenson Apr 15, 2025
62a7b2c
Propagate access changes from session to composing datasets
summerhenson Apr 15, 2025
b29913c
Test Session access management
summerhenson Apr 15, 2025
66d4e78
Return current_user as username not id
summerhenson Apr 16, 2025
756cf59
Comments of session testing
summerhenson Apr 16, 2025
ccbb2ae
Add field for history references to Quantity
summerhenson Apr 16, 2025
6a63374
Serialization for Quantity variable references
summerhenson Apr 16, 2025
3ee37ab
Change serialization of QuantityHistory references to match API
summerhenson Apr 16, 2025
bfdaad3
Serialize Quantity operation_tree and references as history
summerhenson Apr 16, 2025
5bae9a1
Remove infinite serialization loop of quantities and histories
summerhenson Apr 16, 2025
c6eaecc
Separate model for history reference quantities
summerhenson Apr 16, 2025
7860fd5
Test references in quantity history
summerhenson Apr 16, 2025
66be25a
Add tests to test updating a DataSet
summerhenson Apr 16, 2025
9569b17
Propagate update to session is_public to datasets
summerhenson Apr 16, 2025
8223a4a
PublishedState serialization and minor serializer create method simpl…
summerhenson Apr 17, 2025
d406a43
Outline of PublishedState views
summerhenson Apr 17, 2025
cb8447c
PublishedState list method
summerhenson Apr 17, 2025
dd8e493
Serializer to restrict PublishedState update to published field
summerhenson Apr 17, 2025
db6de1f
Post method for PublishedState
summerhenson Apr 17, 2025
fef2ef1
Get method for single PublishedState
summerhenson Apr 17, 2025
75da757
Update method for PublishedState
summerhenson Apr 17, 2025
8e3407e
Delete method for PublishedState
summerhenson Apr 17, 2025
54ad406
Planning for PublishedState testing
summerhenson Apr 17, 2025
f84cd11
PublishedState urls
summerhenson Apr 17, 2025
c104d0a
Test listing published states
summerhenson Apr 17, 2025
b8b71bb
Fix bugs in PublishedState creation
summerhenson Apr 17, 2025
9cc8ef0
Check that session doesn't already have a published state
summerhenson Apr 17, 2025
fec53f6
Test creating a published state
summerhenson Apr 17, 2025
aae2793
Add fields to PublishedState get response
summerhenson Apr 17, 2025
3b90189
Test individual PublishedState get method
summerhenson Apr 17, 2025
2a648f4
Test PublishedState update method
summerhenson Apr 17, 2025
517c889
Test PublishedState delete method
summerhenson Apr 17, 2025
ec735ca
Session creation example script
summerhenson Apr 21, 2025
24cacd6
Add models to admin interface
summerhenson Apr 21, 2025
a56c55e
Account for json strings in post requests
summerhenson Apr 21, 2025
dfc415a
Enable session-based authentication
summerhenson Apr 21, 2025
bf9b3bf
Comments for PublishedState tests
summerhenson Apr 21, 2025
b06e244
Test that metadata is required for dataset creation
summerhenson Apr 21, 2025
dc84d8d
Minor changes suggested by Jeff
summerhenson Apr 21, 2025
8b03812
Nested PublishedState update in Session
summerhenson Apr 21, 2025
3f314b3
Test nested PublishedState
summerhenson Apr 21, 2025
e0c810f
Test listing published states by username
summerhenson Apr 22, 2025
b0a8a0d
Deserialization methods for sasdata structures
summerhenson Apr 22, 2025
11b203d
ruff formatting changes
krzywon Jun 3, 2026
38ebaad
merge refactor_24 into sasdata-database-cherry-pick-merge and resolve…
krzywon Jun 3, 2026
58f703e
ruff fixes
krzywon Jun 3, 2026
a933ba2
ruff fixes
krzywon Jun 3, 2026
4e9db5a
merge refactor_24 into sasdata-database-merge and resolve conflicts
krzywon Jun 3, 2026
e0a2bd1
Update fair-database package to make it match the head for the sasvie…
krzywon Jun 4, 2026
e9814ba
Bring refactoring work up-to-date in database branch manually
krzywon Jun 4, 2026
acc4a6f
Keep whitespace in test file to ensure testing succeeds
krzywon Jun 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 54 additions & 0 deletions .github/workflows/test-fair-database.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
name: Tests

on:
[push, pull_request]

defaults:
run:
shell: bash

jobs:
unit-test:

runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [macos-latest, ubuntu-latest, windows-latest]
python-version: ['3.12']
fail-fast: false

steps:

- name: Obtain SasData source from git
uses: actions/checkout@v4

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
cache: 'pip'
cache-dependency-path: |
**/test.yml
**/requirements*.txt

### Installation of build-dependencies

- name: Install Python dependencies
run: |
python -m pip install --upgrade pip
python -m pip install wheel setuptools
python -m pip install -r requirements.txt
python -m pip install -r sasdata/fair_database/requirements.txt

### Build and test sasdata

- name: Build sasdata
run: |
# BUILD SASDATA
python -m pip install -e .

### Build documentation (if enabled)

- name: Test with Django tests
run: |
python sasdata/fair_database/manage.py test sasdata.fair_database
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
**/build
/dist
.mplconfig
**/db.sqlite3

# INSTALL.md recommends a venv that should not be committed
venv
Expand Down
36 changes: 36 additions & 0 deletions sasdata/data.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
import json
import typing
from typing import Any

import h5py
import numpy as np
Expand Down Expand Up @@ -125,6 +127,40 @@ def save_h5(data: dict[str, typing.Self], path: str | typing.BinaryIO):
sasentry.attrs["sasview_key"] = key
data._save_h5(sasentry)

@staticmethod
def deserialise(data: str) -> "SasData":
json_data = json.loads(data)
return SasData.deserialise_json(json_data)

@staticmethod
def deserialise_json(json_data: dict) -> "SasData":
name = json_data["name"]
data_contents = {}
dataset_type = json_data["dataset_type"] # TODO: update when DatasetType is more finalized
metadata = json_data["metadata"].deserialise_json()
for quantity in json_data["data_contents"]:
data_contents[quantity["label"]] = Quantity.deserialise_json(quantity)
return SasData(name, data_contents, dataset_type, metadata)

def serialise(self) -> str:
return json.dumps(self._serialise_json())

# TODO: fix serializers eventually
def _serialise_json(self) -> dict[str, Any]:
data = []
for d in self._data_contents:
quantity = self._data_contents[d]
quantity["label"] = d
data.append(quantity)
return {
"name": self.name,
"data_contents": data,
"dataset_type": None, # TODO: update when DatasetType is more finalized
"verbose": self._verbose,
"metadata": self.metadata.serialise_json(),
"mask": {},
"model_requirements": {}
}


class SasDataEncoder(MetadataEncoder):
Expand Down
49 changes: 49 additions & 0 deletions sasdata/data_backing.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,34 @@ def summary(self, indent_amount: int = 0, indent: str = " ") -> str:

return s

@staticmethod
def deserialise_json(json_data: dict) -> "Dataset":
name = json_data["name"]
data = "" # TODO: figure out QuantityType serialisation
attributes = {}
for key in json_data["attributes"]:
value = json_data["attributes"][key]
if isinstance(value, dict):
attributes[key] = Dataset.deserialise_json(value)
else:
attributes[key] = value
return Dataset(name, data, attributes)

def serialise_json(self):
content = {
"name": self.name,
"data": "", # TODO: figure out QuantityType serialisation
"attributes": {},
"type": "dataset"
}
for key in self.attributes:
value = self.attributes[key]
if isinstance(value, (Group, Dataset)):
content["attributes"]["key"] = value.serialise_json()
else:
content["attributes"]["key"] = value
return content

@dataclass
class Group:
name: str
Expand All @@ -48,6 +76,27 @@ def summary(self, indent_amount: int=0, indent=" "):

return s

@staticmethod
def deserialise_json(json_data: dict) -> "Group":
name = json_data["name"]
children = {}
for key in json_data["children"]:
value = json_data["children"][key]
if value["type"] == "group":
children[key] = Group.deserialise_json(value)
else:
children[key] = Dataset.deserialise_json(value)
return Group(name, children)

def serialise_json(self):
return {
"name": self.name,
"children": {
key: self.children[key].serialise_json() for key in self.children
},
"type": "group"
}

class Function:
""" Representation of a (data driven) function, such as I vs Q """

Expand Down
Empty file.
Empty file.
11 changes: 11 additions & 0 deletions sasdata/fair_database/data/admin.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
from data import models
from django.contrib import admin

admin.site.register(models.DataFile)
admin.site.register(models.Session)
admin.site.register(models.PublishedState)
admin.site.register(models.DataSet)
admin.site.register(models.MetaData)
admin.site.register(models.Quantity)
admin.site.register(models.OperationTree)
admin.site.register(models.ReferenceQuantity)
6 changes: 6 additions & 0 deletions sasdata/fair_database/data/apps.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
from django.apps import AppConfig


class DataConfig(AppConfig):
default_auto_field = "django.db.models.BigAutoField"
name = "data"
9 changes: 9 additions & 0 deletions sasdata/fair_database/data/forms.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
from data.models import DataFile
from django import forms


# Create the form class.
class DataFileForm(forms.ModelForm):
class Meta:
model = DataFile
fields = ["file", "is_public"]
Loading
Loading