Skip to content

Commit cc7709d

Browse files
author
Francisco Arrieta
committed
#293 Finishing up the get and create functions in series_service
1 parent 324ae0e commit cc7709d

File tree

2 files changed

+53
-118
lines changed

2 files changed

+53
-118
lines changed

odmtools/odmservices/cv_service.py

+20-44
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ def __init__(self, connection_string="", debug=False):
2929
self.read_service = ReadODM2(session_factory=self._session_factory, debug=self._debug)
3030

3131
# Controlled Vocabulary get methods
32-
# Returns a list of all terms in the Controller Vocabulary (CV)
3332

3433
# From ODM1 -> ODM2 Qualifier was changed to Annotations
3534
def get_annotations(self, type):
@@ -48,14 +47,21 @@ def get_general_category_cvs(self):
4847
return result
4948

5049
def get_offset_type_cvs(self):
51-
# result = self._edit_session.query(OffsetType).order_by(OffsetType.id).all()
52-
# return result
5350
return self.read_service.getCVs(type="Spatial Offset Type")
5451

5552
# From ODM1 -> ODM2 Quality Controlled Level was changed to Processing Level
5653
def get_all_processing_levels(self):
5754
self.read_service.getProcessingLevels()
5855

56+
def get_all_method(self): # Rename to get_method_all
57+
return self.read_service.getMethods(ids=None, codes=None, type=None)
58+
59+
def get_method_by_id(self, method_id):
60+
return self.read_service.getMethods(ids=method_id)
61+
62+
def get_method_by_description(self, code):
63+
return self.read_service.getMethods(codes=code)
64+
5965
def get_processing_level_by_id(self, id):
6066
self.read_service.getProcessingLevels(ids=id)
6167

@@ -67,27 +73,29 @@ def get_samples(self):
6773
return result
6874

6975
def get_sample_medium_cvs(self):
70-
# result = self._edit_session.query(SampleMediumCV).order_by(SampleMediumCV.term).all()
71-
# return result
7276
return self.read_service.getCVs(type="Medium")
7377

7478
def get_site_type_cvs(self):
75-
# result = self._edit_session.query(SiteTypeCV).order_by(SiteTypeCV.term).all()
76-
# return result
7779
return self.read_service.getCVs(type="Site Type")
7880

7981
def get_speciation_cvs(self):
80-
# result = self._edit_session.query(SpeciationCV).order_by(SpeciationCV.term).all()
81-
# return result
8282
return self.read_service.getCVs(type="Speciation")
8383

8484
def get_sample_type_cvs(self):
8585
result = self._edit_session.query(SampleTypeCV).order_by(SampleTypeCV.term).all()
8686
return result
8787

88+
# From ODM1 -> ODM2 Site was changed to Sampling Feature
89+
def get_all_sites(self):
90+
return self.read_service.getSamplingFeatures(ids=None, codes=None, uuids=None, type=None, wkt=None)
91+
92+
def get_site_by_id(self, site_id):
93+
return self.read_service.getSamplingFeatures(ids=site_id)
94+
95+
def get_timeseries_result_values(self, type):
96+
return self.read_service.getAnnotations(type=type)
97+
8898
def get_units(self):
89-
# result = self._edit_session.query(Unit).all()
90-
# return result
9199
self.read_service.getUnits(ids=None, name=None, type=None)
92100

93101
def get_units_not_uni(self):
@@ -100,27 +108,19 @@ def get_units_names(self):
100108

101109
# return a single cv
102110
def get_unit_by_name(self, unit_name):
103-
# result = self._edit_session.query(Unit).filter_by(name=unit_name).first()
104-
# return result
105111
return self.read_service.getUnits(name=unit_name)
106112

107113
def get_unit_by_id(self, unit_id):
108-
# result = self._edit_session.query(Unit).filter_by(id=unit_id).first()
109-
# return result
110114
return self.read_service.getUnits(ids=unit_id)
111115

112116
def get_value_type_cvs(self):
113117
result = self._edit_session.query(ValueTypeCV).order_by(ValueTypeCV.term).all()
114118
return result
115119

116120
def get_variable_name_cvs(self):
117-
# result = self._edit_session.query(VariableNameCV).order_by(VariableNameCV.term).all()
118-
# return result
119121
return self.read_service.getCVs(type="Variable Name")
120122

121123
def get_vertical_datum_cvs(self):
122-
# result = self._edit_session.query(VerticalDatumCV).order_by(VerticalDatumCV.term).all()
123-
# return result
124124
return self.read_service.getCVs("Elevation Datum")
125125

126126
def get_all_variables(self):
@@ -132,31 +132,7 @@ def get_variable_by_id(self, id):
132132
def get_variable_by_code(self, code):
133133
return self.read_service.getVariables(codes=code)
134134

135-
# def get_all_qualifiers(self):
136-
# """
137-
#
138-
# :return: List[Qualifiers]
139-
# """
140-
# result = self._edit_session.query(Qualifier).order_by(Qualifier.code).all()
141-
# return result
142-
#
143-
# def get_qualifier_by_code(self, code):
144-
# """
145-
#
146-
# :return: Qualifiers
147-
# """
148-
# result = self._edit_session.query(Qualifier).filter(Qualifier.code==code).first()
149-
# return result
150-
#
151-
# def get_qualifiers_by_series_id(self, series_id):
152-
# """
153-
#
154-
# :param series_id:
155-
# :return:
156-
# """
157-
# subquery = self._edit_session.query(DataValue.qualifier_id).outerjoin(
158-
# Series.data_values).filter(Series.id == series_id, DataValue.qualifier_id != None).distinct().subquery()
159-
# return self._edit_session.query(Qualifier).join(subquery).distinct().all()
135+
160136

161137

162138

odmtools/odmservices/series_service.py

+33-74
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@ def __init__(self, connection_string="", debug=False):
2929
self.create_service = CreateODM2(session_factory=self._session_factory, debug=self._debug)
3030

3131
def reset_session(self):
32-
self._edit_session = self._session_factory.getSession() # Reset the session in order to prevent memory leaks
32+
# self._edit_session = self._session_factory.getSession() # Reset the session in order to prevent memory leaks
33+
self._edit_session = self.create_service.getSession()
3334

3435
def get_db_version(self):
3536
return self._edit_session.query(ODMVersion).first().version_number
@@ -40,15 +41,6 @@ def get_db_version(self):
4041
#
4142
#####################
4243

43-
# Site methods
44-
def get_all_sites(self):
45-
"""
46-
47-
:return: List[Sites]
48-
"""
49-
return self._edit_session.query(Site).order_by(Site.code).all()
50-
51-
5244
def get_used_sites(self):
5345
"""
5446
Return a list of all sites that are being referenced in the Series Catalog Table
@@ -68,18 +60,6 @@ def get_used_sites(self):
6860

6961
return Sites
7062

71-
72-
def get_site_by_id(self, site_id):
73-
"""
74-
return a Site object that has an id=site_id
75-
:param site_id: integer- the identification number of the site
76-
:return: Sites
77-
"""
78-
try:
79-
return self._edit_session.query(Site).filter_by(id=site_id).first()
80-
except:
81-
return None
82-
8363
# Variables methods
8464
def get_used_variables(self):
8565
"""
@@ -103,43 +83,6 @@ def get_used_variables(self):
10383

10484
return Variables
10585

106-
def get_variables_by_site_code(self, site_code): # covers NoDV, VarUnits, TimeUnits
107-
"""
108-
Finds all of variables at a site
109-
:param site_code: str
110-
:return: List[Variables]
111-
"""
112-
try:
113-
var_ids = [x[0] for x in self._edit_session.query(distinct(Series.variable_id)).filter_by(
114-
site_code=site_code).all()]
115-
except:
116-
var_ids = None
117-
118-
variables = []
119-
for var_id in var_ids:
120-
variables.append(self._edit_session.query(Variable).filter_by(id=var_id).first())
121-
122-
return variables
123-
124-
# Method methods
125-
def get_all_methods(self):
126-
return self._edit_session.query(Method).all()
127-
128-
def get_method_by_id(self, method_id):
129-
try:
130-
result = self._edit_session.query(Method).filter_by(id=method_id).first()
131-
except:
132-
result = None
133-
return result
134-
135-
def get_method_by_description(self, method_code):
136-
try:
137-
result = self._edit_session.query(Method).filter_by(description=method_code).first()
138-
except:
139-
result = None
140-
logger.error("method not found")
141-
return result
142-
14386
def get_offset_types_by_series_id(self, series_id):
14487
"""
14588
@@ -215,6 +158,31 @@ def get_series_from_filter(self):
215158
# Pass in probably a Series object, match it against the database
216159
pass
217160

161+
def get_all_qualifiers(self):
162+
"""
163+
164+
:return: List[Qualifiers]
165+
"""
166+
result = self._edit_session.query(Qualifier).order_by(Qualifier.code).all()
167+
return result
168+
169+
def get_qualifier_by_code(self, code):
170+
"""
171+
172+
:return: Qualifiers
173+
"""
174+
result = self._edit_session.query(Qualifier).filter(Qualifier.code==code).first()
175+
return result
176+
177+
def get_qualifiers_by_series_id(self, series_id):
178+
"""
179+
180+
:param series_id:
181+
:return:
182+
"""
183+
subquery = self._edit_session.query(DataValue.qualifier_id).outerjoin(
184+
Series.data_values).filter(Series.id == series_id, DataValue.qualifier_id != None).distinct().subquery()
185+
return self._edit_session.query(Qualifier).join(subquery).distinct().all()
218186

219187
#Data Value Methods
220188
def get_values_by_series(self, series_id):
@@ -430,7 +398,6 @@ def save_values(self, values):
430398

431399
def create_new_series(self, data_values, site_id, variable_id, method_id, source_id, qcl_id):
432400
"""
433-
434401
:param data_values:
435402
:param site_id:
436403
:param variable_id:
@@ -451,9 +418,8 @@ def create_new_series(self, data_values, site_id, variable_id, method_id, source
451418
self._edit_session.commit()
452419
return series
453420

454-
def create_method(self, description, link):
421+
def create_method(self, description, link): # DONE
455422
"""
456-
457423
:param description:
458424
:param link:
459425
:return:
@@ -467,25 +433,19 @@ def create_method(self, description, link):
467433

468434
return meth
469435

470-
def create_variable_by_var(self, var):
436+
def create_variable_by_var(self, var): # DONE
471437
"""
472-
473438
:param var: Variable Object
474439
:return:
475440
"""
476-
# try:
477-
# self._edit_session.add(var)
478-
# self._edit_session.commit()
479-
# return var
480-
# except:
481-
# return None
441+
482442
self.create_service.createVariable(var)
483443
return var
484444

485445
def create_variable(
486446
self, code, name, speciation, variable_unit_id, sample_medium,
487447
value_type, is_regular, time_support, time_unit_id, data_type,
488-
general_category, no_data_value):
448+
general_category, no_data_value): # DONE
489449
"""
490450
491451
:param code:
@@ -519,7 +479,7 @@ def create_variable(
519479
self.create_variable_by_var(var)
520480
return var
521481

522-
def create_qcl(self, code, definition, explanation):
482+
def create_qcl(self, code, definition, explanation): # DONE
523483
"""
524484
525485
:param code:
@@ -532,8 +492,7 @@ def create_qcl(self, code, definition, explanation):
532492
qcl.definition = definition
533493
qcl.explanation = explanation
534494

535-
self._edit_session.add(qcl)
536-
self._edit_session.commit()
495+
self.create_service.createProcessingLevel(qcl)
537496
return qcl
538497

539498

0 commit comments

Comments
 (0)