Beispiel #1
0
def run_merge():
    # extract parameters
    input_file, id_, file_tag = common.extract_parameters()

    # run script
    returncode = common.run_returncode([
        'python', 'scripts/merge_events.py', 
        '--input_chunks', str(common.N_GROUP_CHUNKS), 
        '--output_chunks', str(common.N_EVENT_CHUNKS), 
        common.to_basename(input_file)])

    # check return code
    if returncode == common.EXIT_FILE_MISSING:
        print("INFO: file missing, exiting gracefully")
        return
    elif returncode != 0:
        raise RuntimeError("Error while calling script")

    # push results to next repository
    for id_ in range(common.N_EVENT_CHUNKS):
        repo_name = "events.cbrugger.times{}".format(id_)
        filename = "{}_merged{}.txt".format(file_tag, id_)
        
        common.upload_file(filename, repo_name, id_, file_tag)

    print("Merge done")
def run_parse():
    # extract parameters
    input_file, id_, file_tag = common.extract_parameters()
    repo_name = "events.cbrugger.results"

    # copy previous result files
    common.clone(repo_name)
    result_dir = os.path.join(common.project_path(), repo_name, "inputs")
    for filename in os.listdir(result_dir):
        shutil.copy(os.path.join(result_dir, filename), common.project_path())

    # run script
    returncode = common.run_returncode([
        'python', 'scripts/parse_results.py', '--chunks',
        str(common.N_EVENT_CHUNKS),
        common.to_basename(input_file)
    ])

    # check return code
    if returncode == common.EXIT_FILE_MISSING:
        print("INFO: file missing, exiting gracefully")
        return
    elif returncode != 0:
        raise RuntimeError("Error while calling script")

    # push results to next repository
    filenames = [
        path for path in os.listdir(common.project_path())
        if path.endswith(".html")
    ]

    common.upload_file(filenames, repo_name, id_, file_tag, do_clone=False)

    print("Parse done")
def create_preview_image():
    lat = 34.785
    lng = 32.075
    zoom = 11
    size = 680

    url = static_image_url(lat, lng, zoom, size, size)
    print('Fetching from', url)
    upload_file(requests.get(url).content, 'data/map_preview.png')
Beispiel #4
0
def process_file(key, is_city, filename, latest):
    gj = json.load(open(filename))
    default = dict(latest_confidence=0,
                   latest_ratio=0,
                   latest_reports=0,
                   population=0)
    for feature in gj['features']:
        properties = feature['properties']
        properties.update(latest.get((properties['id'], is_city), default))
    upload = json.dumps(gj, cls=json_encoder).encode('utf8')
    path = 'data/tilesets/static-images-{}.geojson'.format(key)
    logging.info('UPLOADING %d bytes to %s', len(upload), path)
    upload_file(upload, path)
    upload_tileset(upload, 'static-images-' + key)
Beispiel #5
0
def upload_static_image(id, width=600, height=400):
    features = json.load(open(geo_file('cities')))
    feature = next(filter(lambda f: f['properties']['id'] == id, features['features']))
    coords = split_coordinates(feature['geometry']['coordinates'])
    # print(feature)
    bbox = extent(*coords)
    ctr = center(*bbox)
    size = width, height
    zoom = zoomlevel(min(size) / 1.04, *bbox)
    path = 'data/city_preview_{}.png'.format(id)
    url = static_image_url(*ctr, zoom, *size)
    upload_file(requests.get(url).content, path)
    ret = dict(url='/' + path, center=ctr, zoom=zoom)
    print(ret)
    return ret
Beispiel #6
0
   def ad_edit_info():
      try:
         id = request.form.get("id")
         name = request.form.get("name")
         short_info = request.form.get("short_info")
         long_info = request.form.get("long_info")

         info = session.query(models.Info).filter(models.Info.id == int(id)).first()
         # if user does not select file, browser also
         # submit an empty part without filename
         file_name = info.image
         if 'image' in request.files:
            image = request.files['image']
            if image.filename != '':
               file_old = info.image
               file_name = common.upload_file(image, file_old)
               
         info.name = name
         info.image = file_name
         info.short_info = short_info
         info.long_info = long_info
         session.add(info)
         session.commit()
         session.close()
         flash('Chỉnh sửa tin tức thành công!')
      except Exception as e:
         flash('Hệ thống lỗi, nhờ báo cáo sự cố với bộ phận kỹ thuật.')
      return redirect("/list-info")
Beispiel #7
0
   def admin_add_info():
      try:
         name = request.form.get("name")
         short_info = request.form.get("short_info")
         long_info = request.form.get("long_info")

         if 'image' not in request.files:
            flash('No file part')
            return redirect("/admin-add-info")
         image = request.files['image']
         # if user does not select file, browser also
         # submit an empty part without filename
         if image.filename == '':
            flash('No selected file')
            return redirect("/admin-add-info")
         file_name = common.upload_file(image)

         info = models.Info()
         info.name = name
         info.image = file_name
         info.short_info = short_info
         info.long_info = long_info
         session.add(info)
         session.commit()
         session.close()
         flash('Tạo tin tức thành công!')
      except Exception as e:
         flash('Hệ thống lỗi, nhờ báo cáo sự cố với bộ phận kỹ thuật.')
      return redirect("/list-info")
def run_events():
    # extract parameters
    input_file, id_, file_tag = common.extract_parameters()

    # run script
    common.run([
        'python', 'scripts/get_events.py', '--headless', '--id',
        str(id_), input_file
    ])

    # push results to next repository
    repo_name = "events.cbrugger.merge"
    filename = "{}_events{}.txt".format(file_tag, id_)

    common.upload_file(filename, repo_name, id_, file_tag)

    print("Events done")
def run_groups():
    # define tag
    utc_now = datetime.datetime.utcnow().replace(tzinfo=dateutil.tz.tzutc())
    now = utc_now.astimezone(TZ)
    file_tag = now.strftime("%Y.%m.%d_%H-%M")
    os.environ["FILE_TAG"] = file_tag

    # run script
    common.run("python scripts/get_groups.py --headless --chunks {}".format(
        common.N_GROUP_CHUNKS))

    # push results to next repository
    for id_ in range(common.N_GROUP_CHUNKS):
        repo_name = "events.cbrugger.events{}".format(id_)
        filename = "{}_groups{}.txt".format(file_tag, id_)

        common.upload_file(filename, repo_name, id_, file_tag)

    print("Groups done")
Beispiel #10
0
   def add_product():
      try:
         type = request.form.get("type")
         name = request.form.get("name")
         price_all = request.form.get("price_all")
         price_dn = request.form.get("price_dn")
         price_qn = request.form.get("price_qn")
         price_qng = request.form.get("price_qng")
         color = request.form.get("color")
         origin = request.form.get("origin")
         mainten = request.form.get("mainten")
         wood_type = request.form.get("wood_type")
         short_info = request.form.get("short_info")
         long_info = request.form.get("long_info")

         if 'image' not in request.files:
            flash('No file part')
            return redirect("/admin")
         image = request.files['image']
         # if user does not select file, browser also
         # submit an empty part without filename
         if image.filename == '':
            flash('No selected file')
            return redirect("/admin-add-info")
         file_name = common.upload_file(image)

         price = json.dumps({ "all": price_all, "danang": price_dn, "quangnam": price_qn, "quangngai": price_qng })

         product = models.Product()
         product.type = type
         product.name = name
         product.price = price
         product.color = int(color) if color else None
         product.origin = origin
         product.mainten = int(mainten) if color else None
         product.image = file_name
         product.wood_type = wood_type
         product.short_info = short_info
         product.long_info = long_info
         session.add(product)
         session.commit()
         session.close()
         flash('Tạo sản phẩm thành công!')
         return redirect("/admin")
      except Exception as e:
         flash('Hệ thống lỗi, nhờ báo cáo sự cố với bộ phận kỹ thuật.')
         session.rollback()
      finally:
         session.close()
         return redirect("/admin")
Beispiel #11
0
   def edit_product():
      try:
         id = request.form.get("id")
         typep = request.form.get("type")
         name = request.form.get("name")
         price = request.form.get("price")
         color = request.form.get("color")
         origin = request.form.get("origin")
         mainten = request.form.get("mainten")
         wood_type = request.form.get("wood_type")
         short_info = request.form.get("short_info")
         long_info = request.form.get("long_info")

         product = session.query(models.Product).filter(models.Product.id == int(id)).first()
         file_name = product.image
         if 'image' in request.files:
            image = request.files['image']
            if image.filename != '':
               file_old = product.image
               file_name = common.upload_file(image, file_old)
         product.type = typep
         product.name = name
         product.price = price
         product.color = int(color) if color else None
         product.origin = origin
         product.mainten = int(mainten) if color else None
         product.image = file_name
         product.wood_type = wood_type
         product.short_info = short_info
         product.long_info = long_info
         session.merge(product)
         session.commit()
         session.close()
         flash('Chỉnh sửa sản phẩm thành công!')
      except Exception as e:
         flash('Hệ thống lỗi, nhờ báo cáo sự cố với bộ phận kỹ thuật.')
      return redirect("/admin")
Beispiel #12
0
def upload_new_course_image(_step):
    upload_file('image.jpg')
Beispiel #13
0
def success_upload_file(filename):
    upload_file(filename, sub_path="uploads/")
    world.css_has_text('#upload_confirm', 'Success!')
    world.is_css_not_present('.wrapper-modal-window-assetupload', wait_time=30)
def upload_new_course_image(_step):
    upload_file("image.jpg")
Beispiel #15
0
def upload_textbook(_step, file_name):
    upload_file(file_name, sub_path="uploads/")
Beispiel #16
0
def edit_nick():
    try:
        id = request.form.get('id')
        nick = session.query(
            models.Nicks).filter(models.Nicks.id == id).first()
        name = request.form.get('name')
        nick.name = name
        price = request.form.get('price')
        nick.price = price
        game_type = request.form.get('gameType')

        code = ''
        # Game Info
        if game_type == 'LQ':
            code = 'LQ-' + str(int(datetime.datetime.utcnow().timestamp()))
            game_name = 'Liên Quân'
            data = {
                "account": request.form.get('account'),
                "password": request.form.get('password'),
                "rank": request.form.get('rank'),
                "tuong": request.form.get('slTuong'),
                "skin": request.form.get('Skin'),
                "ngoc": request.form.get('ngoc'),
                "da_quy": request.form.get('daQuy')
            }
        else:
            code = 'NR-' + str(int(datetime.datetime.utcnow().timestamp()))
            game_name = 'Ngọc Rồng'
            data = {
                "nickType": request.form.get('nickType'),
                "server": request.form.get('server'),
                "hanhTinh": request.form.get('hanhTinh'),
                "bongTai":
                True if request.form.get('bongTai') == 'on' else False,
                "deTu": True if request.form.get('deTu') == 'on' else False
            }

        # Image
        if 'files' not in request.files:
            nick.images = nick.images
        else:
            images = request.files.getlist('files')
            # if user does not select file, browser also
            # submit an empty part without filename
            list_image = []
            if images:
                for image in images:
                    if image.filename == '':
                        nick.images = nick.images
                    else:
                        path = app.config['UPLOAD_FOLDER'] + code
                        os.mkdir(path)
                        file_name = common.upload_file(image, path)
                        list_image.append(
                            os.path.join(UPLOAD_FOLDER + code, image.filename))
                        nick.images = ','.join(list_image)

        nick.status = request.form.get('status')
        nick.game_name = game_name
        nick.game_info = json.dumps(data)
        nick.code = code
        nick.create_at = str(datetime.datetime.now())
        nick.user_id = current_user.id
        session.merge(nick)
        session.commit()
        session.close()

        flash('Update thông tin nick thành công!')
    except Exception as e:
        flash(e)
        flash('Hệ thống lỗi, nhờ báo cáo sự cố với bộ phận kỹ thuật.')
        redirect("/admin")
    return redirect("/admin")
Beispiel #17
0
def upload_textbook(_step, file_name):
    upload_file(file_name)
def upload_textbook(_step, file_name):
    upload_file(file_name, sub_path="uploads/")
Beispiel #19
0
def success_upload_file(filename):
    upload_file(filename, sub_path="uploads/")
    world.css_has_text('#upload_confirm', 'Success!')
    world.is_css_not_present('.wrapper-modal-window-assetupload', wait_time=30)
Beispiel #20
0
    ).results()
    rankings = r[0]

    r, _, _ = DF.Flow(
        DF.load(all_data(), name='cities', headers=1,
                override_fields=dict(area_id=dict(type='string')),
                cast_strategy=DF.load.CAST_WITH_SCHEMA),
        DF.filter_rows(lambda r: r['is_city']),
        DF.filter_rows(lambda r: r['num_reports_weighted'] >= 200),
        DF.add_field('ws', 'number', lambda r: r['symptoms_ratio_weighted'] * r['num_reports_weighted']),
        DF.concatenate(dict(
            date=[], num_reports_weighted=[], ws=[]
        ), target=dict(name='ranking')),
        DF.join_with_self('ranking', '{date}', dict(
            date=None, nr=dict(name='num_reports_weighted', aggregate='sum'), ws=dict(name='ws', aggregate='sum')
        )),
        DF.add_field('sr', 'number', lambda r: r['ws']/r['nr']),
        DF.delete_fields(['ws']),
        DF.sort_rows('{date}'),
    ).results()

    national = dict(
        id='NATIONAL', rank=0, scores=[
            dict(nr=rr['nr'], sr=float(rr['sr']), date=rr['date'].isoformat())
            for rr in r[0]
        ][-30:]
    )
    rankings.insert(0, national)
    upload_file(json.dumps(rankings).encode('utf8'), 'data/city_rankings.json')

def upload_new_course_image(_step):
    upload_file('image.jpg', sub_path="uploads")
Beispiel #22
0
def upload_new_course_image(_step):
    upload_file('image.jpg', sub_path="uploads")
Beispiel #23
0
                override_fields=dict(area_id=dict(type='string')),
                cast_strategy=DF.load.CAST_WITH_SCHEMA),
        DF.filter_rows(lambda r: r['is_city']),
        DF.add_field(
            'score_date', 'object',
            lambda r: dict(weekday=r['date'].isoweekday() % 7,
                           date=r['date'].toordinal(),
                           sr=float(r['symptoms_ratio_weighted'] or 0),
                           nr=int(r['num_reports_weighted']))),
        DF.concatenate(dict(id=[], city_name=[], score_date=[]),
                       target=dict(name='popup_data')),
        DF.join_with_self(
            'popup_data', '{city_name}',
            dict(id=None,
                 city_name=None,
                 scores=dict(name='score_date', aggregate='array'))),
        sort_limit_scores(),
        DF.filter_rows(lambda r: r['scores'] is not None),
        DF.add_field('nr', 'integer', lambda r: r['scores'][-1]['nr']),
        DF.add_field('sr', 'number', lambda r: r['scores'][-1]['sr']),
        split_to_weeks(),
        DF.add_field('translations', 'object',
                     lambda r: city_translations[r['city_name']]),
    ).results()
    popup_data = r[0]
    popup_data = dict((x.pop('id'), x) for x in popup_data)

    upload_file(
        json.dumps(popup_data, cls=json_encoder, indent=2).encode('utf8'),
        'data/popup_data.json')
Beispiel #24
0
def upload_textbook(_step, file_name):
    upload_file(file_name)
            if item['is_city']:
                city_fill_pattern_cases.extend(
                    [['in', ['get', 'id'], ['literal', item['id']]],
                     ['image', item['property'].replace('none', '')]])
            else:
                neighborhood_fill_pattern_cases.extend(
                    [['in', ['get', 'id'], ['literal', item['id']]],
                     ['image', item['property'].replace('none', '')]])

    city_fill_color_cases.append('rgba(0,0,0,0)')
    neighborhood_fill_color_cases.append('rgba(0,0,0,0)')
    city_fill_pattern_cases.append(['image', 'pattern-4'])
    neighborhood_fill_pattern_cases.append(['image', 'pattern-4'])

    update_date = (next(
        tabulator.Stream(latest_file(),
                         headers=1).open().iter(keyed=True)))['date']

    out = dict(
        city_fill_color_cases=city_fill_color_cases,
        city_fill_pattern_cases=city_fill_pattern_cases,
        neighborhood_fill_color_cases=neighborhood_fill_color_cases,
        neighborhood_fill_pattern_cases=neighborhood_fill_pattern_cases,
        update_date=update_date,
        color_scale=COLOR_SCALE,
        cutoff_low=CUTOFF_LOW,
        cutoff_high=CUTOFF_HIGH,
    )
    out = json.dumps(out, sort_keys=True)
    upload_file(out.encode('utf8'), 'data/map_coloring.json')