mirror of
				https://gitlab.ub.uni-bielefeld.de/sfb1288inf/nopaque.git
				synced 2025-11-03 20:02:47 +00:00 
			
		
		
		
	Add a flag to all db Model to_dict methods: include_relationships
This commit is contained in:
		
							
								
								
									
										119
									
								
								app/models.py
									
									
									
									
									
								
							
							
						
						
									
										119
									
								
								app/models.py
									
									
									
									
									
								
							@@ -151,25 +151,31 @@ class User(UserMixin, db.Model):
 | 
			
		||||
    def password(self, password):
 | 
			
		||||
        self.password_hash = generate_password_hash(password)
 | 
			
		||||
 | 
			
		||||
    def to_dict(self):
 | 
			
		||||
        return {'id': self.id,
 | 
			
		||||
                'role_id': self.role_id,
 | 
			
		||||
                'confirmed': self.confirmed,
 | 
			
		||||
                'email': self.email,
 | 
			
		||||
                'last_seen': self.last_seen.timestamp(),
 | 
			
		||||
                'member_since': self.member_since.timestamp(),
 | 
			
		||||
                'settings': {'dark_mode': self.setting_dark_mode,
 | 
			
		||||
                             'job_status_mail_notifications':
 | 
			
		||||
                                 self.setting_job_status_mail_notifications,
 | 
			
		||||
                             'job_status_site_notifications':
 | 
			
		||||
                                 self.setting_job_status_site_notifications},
 | 
			
		||||
                'username': self.username,
 | 
			
		||||
                'corpora': {corpus.id: corpus.to_dict()
 | 
			
		||||
                            for corpus in self.corpora},
 | 
			
		||||
                'jobs': {job.id: job.to_dict() for job in self.jobs},
 | 
			
		||||
                'query_results': {query_result.id: query_result.to_dict()
 | 
			
		||||
                                  for query_result in self.query_results},
 | 
			
		||||
                'role': self.role.to_dict()}
 | 
			
		||||
    def to_dict(self, include_relationships=True):
 | 
			
		||||
        dict_user = {
 | 
			
		||||
            'id': self.id,
 | 
			
		||||
            'role_id': self.role_id,
 | 
			
		||||
            'confirmed': self.confirmed,
 | 
			
		||||
            'email': self.email,
 | 
			
		||||
            'last_seen': self.last_seen.timestamp(),
 | 
			
		||||
            'member_since': self.member_since.timestamp(),
 | 
			
		||||
            'settings': {'dark_mode': self.setting_dark_mode,
 | 
			
		||||
                         'job_status_mail_notifications':
 | 
			
		||||
                             self.setting_job_status_mail_notifications,
 | 
			
		||||
                         'job_status_site_notifications':
 | 
			
		||||
                             self.setting_job_status_site_notifications},
 | 
			
		||||
            'username': self.username,
 | 
			
		||||
            'role': self.role.to_dict()
 | 
			
		||||
        }
 | 
			
		||||
        if include_relationships:
 | 
			
		||||
            dict_user['corpora'] = {corpus.id: corpus.to_dict()
 | 
			
		||||
                                    for corpus in self.corpora}
 | 
			
		||||
            dict_user['jobs'] = {job.id: job.to_dict() for job in self.jobs}
 | 
			
		||||
            dict_user['query_results'] = {
 | 
			
		||||
                query_result.id: query_result.to_dict()
 | 
			
		||||
                for query_result in self.query_results
 | 
			
		||||
            }
 | 
			
		||||
        return dict_user
 | 
			
		||||
 | 
			
		||||
    def __repr__(self):
 | 
			
		||||
        '''
 | 
			
		||||
@@ -301,7 +307,7 @@ class JobInput(db.Model):
 | 
			
		||||
        '''
 | 
			
		||||
        return '<JobInput {}>'.format(self.filename)
 | 
			
		||||
 | 
			
		||||
    def to_dict(self):
 | 
			
		||||
    def to_dict(self, include_relationships=True):
 | 
			
		||||
        return {'download_url': self.download_url,
 | 
			
		||||
                'url': self.url,
 | 
			
		||||
                'id': self.id,
 | 
			
		||||
@@ -341,7 +347,7 @@ class JobResult(db.Model):
 | 
			
		||||
        '''
 | 
			
		||||
        return '<JobResult {}>'.format(self.filename)
 | 
			
		||||
 | 
			
		||||
    def to_dict(self):
 | 
			
		||||
    def to_dict(self, include_relationships=True):
 | 
			
		||||
        return {'download_url': self.download_url,
 | 
			
		||||
                'url': self.url,
 | 
			
		||||
                'id': self.id,
 | 
			
		||||
@@ -420,22 +426,26 @@ class Job(db.Model):
 | 
			
		||||
        self.end_date = None
 | 
			
		||||
        self.status = 'submitted'
 | 
			
		||||
 | 
			
		||||
    def to_dict(self):
 | 
			
		||||
        return {'url': self.url,
 | 
			
		||||
                'id': self.id,
 | 
			
		||||
                'user_id': self.user_id,
 | 
			
		||||
                'creation_date': self.creation_date.timestamp(),
 | 
			
		||||
                'description': self.description,
 | 
			
		||||
                'end_date': (self.end_date.timestamp() if self.end_date else
 | 
			
		||||
                             None),
 | 
			
		||||
                'service': self.service,
 | 
			
		||||
                'service_args': self.service_args,
 | 
			
		||||
                'service_version': self.service_version,
 | 
			
		||||
                'status': self.status,
 | 
			
		||||
                'title': self.title,
 | 
			
		||||
                'inputs': {input.id: input.to_dict() for input in self.inputs},
 | 
			
		||||
                'results': {result.id: result.to_dict()
 | 
			
		||||
                            for result in self.results}}
 | 
			
		||||
    def to_dict(self, include_relationships=True):
 | 
			
		||||
        dict_job = {
 | 
			
		||||
            'url': self.url,
 | 
			
		||||
            'id': self.id,
 | 
			
		||||
            'user_id': self.user_id,
 | 
			
		||||
            'creation_date': self.creation_date.timestamp(),
 | 
			
		||||
            'description': self.description,
 | 
			
		||||
            'end_date': self.end_date.timestamp() if self.end_date else None,
 | 
			
		||||
            'service': self.service,
 | 
			
		||||
            'service_args': self.service_args,
 | 
			
		||||
            'service_version': self.service_version,
 | 
			
		||||
            'status': self.status,
 | 
			
		||||
            'title': self.title,
 | 
			
		||||
        }
 | 
			
		||||
        if include_relationships:
 | 
			
		||||
            dict_job['inputs'] = {input.id: input.to_dict()
 | 
			
		||||
                                  for input in self.inputs}
 | 
			
		||||
            dict_job['results'] = {result.id: result.to_dict()
 | 
			
		||||
                                   for result in self.results}
 | 
			
		||||
        return dict_job
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class CorpusFile(db.Model):
 | 
			
		||||
@@ -485,7 +495,7 @@ class CorpusFile(db.Model):
 | 
			
		||||
        db.session.delete(self)
 | 
			
		||||
        self.corpus.status = 'unprepared'
 | 
			
		||||
 | 
			
		||||
    def to_dict(self):
 | 
			
		||||
    def to_dict(self, include_relationships=True):
 | 
			
		||||
        return {'download_url': self.download_url,
 | 
			
		||||
                'url': self.url,
 | 
			
		||||
                'id': self.id,
 | 
			
		||||
@@ -539,19 +549,24 @@ class Corpus(db.Model):
 | 
			
		||||
    def url(self):
 | 
			
		||||
        return url_for('corpora.corpus', corpus_id=self.id)
 | 
			
		||||
 | 
			
		||||
    def to_dict(self):
 | 
			
		||||
        return {'analysis_url': self.analysis_url,
 | 
			
		||||
                'url': self.url,
 | 
			
		||||
                'id': self.id,
 | 
			
		||||
                'user_id': self.user_id,
 | 
			
		||||
                'creation_date': self.creation_date.timestamp(),
 | 
			
		||||
                'current_nr_of_tokens': self.current_nr_of_tokens,
 | 
			
		||||
                'description': self.description,
 | 
			
		||||
                'status': self.status,
 | 
			
		||||
                'last_edited_date': self.last_edited_date.timestamp(),
 | 
			
		||||
                'max_nr_of_tokens': self.max_nr_of_tokens,
 | 
			
		||||
                'title': self.title,
 | 
			
		||||
                'files': {file.id: file.to_dict() for file in self.files}}
 | 
			
		||||
    def to_dict(self, include_relationships=True):
 | 
			
		||||
        dict_corpus = {
 | 
			
		||||
            'analysis_url': self.analysis_url,
 | 
			
		||||
            'url': self.url,
 | 
			
		||||
            'id': self.id,
 | 
			
		||||
            'user_id': self.user_id,
 | 
			
		||||
            'creation_date': self.creation_date.timestamp(),
 | 
			
		||||
            'current_nr_of_tokens': self.current_nr_of_tokens,
 | 
			
		||||
            'description': self.description,
 | 
			
		||||
            'status': self.status,
 | 
			
		||||
            'last_edited_date': self.last_edited_date.timestamp(),
 | 
			
		||||
            'max_nr_of_tokens': self.max_nr_of_tokens,
 | 
			
		||||
            'title': self.title,
 | 
			
		||||
        }
 | 
			
		||||
        if include_relationships:
 | 
			
		||||
            dict_corpus['files'] = {file.id: file.to_dict()
 | 
			
		||||
                                    for file in self.files}
 | 
			
		||||
        return dict_corpus
 | 
			
		||||
 | 
			
		||||
    def build(self):
 | 
			
		||||
        output_dir = os.path.join(self.path, 'merged')
 | 
			
		||||
@@ -628,7 +643,7 @@ class QueryResult(db.Model):
 | 
			
		||||
        shutil.rmtree(self.path, ignore_errors=True)
 | 
			
		||||
        db.session.delete(self)
 | 
			
		||||
 | 
			
		||||
    def to_dict(self):
 | 
			
		||||
    def to_dict(self, include_relationships=True):
 | 
			
		||||
        return {'download_url': self.download_url,
 | 
			
		||||
                'url': self.url,
 | 
			
		||||
                'id': self.id,
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user