예제 #1
0
    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()
예제 #2
0
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="Сайты")
예제 #3
0
파일: data_import.py 프로젝트: klssmith/WxD
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))