def save_data(self): for row in self.rows_list: try: site = Site() cont = 'no' if self.status_col and row[self.status_col]: if self.status_col == 'Closed': if row[self.status_col] != '': cont = 'yes' else: for retired_name in WikiEnergyTable.inactive_colnames: if retired_name in row[self.status_col]: cont = 'yes' if cont =='yes': continue site.name = row[self.name_col] if self.name_col else '' if not self.type_id: if self.type_col and row[self.type_col]: site.type_id = site.choose_type_id(row[self.type_col]) elif self.more_type_info_cols is not None: for col in self.more_type_info_cols: if site.choose_type_id(row[col]) != 1: site.type_id = site.choose_type_id(row[col]) break else: site.type_id = 1 else: site.type_id = 1 else: site.type_id = self.type_id site.subtype_id = site.choose_subtype_id(row[self.subtype_col]) if self.subtype_col and row[self.subtype_col] else 1 site.capacity = re.sub("[MW]", "", row[self.capacity_col]) if(self.capacity_col and row[self.capacity_col]) else '' site.latitude = None site.longitude = None if self.coordinates_col and row[self.coordinates_col]: if self.coordinates_col in WikiEnergyTable.uk_grid_coordinates_colnames: coords = OSGB36toWGS84.osgb36_to_wgs84(row[self.coordinates_col]) site.latitude = coords[1] site.longitude = coords[0] else: site.latitude = row[self.coordinates_col].split(';')[0] site.longitude = row[self.coordinates_col].split(';')[1].replace(' ', '') site.owner_name = row[self.owner_col] if self.owner_col and row[self.owner_col] else '' site.url = row['url'] if row['url'] else '' site.country_id = self.country_id site.data_source_id = self.source_id db.session.add(site) except: logging.exception('Exception hit in save_data() on ' + 'name') db.session.commit()
def sites(): categories = Category.query.all() sites = Site.query.all() if not current_user.is_admin: return render_template("sites.html", sites=sites, categories=categories, header="Сайты") add_form = AddSiteForm() if request.method == 'POST': site_manager = None if request.form['name'] != "": site_name = request.form["name"] if request.form['url'] != "": site_url = request.form["url"] if request.form['manager'] != "": site_manager = request.form["manager"] if Site.query.filter(Site.name == site_name).first() != None: err = "Такой сайт уже есть" return err elif Site.query.filter(Site.url == site_url).first() != None: err = "Такой сайт уже есть" return err elif User.query.filter(User.is_manage == True and User.login == site_manager).first() == None: err = "Пользователь не найден" return err else: site = Site() site.name = site_name site.url = site_url if site_manager != None: site.manager_id = User.query.filter( User.is_manage == True and User.login == site_manager).first().id db.session.add(site) db.session.commit() return redirect(url_for("sites")) return render_template("sites.html", sites=sites, categories=categories, add_form=add_form, header="Сайты")
def add_sites_to_database(api_key): forecast_sites = requests.get( 'http://datapoint.metoffice.gov.uk/public/data/val/wxfcs/all/json/sitelist?key={}' .format(api_key)).json() locations = forecast_sites['Locations']['Location'] for location in locations: site = Site() site.id = int(location['id']) site.name = location['name'] site.latitude = float( location['latitude']) if location.get('latitude') else None site.longitude = float( location['longitude']) if location.get('longitude') else None site.elevation = float( location['elevation']) if location.get('elevation') else None site.region = location.get('region') site.unitary_auth_area = location.get('unitaryAuthArea') site.obs_source = location.get('obsSource') site.national_park = location.get('nationalPark') db.session.add(site) print('Adding {}'.format(site.name))