Exemple #1
0
    def post(self, project_db):
        SetupProjectDatabase.init(project_db)
        args = get_hyd_args()

        try:
            e = Hydrology_hyd.get(Hydrology_hyd.name == args['name'])
            abort(
                400,
                message=
                'Hydrology name must be unique. A hydrology with this name already exists.'
            )
        except Hydrology_hyd.DoesNotExist:
            try:
                m = Hydrology_hyd()
                result = save_hyd(m, args)

                if result > 0:
                    return model_to_dict(m), 201

                abort(400,
                      message='Unable to update hydrology properties {id}.'.
                      format(id=id))
            except IntegrityError as e:
                abort(400, message='Hydrology properties name must be unique.')
            except Exception as ex:
                abort(400, message="Unexpected error {ex}".format(ex=ex))
    def post(self, project_db):
        try:
            SetupProjectDatabase.init(project_db)
            lookup_args = [{
                'name': 'grow_start',
                'type': str
            }, {
                'name': 'grow_end',
                'type': str
            }]
            args = self.get_args('hru_lte_hru',
                                 project_db,
                                 extra_args=lookup_args)

            args['grow_start_id'] = self.get_id_from_name(
                D_table_dtl, args['grow_start'])
            args['grow_end_id'] = self.get_id_from_name(
                D_table_dtl, args['grow_end'])

            args.pop('grow_start', None)
            args.pop('grow_end', None)

            result = self.save_args(Hru_lte_hru,
                                    args,
                                    is_new=True,
                                    lookup_fields=['soil_text', 'plnt_typ'])

            if result > 0:
                return {'id': result}, 201

            abort(400, message='Unable to update HRU {id}.'.format(id=id))
        except IntegrityError as e:
            abort(400, message='Name must be unique. ' + str(e))
        except Exception as ex:
            abort(400, message="Unexpected error {ex}".format(ex=ex))
Exemple #3
0
	def put(self, project_db):
		SetupProjectDatabase.init(project_db)
		args = get_cha_lte_args(True)
		
		try:
			param_dict = {}

			if args['init_name'] is not None:
				param_dict['init_id'] = self.get_id_from_name(Initial_cha, args['init_name'])
			if args['hyd_name'] is not None:
				param_dict['hyd_id'] = self.get_id_from_name(Hyd_sed_lte_cha, args['hyd_name'])
			if args['nut_name'] is not None:
				param_dict['nut_id'] = self.get_id_from_name(Nutrients_cha, args['nut_name'])

			query = Channel_lte_cha.update(param_dict).where(Channel_lte_cha.id.in_(args['selected_ids']))
			result = query.execute()

			if result > 0:
				return 200

			abort(400, message='Unable to update channel properties.')
		except Initial_cha.DoesNotExist:
			abort(400, message=self.__invalid_name_msg.format(name=args['init_name']))
		except Hyd_sed_lte_cha.DoesNotExist:
			abort(400, message=self.__invalid_name_msg.format(name=args['hyd_name']))
		except Nutrients_cha.DoesNotExist:
			abort(400, message=self.__invalid_name_msg.format(name=args['nut_name']))
		except Exception as ex:
			abort(400, message="Unexpected error {ex}".format(ex=ex))
Exemple #4
0
    def put(self, project_db, id):
        try:
            args = get_con_out_args()
            SetupProjectDatabase.init(project_db)

            m = Delratio_con_out.get(Delratio_con_out.id == id)
            m.order = args['order']
            m.obj_typ = args['obj_typ']
            m.obj_id = args['obj_id']
            m.hyd_typ = args['hyd_typ']
            m.frac = args['frac']

            result = m.save()

            if result > 0:
                return 200

            abort(400,
                  message='Unable to update delratio outflow {id}.'.format(
                      id=id))
        except Delratio_con_out.DoesNotExist:
            abort(404,
                  message='Delratio outflow {id} does not exist'.format(id=id))
        except Exception as ex:
            abort(400, message="Unexpected error {ex}".format(ex=ex))
Exemple #5
0
    def put(self, project_db, id):
        args = get_con_args()
        try:
            SetupProjectDatabase.init(project_db)
            m = Delratio_con.get(Delratio_con.id == id)
            m.name = args['name']
            m.area = args['area']
            m.lat = args['lat']
            m.lon = args['lon']
            m.elev = args['elev']

            if args['dlr_name'] is not None:
                m.dlr_id = self.get_id_from_name(Delratio_del,
                                                 args['dlr_name'])

            if args['wst_name'] is not None:
                m.wst_id = self.get_id_from_name(Weather_sta_cli,
                                                 args['wst_name'])

            result = m.save()

            if result > 0:
                return 200

            abort(400, message='Unable to update Delratio {id}.'.format(id=id))
        except IntegrityError:
            abort(400, message='Delratio name must be unique.')
        except Delratio_con.DoesNotExist:
            abort(404, message='Delratio {id} does not exist'.format(id=id))
        except Delratio_del.DoesNotExist:
            abort(400, message=invalid_name_msg.format(name=args['dr_name']))
        except Weather_sta_cli.DoesNotExist:
            abort(400, message=invalid_name_msg.format(name=args['wst_name']))
        except Exception as ex:
            abort(400, message="Unexpected error {ex}".format(ex=ex))
Exemple #6
0
    def post(self, project_db):
        args = get_wet_args()
        try:
            SetupProjectDatabase.init(project_db)

            m = Wetland_wet()
            m.name = args['name']
            m.description = args['description']
            m.init_id = self.get_id_from_name(Initial_res, args['init_name'])
            m.rel_id = self.get_id_from_name(D_table_dtl, args['rel_name'])
            m.hyd_id = self.get_id_from_name(Hydrology_wet, args['hyd_name'])
            m.sed_id = self.get_id_from_name(Sediment_res, args['sed_name'])
            m.nut_id = self.get_id_from_name(Nutrients_res, args['nut_name'])

            result = m.save()

            if result > 0:
                return 200

            abort(400, message='Unable to update wetland  {id}.'.format(id=id))
        except IntegrityError as e:
            abort(400, message='Wetland name must be unique.')
        except Initial_res.DoesNotExist:
            abort(400, message=invalid_name_msg.format(name=args['init_name']))
        except D_table_dtl.DoesNotExist:
            abort(400, message=invalid_name_msg.format(name=args['rel_name']))
        except Hydrology_wet.DoesNotExist:
            abort(400, message=invalid_name_msg.format(name=args['hyd_name']))
        except Sediment_res.DoesNotExist:
            abort(400, message=invalid_name_msg.format(name=args['sed_name']))
        except Nutrients_res.DoesNotExist:
            abort(400, message=invalid_name_msg.format(name=args['nut_name']))
        except Exception as ex:
            abort(400, message="Unexpected error {ex}".format(ex=ex))
Exemple #7
0
    def post(self, project_db):
        args = get_routingunit_args()
        try:
            SetupProjectDatabase.init(project_db)

            m = Rout_unit_rtu()
            m.name = args['name']
            m.description = args['description']
            if args['dlr_name']:
                m.dlr_id = self.get_id_from_name(Delratio_del,
                                                 args['dlr_name'])

            m.topo_id = self.get_id_from_name(Topography_hyd,
                                              args['topo_name'])
            m.field_id = self.get_id_from_name(Field_fld, args['field_name'])

            result = m.save()

            if result > 0:
                return 200

            abort(400,
                  message='Unable to update routing unit properties {id}.'.
                  format(id=id))
        except IntegrityError as e:
            abort(400, message='Routing unit properties name must be unique.')
        except Delratio_del.DoesNotExist:
            abort(400, message=invalid_name_msg.format(name=args['dlr_name']))
        except Topography_hyd.DoesNotExist:
            abort(400, message=invalid_name_msg.format(name=args['topo_name']))
        except Field_fld.DoesNotExist:
            abort(400,
                  message=invalid_name_msg.format(name=args['field_name']))
        except Exception as ex:
            abort(400, message="Unexpected error {ex}".format(ex=ex))
Exemple #8
0
    def put(self):
        parser = reqparse.RequestParser()
        parser.add_argument('project_name',
                            type=str,
                            required=True,
                            location='json')
        parser.add_argument('project_db',
                            type=str,
                            required=True,
                            location='json')
        parser.add_argument('reference_db',
                            type=str,
                            required=True,
                            location='json')
        args = parser.parse_args(strict=False)

        project_db = utils.sanitize(args['project_db'])
        reference_db = utils.sanitize(args['reference_db'])

        SetupProjectDatabase.init(project_db)
        try:
            m = Project_config.get()

            m.reference_db = utils.rel_path(project_db, args['reference_db'])
            m.project_name = args['project_name']
            result = m.save()

            if result > 0:
                return 200

            abort(400, message="Unable to update project configuration table.")
        except Project_config.DoesNotExist:
            abort(404,
                  message="Could not retrieve project configuration data.")
Exemple #9
0
    def base_paged_list(self,
                        project_db,
                        sort,
                        reverse,
                        page,
                        items_per_page,
                        table,
                        list_name,
                        back_refs=False):
        SetupProjectDatabase.init(project_db)
        total = table.select().count()

        sort_val = SQL('[{}]'.format(sort))
        if reverse == 'true':
            sort_val = SQL('[{}]'.format(sort)).desc()

        m = table.select().order_by(sort_val).paginate(int(page),
                                                       int(items_per_page))

        if back_refs:
            ml = [model_to_dict(v, backrefs=True, max_depth=1) for v in m]
            for d in ml:
                self.get_obj_name(d)
        else:
            ml = [model_to_dict(v, recurse=False) for v in m]

        return {'total': total, list_name: ml}
Exemple #10
0
    def put(self, project_db):
        parser = reqparse.RequestParser()
        parser.add_argument('input_files_dir',
                            type=str,
                            required=False,
                            location='json')
        parser.add_argument('input_files_last_written',
                            type=str,
                            required=False,
                            location='json')
        args = parser.parse_args(strict=False)

        SetupProjectDatabase.init(project_db)
        try:
            m = Project_config.get()

            m.input_files_dir = utils.rel_path(project_db,
                                               args['input_files_dir'])
            m.input_files_last_written = args['input_files_last_written']
            result = m.save()

            if result > 0:
                return 200

            abort(400, message="Unable to update project configuration table.")
        except Project_config.DoesNotExist:
            abort(404,
                  message="Could not retrieve project configuration data.")
Exemple #11
0
    def get(self, project_db):
        SetupProjectDatabase.init(project_db)
        try:
            c = Project_config.get()
            config = get_model_to_dict_dates(c, project_db)

            t = Time_sim.get_or_create_default()
            time = model_to_dict(t)

            m = Print_prt.get()
            prt = model_to_dict(m, recurse=False)

            o = Print_prt_object.select()
            objects = [model_to_dict(v, recurse=False) for v in o]

            prt = {'prt': prt, 'objects': objects}

            return {
                'config':
                config,
                'time':
                time,
                'print':
                prt,
                'imported_weather':
                climate.Weather_sta_cli.select().count() > 0
                and climate.Weather_wgn_cli.select().count() > 0,
                'has_observed_weather':
                climate.Weather_sta_cli.observed_count() > 0
            }
        except Project_config.DoesNotExist:
            abort(404,
                  message="Could not retrieve project configuration data.")
        except Print_prt.DoesNotExist:
            abort(404, message="Could not retrieve print_prt data.")
Exemple #12
0
    def get(self, project_db):
        check_config(project_db)

        SetupProjectDatabase.init(project_db)
        try:
            m = Project_config.get()
            d = get_model_to_dict_dates(m, project_db)

            if m.gis_version is not None and not import_gis.is_supported_version(
                    m.gis_version
            ) and not import_gis_legacy.is_supported_version(m.gis_version):
                abort(
                    400,
                    message=
                    "This version of SWAT+ Editor does not support QSWAT+ {uv}."
                    .format(uv=m.gis_version))

            #d["has_ps"] = gis.Gis_points.select().where((gis.Gis_points.ptype == 'P') | (gis.Gis_points.ptype == 'I')).count() > 0
            #d["has_res"] = gis.Gis_water.select().count() > 0

            description = None
            conn = lib.open_db(project_db)
            if lib.exists_table(conn, 'object_cnt'):
                oc = Object_cnt.get_or_none()
                if oc is not None:
                    description = oc.name
            d["project_description"] = description

            return d
        except Project_config.DoesNotExist:
            abort(404,
                  message="Could not retrieve project configuration data.")
Exemple #13
0
    def put(self, project_db):
        parser = reqparse.RequestParser()
        parser.add_argument('name', type=str, required=True, location='json')
        parser.add_argument('description',
                            type=str,
                            required=True,
                            location='json')
        args = parser.parse_args(strict=False)

        SetupProjectDatabase.init(project_db)
        try:
            m = Project_config.get()
            m.project_name = args['name']
            result = m.save()

            oc = Object_cnt.get()
            oc.name = args['description']
            result = oc.save()

            if result > 0:
                return 200

            abort(400, message="Unable to update project configuration table.")
        except Project_config.DoesNotExist:
            abort(404,
                  message="Could not retrieve project configuration data.")
        except Object_cnt.DoesNotExist:
            abort(404,
                  message="Could not retrieve project configuration data.")
Exemple #14
0
    def put(self, project_db, id):
        try:
            SetupProjectDatabase.init(project_db)
            args = get_fld_args()
            m = Field_fld.get(Field_fld.id == id)
            m.name = args['name']
            m.len = args['len']
            m.wd = args['wd']
            m.ang = args['ang']

            result = m.save()

            if result > 0:
                return 200

            abort(400,
                  message='Unable to update field properties {id}.'.format(
                      id=id))
        except IntegrityError as e:
            abort(400, message='Field properties name must be unique.')
        except Field_fld.DoesNotExist:
            abort(404,
                  message='Field properties {id} does not exist'.format(id=id))
        except Exception as ex:
            abort(400, message="Unexpected error {ex}".format(ex=ex))
Exemple #15
0
	def put(self, project_db):
		SetupProjectDatabase.init(project_db)
		args = get_cha_lte_args(True)
		
		try:
			param_dict = {}

			if args['init_name'] is not None:
				param_dict['init_id'] = self.get_id_from_name(Initial_cha, args['init_name'])
			if args['hyd_name'] is not None:
				param_dict['hyd_id'] = self.get_id_from_name(Hyd_sed_lte_cha, args['hyd_name'])
			if args['nut_name'] is not None:
				param_dict['nut_id'] = self.get_id_from_name(Nutrients_cha, args['nut_name'])

			con_table = Chandeg_con
			con_prop_field = Chandeg_con.lcha_id
			prop_table = Channel_lte_cha

			result = self.base_put_many_con(args, param_dict, con_table, con_prop_field, prop_table)
			if result > 0:
				return 200

			abort(400, message='Unable to update channel properties.')
		except Initial_cha.DoesNotExist:
			abort(400, message=self.__invalid_name_msg.format(name=args['init_name']))
		except Hyd_sed_lte_cha.DoesNotExist:
			abort(400, message=self.__invalid_name_msg.format(name=args['hyd_name']))
		except Nutrients_cha.DoesNotExist:
			abort(400, message=self.__invalid_name_msg.format(name=args['nut_name']))
		except Weather_sta_cli.DoesNotExist:
			abort(400, message=self.__invalid_name_msg.format(name=args['wst_name']))
		except Exception as ex:
			abort(400, message="Unexpected error {ex}".format(ex=ex))
Exemple #16
0
	def __init__(self, db_file, datasets_db_file, project_name, editor_version):
		self.__abort = False
		self.project_db = db_file
		self.reference_db = datasets_db_file
		self.project_name = project_name
		self.editor_version = editor_version
		SetupProjectDatabase.init(db_file, datasets_db_file)
Exemple #17
0
	def put(self, project_db, id):
		args = get_exco_args()
		try:
			SetupProjectDatabase.init(project_db)

			m = Exco_exc.get(Exco_exc.id == id)
			m.name = args['name']
			m.om_id = self.get_id_from_name(Exco_om_exc, args['om_name'])
			m.pest_id = self.get_id_from_name(Exco_pest_exc, args['pest_name'])
			m.path_id = self.get_id_from_name(Exco_path_exc, args['path_name'])
			m.hmet_id = self.get_id_from_name(Exco_hmet_exc, args['hmet_name'])
			m.salt_id = self.get_id_from_name(Exco_salt_exc, args['salt_name'])

			result = m.save()

			if result > 0:
				return 200

			abort(400, message='Unable to update exco properties {id}.'.format(id=id))
		except IntegrityError as e:
			abort(400, message='Exco properties name must be unique.')
		except Exco_exc.DoesNotExist:
			abort(404, message='Exco properties {id} does not exist'.format(id=id))
		except Exco_om_exc.DoesNotExist:
			abort(400, message=invalid_name_msg.format(name=args['om_name']))
		except Exco_pest_exc.DoesNotExist:
			abort(400, message=invalid_name_msg.format(name=args['pest_name']))
		except Exco_path_exc.DoesNotExist:
			abort(400, message=invalid_name_msg.format(name=args['path_name']))
		except Exco_hmet_exc.DoesNotExist:
			abort(400, message=invalid_name_msg.format(name=args['hmet_name']))
		except Exco_salt_exc.DoesNotExist:
			abort(400, message=invalid_name_msg.format(name=args['salt_name']))
		except Exception as ex:
			abort(400, message="Unexpected error {ex}".format(ex=ex))
Exemple #18
0
    def put(self, project_db):
        parser = reqparse.RequestParser()
        parser.add_argument('id', type=int, required=False, location='json')
        parser.add_argument('day_start',
                            type=int,
                            required=True,
                            location='json')
        parser.add_argument('yrc_start',
                            type=int,
                            required=True,
                            location='json')
        parser.add_argument('day_end',
                            type=int,
                            required=True,
                            location='json')
        parser.add_argument('yrc_end',
                            type=int,
                            required=True,
                            location='json')
        parser.add_argument('step', type=int, required=False, location='json')
        args = parser.parse_args(strict=True)

        SetupProjectDatabase.init(project_db)
        result = Time_sim.update_and_exec(args['day_start'], args['yrc_start'],
                                          args['day_end'], args['yrc_end'],
                                          args['step'])

        if result == 1:
            return 200

        abort(400, message='Unable to update time_sim table.')
Exemple #19
0
    def put(self, project_db):
        SetupProjectDatabase.init(project_db)
        args = get_routingunit_args(True)

        try:
            param_dict = {}

            if args['dlr_name'] is not None:
                param_dict['dlr_id'] = self.get_id_from_name(
                    Delratio_del, args['dlr_name'])
            if args['topo_name'] is not None:
                param_dict['topo_id'] = self.get_id_from_name(
                    Topography_hyd, args['topo_name'])
            if args['field_name'] is not None:
                param_dict['field_id'] = self.get_id_from_name(
                    Field_fld, args['field_name'])

            query = Rout_unit_rtu.update(param_dict).where(
                Rout_unit_rtu.id.in_(args['selected_ids']))
            result = query.execute()

            if result > 0:
                return 200

            abort(400, message='Unable to update routing unit properties.')
        except Delratio_del.DoesNotExist:
            abort(400, message=invalid_name_msg.format(name=args['dlr_name']))
        except Topography_hyd.DoesNotExist:
            abort(400, message=invalid_name_msg.format(name=args['topo_name']))
        except Field_fld.DoesNotExist:
            abort(400,
                  message=invalid_name_msg.format(name=args['field_name']))
        except Exception as ex:
            abort(400, message="Unexpected error {ex}".format(ex=ex))
Exemple #20
0
    def put(self, project_db, id):
        parser = reqparse.RequestParser()
        parser.add_argument('id', type=int, required=False, location='json')
        parser.add_argument('print_prt',
                            type=int,
                            required=True,
                            location='json')
        parser.add_argument('name', type=str, required=True, location='json')
        parser.add_argument('daily', type=bool, required=True, location='json')
        parser.add_argument('monthly',
                            type=bool,
                            required=True,
                            location='json')
        parser.add_argument('yearly',
                            type=bool,
                            required=True,
                            location='json')
        parser.add_argument('avann', type=bool, required=True, location='json')
        args = parser.parse_args(strict=True)

        SetupProjectDatabase.init(project_db)
        q = Print_prt_object.update(
            daily=args['daily'],
            monthly=args['monthly'],
            yearly=args['yearly'],
            avann=args['avann']).where(Print_prt_object.id == id)
        result = q.execute()

        if result == 1:
            return 200

        abort(400,
              message='Unable to update print_print_object {}.'.format(
                  args['name']))
Exemple #21
0
    def put(self, project_db):
        try:
            SetupProjectDatabase.init(project_db)
            args = self.get_args('aquifer_aqu', project_db, True)

            lookup_fields = ['init']

            param_dict = {}
            for key in args.keys():
                if args[key] is not None and key != 'selected_ids':
                    if key in lookup_fields:
                        d = ast.literal_eval(args[key])
                        if int(d['id']) != 0:
                            param_dict[key] = int(d['id'])
                    else:
                        param_dict[key] = args[key]

            query = Aquifer_aqu.update(param_dict).where(
                Aquifer_aqu.id.in_(args['selected_ids']))
            result = query.execute()

            if result > 0:
                return 200

            abort(400, message='Unable to update aquifer properties.')
        except Exception as ex:
            abort(400, message="Unexpected error {ex}".format(ex=ex))
	def put(self, project_db, id):
		try:
			SetupProjectDatabase.init(project_db)
			args = get_topo_args()
			m = Topography_hyd.get(Topography_hyd.id == id)
			m.name = args['name']
			m.slp = args['slp']
			m.slp_len = args['slp_len']
			m.lat_len = args['lat_len']
			m.dist_cha = args['dist_cha']
			m.depos = args['depos']
			#m.type = args['type']

			result = m.save()

			if result > 0:
				return 200

			abort(400, message='Unable to update topography properties {id}.'.format(id=id))
		except IntegrityError as e:
			abort(400, message='Topography properties name must be unique.')
		except Topography_hyd.DoesNotExist:
			abort(404, message='Topography properties {id} does not exist'.format(id=id))
		except Exception as ex:
			abort(400, message="Unexpected error {ex}".format(ex=ex))
Exemple #23
0
    def post(self, project_db):
        args = get_dr_args()
        try:
            SetupProjectDatabase.init(project_db)

            m = Delratio_del()
            m.name = args['name']
            m.om_id = self.get_id_from_name(Dr_om_del, args['om_name'])
            m.pest_id = self.get_id_from_name(Dr_pest_del, args['pest_name'])
            m.path_id = self.get_id_from_name(Dr_path_del, args['path_name'])
            m.hmet_id = self.get_id_from_name(Dr_hmet_del, args['hmet_name'])
            m.salt_id = self.get_id_from_name(Dr_salt_del, args['salt_name'])

            result = m.save()

            if result > 0:
                return 200

            abort(400,
                  message='Unable to update delratio properties {id}.'.format(
                      id=id))
        except IntegrityError as e:
            abort(400, message='Delratio properties name must be unique.')
        except Dr_om_del.DoesNotExist:
            abort(400, message=invalid_name_msg.format(name=args['om_name']))
        except Dr_pest_del.DoesNotExist:
            abort(400, message=invalid_name_msg.format(name=args['pest_name']))
        except Dr_path_del.DoesNotExist:
            abort(400, message=invalid_name_msg.format(name=args['path_name']))
        except Dr_hmet_del.DoesNotExist:
            abort(400, message=invalid_name_msg.format(name=args['hmet_name']))
        except Dr_salt_del.DoesNotExist:
            abort(400, message=invalid_name_msg.format(name=args['salt_name']))
        except Exception as ex:
            abort(400, message="Unexpected error {ex}".format(ex=ex))
	def post(self, project_db):
		SetupProjectDatabase.init(project_db)
		args = get_topo_args()

		try:
			e = Topography_hyd.get(Topography_hyd.name == args['name'])
			abort(400, message='Topography name must be unique. A topography with this name already exists.')
		except Topography_hyd.DoesNotExist:
			try:
				m = Topography_hyd()
				m.name = args['name']
				m.slp = args['slp']
				m.slp_len = args['slp_len']
				m.lat_len = args['lat_len']
				m.dist_cha = args['dist_cha']
				m.depos = args['depos']
				m.type = ''

				result = m.save()

				if result > 0:
					return model_to_dict(m), 201

				abort(400, message='Unable to update topography properties {id}.'.format(id=id))
			except IntegrityError as e:
				abort(400, message='Topography properties name must be unique.')
			except Exception as ex:
				abort(400, message="Unexpected error {ex}".format(ex=ex))
Exemple #25
0
	def put(self, project_db, id):
		try:
			SetupProjectDatabase.init(project_db)

			lookup_args = [
				{'name': 'grow_start', 'type': str},
				{'name': 'grow_end', 'type': str}
			]
			args = self.get_args('hru_lte_hru', project_db, extra_args=lookup_args)

			args['grow_start_id'] = self.get_id_from_name(D_table_dtl, args['grow_start'])
			args['grow_end_id'] = self.get_id_from_name(D_table_dtl, args['grow_end'])

			args.pop('grow_start', None)
			args.pop('grow_end', None)

			result = self.save_args(Hru_lte_hru, args, id=id, lookup_fields=['soil_text', 'plnt_typ'])

			if result > 0:
				return 200

			abort(400, message='Unable to update hru {id}.'.format(id=id))
		except IntegrityError as e:
			abort(400, message='Graze operation name must be unique.')
		except Hru_lte_hru.DoesNotExist:
			abort(404, message='Hru-lte {id} does not exist'.format(id=id))
		except Exception as ex:
			abort(400, message='Unexpected error {ex}'.format(ex=ex))
	def post(self, project_db):
		SetupProjectDatabase.init(project_db)
		args = get_fld_args()

		try:
			e = Field_fld.get(Field_fld.name == args['name'])
			abort(400, message='Field name must be unique. A field with this name already exists.')
		except Field_fld.DoesNotExist:
			try:
				m = Field_fld()
				m.name = args['name']
				m.len = args['len']
				m.wd = args['wd']
				m.ang = args['ang']

				result = m.save()

				if result > 0:
					return model_to_dict(m), 201

				abort(400, message='Unable to update field properties {id}.'.format(id=id))
			except IntegrityError as e:
				abort(400, message='Field properties name must be unique.')
			except Exception as ex:
				abort(400, message="Unexpected error {ex}".format(ex=ex))
Exemple #27
0
	def get(self, project_db):
		SetupProjectDatabase.init(project_db)
		cha_type = 'lte'
		if Channel_con.select().count() > 0:
			cha_type = 'regular'

		return {'type': cha_type}
Exemple #28
0
	def get(self, project_db, id):
		table = Recall_dat
		SetupProjectDatabase.init(project_db)
		args = self.get_table_args()

		sort = self.get_arg(args, 'sort', 'name')
		reverse = self.get_arg(args, 'reverse', 'n')
		page = self.get_arg(args, 'page', 1)
		per_page = self.get_arg(args, 'per_page', 50)
		
		s = table.select().where(table.recall_rec_id == id)
		total = s.count()

		if sort == 'name':
			sort_val = table.name if reverse != 'y' else table.name.desc()
		else:
			sort_val = SQL('[{}]'.format(sort))
			if reverse == 'y':
				sort_val = SQL('[{}]'.format(sort)).desc()

		m = s.order_by(sort_val).paginate(int(page), int(per_page))

		return {
			'total': total,
			'matches': total,
			'items': [model_to_dict(v, recurse=False) for v in m]
		}
Exemple #29
0
	def post(self, project_db):
		args = get_cha_lte_args()
		try:
			SetupProjectDatabase.init(project_db)

			m = Channel_lte_cha()
			m.name = args['name']
			m.description = args['description']
			m.init_id = self.get_id_from_name(Initial_cha, args['init_name'])
			m.hyd_id = self.get_id_from_name(Hyd_sed_lte_cha, args['hyd_name'])
			m.nut_id = self.get_id_from_name(Nutrients_cha, args['nut_name'])

			result = m.save()

			if result > 0:
				return 200

			abort(400, message='Unable to update channel properties {id}.'.format(id=id))
		except IntegrityError as e:
			abort(400, message='Channel properties name must be unique.')
		except Initial_cha.DoesNotExist:
			abort(400, message=self.__invalid_name_msg.format(name=args['init_name']))
		except Hyd_sed_lte_cha.DoesNotExist:
			abort(400, message=self.__invalid_name_msg.format(name=args['hyd_name']))
		except Nutrients_cha.DoesNotExist:
			abort(400, message=self.__invalid_name_msg.format(name=args['nut_name']))
		except Exception as ex:
			abort(400, message="Unexpected error {ex}".format(ex=ex))
Exemple #30
0
 def get(self, project_db):
     SetupProjectDatabase.init(project_db)
     items = gis.Gis_subbasins.select().order_by(gis.Gis_subbasins.id)
     return [{
         'value': m.id,
         'text': 'Subbasin {}'.format(m.id)
     } for m in items]