Skip to content

Commit

Permalink
work out if dataset or document is public #265
Browse files Browse the repository at this point in the history
  • Loading branch information
VKTB committed Jan 17, 2022
1 parent 94dcfba commit eca0a46
Showing 1 changed file with 23 additions and 6 deletions.
29 changes: 23 additions & 6 deletions datagateway_api/src/search_api/models.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,11 @@
import abc
from abc import ABC
from datetime import datetime
from datetime import datetime, timezone
import sys
from typing import ClassVar, List, Optional, Union

from pydantic import (
BaseModel,
Field,
ValidationError,
)
from dateutil.relativedelta import relativedelta
from pydantic import BaseModel, Field, ValidationError, validator
from pydantic.error_wrappers import ErrorWrapper

from datagateway_api.src.search_api.panosc_mappings import mappings
Expand Down Expand Up @@ -157,6 +154,16 @@ class Dataset(PaNOSCAttribute):
parameters: Optional[List["Parameter"]] = []
samples: Optional[List["Sample"]] = []

@validator("is_public", pre=True, always=True)
def set_is_public(cls, value): # noqa: B902, N805
if not value:
return value

creation_date = datetime.fromisoformat(value)
current_datetime = datetime.now(timezone.utc)
three_years_ago = current_datetime - relativedelta(years=3)
return creation_date < three_years_ago

@classmethod
def from_icat(cls, icat_data, required_related_fields):
return super(Dataset, cls).from_icat(icat_data, required_related_fields)
Expand Down Expand Up @@ -186,6 +193,16 @@ class Document(PaNOSCAttribute):
members: Optional[List["Member"]] = []
parameters: Optional[List["Parameter"]] = []

@validator("is_public", pre=True, always=True)
def set_is_public(cls, value): # noqa: B902, N805
if not value:
return value

creation_date = datetime.fromisoformat(value)
current_datetime = datetime.now(timezone.utc)
three_years_ago = current_datetime - relativedelta(years=3)
return creation_date < three_years_ago

@classmethod
def from_icat(cls, icat_data, required_related_fields):
return super(Document, cls).from_icat(icat_data, required_related_fields)
Expand Down

0 comments on commit eca0a46

Please sign in to comment.