diff --git a/app/models.py b/app/models.py index e2706eb5f756479529d0943b59eedf4ed694fb6f..79ee0ac7831ba96bfd18fab90ca0463462f71790 100644 --- a/app/models.py +++ b/app/models.py @@ -205,6 +205,8 @@ class Role(HashidMixin, db.Model): if self.has_permission(x.value) ] } + if backrefs: + pass if relationships: json_serializeable['users'] = { x.hashid: x.to_json_serializeable(relationships=True) @@ -256,6 +258,27 @@ class Token(db.Model): self.access_expiration = datetime.utcnow() self.refresh_expiration = datetime.utcnow() + def to_json_serializeable(self, backrefs=False, relationships=False): + json_serializeable = { + 'id': self.hashid, + 'access_token': self.access_token, + 'access_expiration': ( + None if self.access_expiration is None + else f'{self.access_expiration.isoformat()}Z' + ), + 'refresh_token': self.refresh_token, + 'refresh_expiration': ( + None if self.refresh_expiration is None + else f'{self.refresh_expiration.isoformat()}Z' + ) + } + if backrefs: + json_serializeable['user'] = \ + self.user.to_json_serializeable(backrefs=True) + if relationships: + pass + return json_serializeable + @staticmethod def clean(): """Remove any tokens that have been expired for more than a day.""" @@ -288,6 +311,11 @@ class Avatar(HashidMixin, FileMixin, db.Model): 'id': self.hashid, **self.file_mixin_to_json_serializeable() } + if backrefs: + json_serializeable['user'] = \ + self.user.to_json_serializeable(backrefs=True) + if relationships: + pass return json_serializeable @@ -328,6 +356,13 @@ class CorpusFollowerAssociation(HashidMixin, db.Model): 'corpus': self.corpus.to_json_serializeable(), 'follower': self.follower.to_json_serializeable() } + if backrefs: + json_serializeable['corpus'] = \ + self.corpus.to_json_serializeable(backrefs=True) + json_serializeable['follower'] = \ + self.follower.to_json_serializeable(backrefs=True) + if relationships: + pass return json_serializeable @@ -620,7 +655,6 @@ class User(HashidMixin, UserMixin, db.Model): def is_following_corpus(self, corpus): return corpus in self.followed_corpora - def to_json_serializeable(self, backrefs=False, relationships=False, filter_by_privacy_settings=False): json_serializeable = { 'id': self.hashid, @@ -628,9 +662,9 @@ class User(HashidMixin, UserMixin, db.Model): 'email': self.email, 'last_seen': ( None if self.last_seen is None - else self.last_seen.strftime('%Y-%m-%d %H:%M') + else f'{self.last_seen.isoformat()}Z' ), - 'member_since': self.member_since.strftime('%Y-%m-%d'), + 'member_since': f'{self.member_since.isoformat()}Z', 'username': self.username, 'full_name': self.full_name, 'about_me': self.about_me, @@ -804,6 +838,8 @@ class TesseractOCRPipelineModel(FileMixin, HashidMixin, db.Model): if backrefs: json_serializeable['user'] = \ self.user.to_json_serializeable(backrefs=True) + if relationships: + pass return json_serializeable @@ -930,7 +966,10 @@ class SpaCyNLPPipelineModel(FileMixin, HashidMixin, db.Model): **self.file_mixin_to_json_serializeable() } if backrefs: - json_serializeable['user'] = self.user.to_json_serializeable(backrefs=True) + json_serializeable['user'] = \ + self.user.to_json_serializeable(backrefs=True) + if relationships: + pass return json_serializeable @@ -989,6 +1028,8 @@ class JobInput(FileMixin, HashidMixin, db.Model): if backrefs: json_serializeable['job'] = \ self.job.to_json_serializeable(backrefs=True) + if relationships: + pass return json_serializeable @@ -1053,6 +1094,8 @@ class JobResult(FileMixin, HashidMixin, db.Model): if backrefs: json_serializeable['job'] = \ self.job.to_json_serializeable(backrefs=True) + if relationships: + pass return json_serializeable @@ -1132,7 +1175,6 @@ class Job(HashidMixin, db.Model): raise e return job - def delete(self): ''' Delete the job and its inputs and results from the database. ''' if self.status not in [JobStatus.COMPLETED, JobStatus.FAILED]: # noqa @@ -1177,8 +1219,7 @@ class Job(HashidMixin, db.Model): 'service_args': self.service_args, 'service_version': self.service_version, 'status': self.status.name, - 'title': self.title, - 'url': self.url + 'title': self.title } if backrefs: json_serializeable['user'] = \ @@ -1264,9 +1305,9 @@ class CorpusFile(FileMixin, HashidMixin, db.Model): def to_json_serializeable(self, backrefs=False, relationships=False): json_serializeable = { 'id': self.hashid, - 'url': self.url, 'address': self.address, 'author': self.author, + 'description': self.description, 'booktitle': self.booktitle, 'chapter': self.chapter, 'editor': self.editor, @@ -1285,6 +1326,8 @@ class CorpusFile(FileMixin, HashidMixin, db.Model): if backrefs: json_serializeable['corpus'] = \ self.corpus.to_json_serializeable(backrefs=True) + if relationships: + pass return json_serializeable