# -*- coding: utf-8 -*-
from cards.models import (QRF, RFScore, Remap, YearFilter, Collate, PreProc,
MergeCSV, RFTrain, RandomForest, CalcStats)
from gsi.models import ListTestFiles
[docs]def qrf_update_create(form, item_id=None):
"""**Updated card QRF.**
:Arguments:
* *form*: Object of the form
* *item_id*: ID of the card. Set when editing (the default=None when you create a card)
"""
cur_card = None
qrf_card = None
if QRF.objects.filter(name=form.cleaned_data["name"]).exists():
cur_card = QRF.objects.get(name=form.cleaned_data["name"])
if item_id:
if cur_card == None or cur_card.id == int(item_id):
QRF.objects.filter(id=item_id).update(
name=form.cleaned_data["name"],
interval=form.cleaned_data["interval"],
number_of_trees=form.cleaned_data["number_of_trees"],
number_of_threads=form.cleaned_data["number_of_threads"],
directory=form.cleaned_data["directory"],
)
qrf_card = QRF.objects.get(id=item_id)
else:
if cur_card == None:
qrf_card = QRF.objects.create(
name=form.cleaned_data["name"],
interval=form.cleaned_data["interval"],
number_of_trees=form.cleaned_data["number_of_trees"],
number_of_threads=form.cleaned_data["number_of_threads"],
directory=form.cleaned_data["directory"],
)
return qrf_card
[docs]def rfscore_update_create(form, item_id=None):
"""**Updated card RFScore.**
:Arguments:
* *form*: Object of the form
* *item_id*: ID of the card. Set when editing (the default=None when you create a card)
"""
cur_card = None
rfscore_card = None
if RFScore.objects.filter(name=form.cleaned_data["name"]).exists():
cur_card = RFScore.objects.get(name=form.cleaned_data["name"])
if item_id:
if cur_card == None or cur_card.id == int(item_id):
RFScore.objects.filter(id=item_id).update(
name=form.cleaned_data["name"],
area=form.cleaned_data["area"],
year_group=form.cleaned_data["year_group"],
bias_corrn=form.cleaned_data["bias_corrn"],
number_of_threads=form.cleaned_data["number_of_threads"],
QRFopts=form.cleaned_data["QRFopts"],
ref_target=form.cleaned_data["ref_target"],
clean_name=form.cleaned_data["clean_name"],
run_parallel=form.cleaned_data["run_parallel"],
)
rfscore_card = RFScore.objects.get(id=item_id)
else:
if cur_card == None:
rfscore_card = RFScore.objects.create(
name=form.cleaned_data["name"],
area=form.cleaned_data["area"],
year_group=form.cleaned_data["year_group"],
bias_corrn=form.cleaned_data["bias_corrn"],
number_of_threads=form.cleaned_data["number_of_threads"],
QRFopts=form.cleaned_data["QRFopts"],
ref_target=form.cleaned_data["ref_target"],
clean_name=form.cleaned_data["clean_name"],
run_parallel=form.cleaned_data["run_parallel"],
)
return rfscore_card
[docs]def remap_update_create(form, item_id=None):
"""**Updated card Remap.**
:Arguments:
* *form*: Object of the form
* *item_id*: ID of the card. Set when editing (the default=None when you create a card)
"""
cur_card = None
remap_card = None
if Remap.objects.filter(name=form.cleaned_data["name"]).exists():
cur_card = Remap.objects.get(name=form.cleaned_data["name"])
if item_id:
if cur_card == None or cur_card.id == int(item_id):
Remap.objects.filter(id=item_id).update(
name=form.cleaned_data["name"],
run_parallel=form.cleaned_data["run_parallel"],
file_spec=form.cleaned_data["file_spec"],
roi=form.cleaned_data["roi"],
year_group=form.cleaned_data["year_group"],
model_name=form.cleaned_data["model_name"],
output_root=form.cleaned_data["output_root"],
output_suffix=form.cleaned_data["output_suffix"],
scale=form.cleaned_data["scale"],
output=form.cleaned_data["output"],
color_table=form.cleaned_data["color_table"],
refstats_file=form.cleaned_data["refstats_file"],
refstats_scale=form.cleaned_data["refstats_scale"],
conditional_mean=form.cleaned_data["conditional_mean"],
conditional_min=form.cleaned_data["conditional_min"],
conditional_median=form.cleaned_data["conditional_median"],
conditional_max=form.cleaned_data["conditional_max"],
lower_quartile=form.cleaned_data["lower_quartile"],
upper_quartile=form.cleaned_data["upper_quartile"],
)
remap_card = Remap.objects.get(id=item_id)
else:
if cur_card == None:
remap_card = Remap.objects.create(
name=form.cleaned_data["name"],
run_parallel=form.cleaned_data["run_parallel"],
file_spec=form.cleaned_data["file_spec"],
roi=form.cleaned_data["roi"],
year_group=form.cleaned_data["year_group"],
model_name=form.cleaned_data["model_name"],
output_root=form.cleaned_data["output_root"],
output_suffix=form.cleaned_data["output_suffix"],
scale=form.cleaned_data["scale"],
output=form.cleaned_data["output"],
color_table=form.cleaned_data["color_table"],
refstats_file=form.cleaned_data["refstats_file"],
refstats_scale=form.cleaned_data["refstats_scale"],
conditional_mean=form.cleaned_data["conditional_mean"],
conditional_min=form.cleaned_data["conditional_min"],
conditional_median=form.cleaned_data["conditional_median"],
conditional_max=form.cleaned_data["conditional_max"],
lower_quartile=form.cleaned_data["lower_quartile"],
upper_quartile=form.cleaned_data["upper_quartile"],
)
return remap_card
[docs]def year_filter_update_create(form, item_id=None):
"""**Updated card YearFilter.**
:Arguments:
* *form*: Object of the form
* *item_id*: ID of the card. Set when editing (the default=None when you create a card)
"""
cur_card = None
year_filter_card = None
if YearFilter.objects.filter(name=form.cleaned_data["name"]).exists():
cur_card = YearFilter.objects.get(name=form.cleaned_data["name"])
if item_id:
if cur_card == None or cur_card.id == int(item_id):
YearFilter.objects.filter(id=item_id).update(
name=form.cleaned_data["name"],
area=form.cleaned_data["area"],
filetype=form.cleaned_data["filetype"],
filter=form.cleaned_data["filter"],
filter_output=form.cleaned_data["filter_output"],
extend_start=form.cleaned_data["extend_start"],
input_fourier=form.cleaned_data["input_fourier"],
output_directory=form.cleaned_data["output_directory"],
input_directory=form.cleaned_data["input_directory"],
run_parallel=form.cleaned_data["run_parallel"],
)
year_filter_card = YearFilter.objects.get(id=item_id)
else:
if cur_card == None:
year_filter_card = YearFilter.objects.create(
name=form.cleaned_data["name"],
area=form.cleaned_data["area"],
filetype=form.cleaned_data["filetype"],
filter=form.cleaned_data["filter"],
filter_output=form.cleaned_data["filter_output"],
extend_start=form.cleaned_data["extend_start"],
input_fourier=form.cleaned_data["input_fourier"],
output_directory=form.cleaned_data["output_directory"],
input_directory=form.cleaned_data["input_directory"],
run_parallel=form.cleaned_data["run_parallel"],
)
return year_filter_card
[docs]def collate_update_create(form, item_id=None, multiple=None, delete=False):
"""**Updated card Collate.**
:Arguments:
* *form*: Object of the form
* *item_id*: ID of the card. Set when editing (the default=None when you create a card)
"""
cur_card = None
collate_card = None
if Collate.objects.filter(name=form.cleaned_data["name"]).exists():
cur_card = Collate.objects.get(name=form.cleaned_data["name"])
if cur_card.input_data_directory != form.cleaned_data["input_data_directory"]:
Collate.input_files.through.objects.filter(
collate_id = cur_card.id).delete()
if item_id:
if cur_card == None or cur_card.id == int(item_id):
Collate.objects.filter(id=item_id).update(
name=form.cleaned_data["name"],
area=form.cleaned_data["area"],
mode=form.cleaned_data["mode"],
# input_files=form.cleaned_data["input_files"],
output_tile_subdir=form.cleaned_data["output_tile_subdir"],
input_scale_factor=form.cleaned_data["input_scale_factor"],
run_parallel=form.cleaned_data["run_parallel"],
input_data_directory=form.cleaned_data["input_data_directory"],
)
collate_card = Collate.objects.get(id=item_id)
else:
if cur_card == None:
collate_card = Collate.objects.create(
name=form.cleaned_data["name"],
area=form.cleaned_data["area"],
mode=form.cleaned_data["mode"],
# input_files=form.cleaned_data["input_files"],
output_tile_subdir=form.cleaned_data["output_tile_subdir"],
input_scale_factor=form.cleaned_data["input_scale_factor"],
run_parallel=form.cleaned_data["run_parallel"],
input_data_directory=form.cleaned_data["input_data_directory"],
)
if multiple:
list_id = multiple.split('_')
for file_id in list_id:
if delete:
Collate.input_files.through.objects.filter(
listtestfiles_id=file_id,
collate_id = collate_card.id
).delete()
else:
Collate.input_files.through.objects.create(
listtestfiles_id=file_id,
collate_id =collate_card.id
)
return collate_card
[docs]def preproc_update_create(form, item_id=None):
"""**Updated card PreProc.**
:Arguments:
* *form*: Object of the form
* *item_id*: ID of the card. Set when editing (the default=None when you create a card)
"""
cur_card = None
preproc_card = None
if PreProc.objects.filter(name=form.cleaned_data["name"]).exists():
cur_card = PreProc.objects.get(name=form.cleaned_data["name"])
if item_id:
if cur_card == None or cur_card.id == int(item_id):
PreProc.objects.filter(id=item_id).update(
name=form.cleaned_data["name"],
area=form.cleaned_data["area"],
mode=form.cleaned_data["mode"],
year_group=form.cleaned_data["year_group"],
run_parallel=form.cleaned_data["run_parallel"],
path_spec_location=form.cleaned_data["path_spec_location"],
)
preproc_card = PreProc.objects.get(id=item_id)
else:
if cur_card == None:
preproc_card = PreProc.objects.create(
name=form.cleaned_data["name"],
area=form.cleaned_data["area"],
mode=form.cleaned_data["mode"],
year_group=form.cleaned_data["year_group"],
run_parallel=form.cleaned_data["run_parallel"],
path_spec_location=form.cleaned_data["path_spec_location"],
)
return preproc_card
[docs]def mergecsv_update_create(form, item_id=None):
"""**Updated card MergeCSV.**
:Arguments:
* *form*: Object of the form
* *item_id*: ID of the card. Set when editing (the default=None when you create a card)
"""
cur_card = None
mergecsv_card = None
if MergeCSV.objects.filter(name=form.cleaned_data["name"]).exists():
cur_card = MergeCSV.objects.get(name=form.cleaned_data["name"])
if item_id:
if cur_card == None or cur_card.id == int(item_id):
MergeCSV.objects.filter(id=item_id).update(
name=form.cleaned_data["name"],
csv1=form.cleaned_data["csv1"],
csv2=form.cleaned_data["csv2"],
)
mergecsv_card = MergeCSV.objects.get(id=item_id)
else:
if cur_card == None:
mergecsv_card = MergeCSV.objects.create(
name=form.cleaned_data["name"],
csv1=form.cleaned_data["csv1"],
csv2=form.cleaned_data["csv2"],
)
return mergecsv_card
[docs]def rftrain_update_create(form, item_id=None):
"""**Updated card RFTrain.**
:Arguments:
* *form*: Object of the form
* *item_id*: ID of the card. Set when editing (the default=None when you create a card)
"""
cur_card = None
rftrain_card = None
if RFTrain.objects.filter(name=form.cleaned_data["name"]).exists():
cur_card = RFTrain.objects.get(name=form.cleaned_data["name"])
if item_id:
if cur_card == None or cur_card.id == int(item_id):
RFTrain.objects.filter(id=item_id).update(
name=form.cleaned_data["name"],
tile_type=form.cleaned_data["tile_type"],
number_of_trees=form.cleaned_data["number_of_trees"],
number_of_thread=form.cleaned_data["number_of_thread"],
number_of_variable=form.cleaned_data["number_of_variable"],
training=form.cleaned_data["training"],
value=form.cleaned_data["value"],
config_file=form.cleaned_data["config_file"],
output_tile_subdir=form.cleaned_data["output_tile_subdir"],
input_scale_factor=form.cleaned_data["input_scale_factor"],
run_parallel=form.cleaned_data["run_parallel"],
)
rftrain_card = RFTrain.objects.get(id=item_id)
else:
if cur_card == None:
rftrain_card = RFTrain.objects.create(
name=form.cleaned_data["name"],
tile_type=form.cleaned_data["tile_type"],
number_of_trees=form.cleaned_data["number_of_trees"],
number_of_thread=form.cleaned_data["number_of_thread"],
number_of_variable=form.cleaned_data["number_of_variable"],
training=form.cleaned_data["training"],
value=form.cleaned_data["value"],
config_file=form.cleaned_data["config_file"],
output_tile_subdir=form.cleaned_data["output_tile_subdir"],
input_scale_factor=form.cleaned_data["input_scale_factor"],
run_parallel=form.cleaned_data["run_parallel"],
)
return rftrain_card
[docs]def randomforest_update_create(form, item_id=None):
"""**Updated card RandomForest.**
:Arguments:
* *form*: Object of the form
* *item_id*: ID of the card. Set when editing (the default=None when you create a card)
"""
cur_card = None
randomforest_card = None
if RandomForest.objects.filter(name=form.cleaned_data["name"]).exists():
cur_card = RandomForest.objects.get(name=form.cleaned_data["name"])
if item_id:
if cur_card == None or cur_card.id == int(item_id):
RandomForest.objects.filter(id=item_id).update(
name=form.cleaned_data["name"],
aoi_name=form.cleaned_data["aoi_name"],
satellite=form.cleaned_data["satellite"],
param_set=form.cleaned_data["param_set"],
run_set=form.cleaned_data["run_set"],
model=form.cleaned_data["model"],
mvrf=form.cleaned_data["mvrf"],
)
randomforest_card = RandomForest.objects.get(id=item_id)
else:
if cur_card == None:
randomforest_card = RandomForest.objects.create(
name=form.cleaned_data["name"],
aoi_name=form.cleaned_data["aoi_name"],
satellite=form.cleaned_data["satellite"],
param_set=form.cleaned_data["param_set"],
run_set=form.cleaned_data["run_set"],
model=form.cleaned_data["model"],
mvrf=form.cleaned_data["mvrf"],
)
return randomforest_card
[docs]def calcstats_update_create(form, item_id=None):
"""**Updated card CalcStats.**
:Arguments:
* *form*: Object of the form
* *item_id*: ID of the card. Set when editing (the default=None when you create a card)
"""
cur_card = None
calcstats_card = None
filter_out = form.cleaned_data["filter_out"]
doy_variable = form.cleaned_data["doy_variable"]
if CalcStats.objects.filter(name=form.cleaned_data["name"]).exists():
cur_card = CalcStats.objects.get(name=form.cleaned_data["name"])
if form.cleaned_data["period"] != 'doy':
doy_variable = ''
if form.cleaned_data["filter_out"] == 'select':
filter_out = ''
if item_id:
if cur_card == None or cur_card.id == int(item_id):
CalcStats.objects.filter(id=item_id).update(
name=form.cleaned_data["name"],
output_tile_subdir=form.cleaned_data["output_tile_subdir"],
year_group=form.cleaned_data["year_group"],
area=form.cleaned_data["area"],
period=form.cleaned_data["period"],
doy_variable=doy_variable,
filter=form.cleaned_data["filter"],
filter_out=filter_out,
input_fourier=form.cleaned_data["input_fourier"],
out_dir=form.cleaned_data["out_dir"],
run_parallel=form.cleaned_data["run_parallel"],
path_spec_location=form.cleaned_data["path_spec_location"],
)
calcstats_card = CalcStats.objects.get(id=item_id)
else:
if cur_card == None:
calcstats_card = CalcStats.objects.create(
name=form.cleaned_data["name"],
output_tile_subdir=form.cleaned_data["output_tile_subdir"],
year_group=form.cleaned_data["year_group"],
area=form.cleaned_data["area"],
period=form.cleaned_data["period"],
doy_variable=doy_variable,
filter=form.cleaned_data["filter"],
filter_out=filter_out,
input_fourier=form.cleaned_data["input_fourier"],
out_dir=form.cleaned_data["out_dir"],
run_parallel=form.cleaned_data["run_parallel"],
path_spec_location=form.cleaned_data["path_spec_location"],
)
return calcstats_card