Beispiel #1
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.")
Beispiel #2
0
	def put(self, project_db):
		SetupProjectDatabase.init(project_db)
		args = get_recallrec_args(True)

		try:
			param_dict = {}

			if args['rec_typ'] is not None:
				param_dict['rec_typ'] = args['rec_typ']

			con_table = Recall_con
			con_prop_field = Recall_con.rec_id
			prop_table = Recall_rec

			con_param_dict = {}
			if args['wst_name'] is not None:
				con_param_dict['wst_id'] = self.get_id_from_name(Weather_sta_cli, args['wst_name'])
			if args['elev'] is not None:
				con_param_dict['elev'] = args['elev']

			con_result = 1
			if (len(con_param_dict) > 0):
				con_query = con_table.update(con_param_dict).where(con_table.id.in_(args['selected_ids']))
				con_result = con_query.execute()

			if con_result > 0:
				result = 1
				if (len(param_dict) > 0):
					prop_ids = con_table.select(con_prop_field).where(con_table.id.in_(args['selected_ids']))
					query = prop_table.select().where(prop_table.id.in_(prop_ids))
					sim = Time_sim.get_or_create_default()
					for m in query:
						update_recall_rec(project_base.db, m, m.id, sim, args['rec_typ'])

					query2 = prop_table.update(param_dict).where(prop_table.id.in_(prop_ids))
					result = query2.execute()

				if result > 0:
					return 200

			abort(400, message='Unable to update routing unit properties.')
		except Exception as ex:
			abort(400, message="Unexpected error {ex}".format(ex=ex))
Beispiel #3
0
	def put(self, project_db, id):
		#return self.base_put(project_db, id, Recall_rec, 'Recall')
		table = Recall_rec
		item_description = 'Recall'
		try:
			SetupProjectDatabase.init(project_db)
			args = self.get_args_reflect(table, project_db)

			sim = Time_sim.get_or_create_default()
			m = table.get(table.id==id)
			update_recall_rec(project_base.db, m, id, sim, args['rec_typ'])
			
			result = self.save_args(table, args, id=id)

			if result > 0:
				return 201

			abort(400, message='Unable to update {item} {id}.'.format(item=item_description.lower(), id=id))
		except IntegrityError as e:
			abort(400, message='{item} name must be unique. '.format(item=item_description) + str(e))
		except table.DoesNotExist:
			abort(404, message='{item} {id} does not exist'.format(item=item_description, id=id))
		except Exception as ex:
			abort(400, message="Unexpected error {ex}".format(ex=ex))
Beispiel #4
0
 def get(self, project_db):
     SetupProjectDatabase.init(project_db)
     m = Time_sim.get_or_create_default()
     return model_to_dict(m)
Beispiel #5
0
    def put(self, project_db, id):
        #return self.base_put(project_db, id, Recall_rec, 'Recall')
        table = Recall_rec
        item_description = 'Recall'
        try:
            SetupProjectDatabase.init(project_db)
            args = self.get_args_reflect(table, project_db)

            m = table.get(table.id == id)
            if m.rec_typ != args['rec_typ']:
                Recall_dat.delete().where(
                    Recall_dat.recall_rec_id == id).execute()

                sim = Time_sim.get_or_create_default()
                years = 0
                months = 1
                days = 1
                start_day = 1
                start_month = 1
                insert_daily = False

                if args['rec_typ'] != 4:
                    years = sim.yrc_end - sim.yrc_start
                    if args['rec_typ'] != 3:
                        start_date = datetime.datetime(sim.yrc_start, 1,
                                                       1) + datetime.timedelta(
                                                           sim.day_start)
                        end_date = datetime.datetime(sim.yrc_end, 1,
                                                     1) + datetime.timedelta(
                                                         sim.day_end)
                        if sim.day_end == 0:
                            end_date = datetime.datetime(sim.yrc_end, 12, 31)

                        start_month = start_date.month
                        months = end_date.month

                        if args['rec_typ'] != 2:
                            insert_daily = True

                rec_data = []
                if not insert_daily:
                    for x in range(years + 1):
                        for y in range(start_month, months + 1):
                            t_step = x + 1 if months == 1 else y
                            data = {
                                'recall_rec_id':
                                id,
                                'yr':
                                x +
                                sim.yrc_start if args['rec_typ'] != 4 else 0,
                                't_step':
                                t_step if args['rec_typ'] != 4 else 0,
                                'flo':
                                0,
                                'sed':
                                0,
                                'ptl_n':
                                0,
                                'ptl_p':
                                0,
                                'no3_n':
                                0,
                                'sol_p':
                                0,
                                'chla':
                                0,
                                'nh3_n':
                                0,
                                'no2_n':
                                0,
                                'cbn_bod':
                                0,
                                'oxy':
                                0,
                                'sand':
                                0,
                                'silt':
                                0,
                                'clay':
                                0,
                                'sm_agg':
                                0,
                                'lg_agg':
                                0,
                                'gravel':
                                0,
                                'tmp':
                                0
                            }
                            rec_data.append(data)
                else:
                    current_date = start_date
                    while current_date <= end_date:
                        data = {
                            'recall_rec_id': id,
                            'yr': current_date.year,
                            't_step': current_date.timetuple().tm_yday,
                            'flo': 0,
                            'sed': 0,
                            'ptl_n': 0,
                            'ptl_p': 0,
                            'no3_n': 0,
                            'sol_p': 0,
                            'chla': 0,
                            'nh3_n': 0,
                            'no2_n': 0,
                            'cbn_bod': 0,
                            'oxy': 0,
                            'sand': 0,
                            'silt': 0,
                            'clay': 0,
                            'sm_agg': 0,
                            'lg_agg': 0,
                            'gravel': 0,
                            'tmp': 0
                        }
                        rec_data.append(data)
                        current_date = current_date + datetime.timedelta(1)

                db_lib.bulk_insert(project_base.db, Recall_dat, rec_data)

            result = self.save_args(table, args, id=id)

            if result > 0:
                return 201

            abort(400,
                  message='Unable to update {item} {id}.'.format(
                      item=item_description.lower(), id=id))
        except IntegrityError as e:
            abort(400,
                  message='{item} name must be unique. '.format(
                      item=item_description) + str(e))
        except table.DoesNotExist:
            abort(404,
                  message='{item} {id} does not exist'.format(
                      item=item_description, id=id))
        except Exception as ex:
            abort(400, message="Unexpected error {ex}".format(ex=ex))