Ejemplo n.º 1
0
def get_uploads(directory):
    return [(file, \
             os.path.getmtime(os.path.join(directory, file)), \
             time.ctime(os.path.getmtime(os.path.join(directory, file)))) \
            for file in os.listdir(directory) if \
                os.path.isfile(os.path.join(directory, file)) and \
                allowed_file(file)]
Ejemplo n.º 2
0
def upload_file():
    files = request.files.getlist('files[]')
    for file in files:
        if file and allowed_file(file.filename):
            filename = secure_filename(file.filename)
            file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
    return redirect(url_for('admin_list_files'))
Ejemplo n.º 3
0
def get_uploads(directory):
    return [(file, \
             os.path.getmtime(os.path.join(directory, file)), \
             time.ctime(os.path.getmtime(os.path.join(directory, file)))) \
            for file in os.listdir(directory) if \
                os.path.isfile(os.path.join(directory, file)) and \
                allowed_file(file)]
Ejemplo n.º 4
0
def upload_file():
    files = request.files.getlist('files[]')
    for file in files:
        if file and allowed_file(file.filename):
            filename = secure_filename(file.filename)
            file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
    return redirect(url_for('admin_list_files'))
Ejemplo n.º 5
0
def proposaldetails(id):
    proposal = Proposal.query.filter_by(id=id).first()
    if proposal is None:
        return redirect('/proposals')
    customers = Customer.query.order_by(Customer.id).all()
    # print(proposal.__dict__)
    if request.method == 'POST':
        is_valid = validate_proposal_form(request.form)
        print('is_valid', is_valid)
        if 'errors' not in is_valid:
            print(request.files)
            if 'sketchup_model' in request.files:
                print("masuk")
                file = request.files['sketchup_model']
                if file and allowed_file(file.filename):
                    filename = secure_filename(file.filename)
                    file_path = app.config.get(
                        'UPLOAD_IMAGES_FOLDER') / filename
                    file.save(file_path)
                    is_valid.update({
                        'sketchup_model':
                        file_path.relative_to(Path('app')).__str__()
                    })
            proposal.update(**is_valid,
                            project_name=request.form.get('project_name'))
            db.session.commit()
            flash('successfully updated', 'success')
            return redirect(f'/proposal-details/{id}')
    return render_template("proposal-details.html",
                           proposal=proposal,
                           customers=customers)
Ejemplo n.º 6
0
def addproposal():
    if request.method == 'POST':
        is_valid = validate_proposal_form(request.form)
        if 'errors' not in is_valid:
            timestamp = datetime.now().replace(microsecond=0)
            date_of_proposals = timestamp.replace(hour=0, minute=0, second=0)
            if 'sketchup_model' in request.files:
                file = request.files['sketchup_model']
                if file and allowed_file(file.filename):
                    filename = secure_filename(file.filename)
                    file_path = app.config.get(
                        'UPLOAD_IMAGES_FOLDER') / filename
                    file.save(file_path)
                    is_valid.update({
                        'sketchup_model':
                        file_path.relative_to(Path('app')).__str__()
                    })
            proposal = Proposal(**is_valid,
                                date_of_proposals=date_of_proposals,
                                project_name=request.form.get('project_name'),
                                created_at=timestamp,
                                updated_at=timestamp,
                                status='Pending')
            db.session.add(proposal)
            db.session.commit()
            flash('successfully added', 'success')
            proposal_current = Proposal.query.filter_by(
                created_at=proposal.created_at).first()
            return redirect(f'/proposal-details/{proposal_current.id}')
    customers = Customer.query.order_by(Customer.id).all()
    return render_template("add-proposal.html", customers=customers)
Ejemplo n.º 7
0
def add_order(id):
    # print(request.files)
    data = {}
    roofs = []
    timestamp = datetime.now().replace(microsecond=0)
    proposal = Proposal.query.filter_by(id=id).first()
    if request.files:
        filepaths = []
        for index, gsa_report in enumerate(request.files):
            file = request.files[f'gsa_report_file{index+1}']
            if file and allowed_file(file.filename):
                filename = secure_filename(file.filename)
                file_path = app.config.get('UPLOAD_FILES_FOLDER') / filename
                file.save(file_path)
                filepaths.append(file_path)
        s_data, proposal_data = add_gsa_report_to_db(filepaths)
    roofs_data = proposal_data.pop('roofs')
    for nums in range(1, proposal.num_of_roofs + 1):
        data['pv_panel'] = request.form.get(f"pv_panel{nums}")
        data['pv_panel_qty'] = request.form.get(f"pv_panel_qty{nums}")
        data['pv_cable'] = request.form.get(f"pv_cable{nums}")
        data['add_construction_qty'] = request.form.get(
            f"add_construction_qty{nums}")
        data['add_construction_price'] = request.form.get(
            f"add_construction_price{nums}")
        data['azimuth'] = roofs_data[nums - 1].get('azimuth')
        data['angle'] = roofs_data[nums - 1].get('angle')
        data['gsa_report_file'] = filepaths[nums - 1].relative_to(
            Path('app')).__str__()
        roof = Roof(**data, created_at=timestamp, updated_at=timestamp)
        roof.solar_data.extend(s_data[nums - 1])
        roofs.append(roof)
    proposal.roofs.extend(roofs)
    print(request.form)
    proposal.geocoordinates = proposal_data.get('geocoordinates')
    proposal.location = proposal_data.get('location')
    proposal.pv_system_model = proposal_data.get('pv_system_model')
    proposal.inverter_stg3 = request.form.get('inverter_stg3')
    proposal.inverter_stg6 = request.form.get('inverter_stg6')
    proposal.inverter_stg20 = request.form.get('inverter_stg20')
    proposal.inverter_stg125 = request.form.get('inverter_stg125')
    proposal.inverter_stg250 = request.form.get('inverter_stg250')
    proposal.energy_accounting_system = request.form.get(
        'energy_accounting_system')
    proposal.transport_price = request.form.get('transport_price')
    proposal.installation_price = request.form.get('installation_price')
    proposal.discount = request.form.get('discount')
    db.session.add(proposal)
    db.session.add_all(roofs)
    db.session.commit()
    flash('successfully add roofs', category='success')
    return redirect(f'/proposal-details/{id}')
Ejemplo n.º 8
0
def root():
    key_folder = current_user.userkey
    BASE_PATH = ""
    form = NewFolder()
    upload_form = FileUpload()

    if request.method == 'POST' and 'files' in request.files:
        file_list = request.files.getlist('files')
        response = {}
        for file in file_list:
            file_length = request.content_length
            if not check_storage_limit(current_user, file_length):
                flash('Sorry you out of your storage, please upgrade account')
                response = {'status': 0}
                return jsonify(response)
            if file and functions.allowed_file(file.filename):
                current_path = os.path.join(functions.GetBasePath(key_folder),
                                            BASE_PATH)
                file_name = secure_filename(file.filename)
                try:
                    file.save(os.path.join(current_path, file_name))
                    update_used_storage(current_user, file_length)
                    response = {'status': 1}
                except Exception as e:
                    current_app.logger.warning(e)
                    response = {'status': 0}
            else:
                flash("Sorry, your file extension is not allowed at Ubox")
                response = {'status': 0}
                current_app.logger.warning(
                    "Some one upload wrong extention: " + current_user.email +
                    ':' + file.filename)
        return jsonify(response)
    elif form.validate_on_submit():
        new_folder = form.folder.data
        functions.MkNewDir(new_folder, BASE_PATH, key_folder)
        return redirect(url_for('main.root'))

    folders, files = functions.ReadPath("", key_folder)
    foldersjson, filesjson = functions.osWalkJson(folders, files)
    return render_template('root.html',
                           form=form,
                           classmaker=classmaker,
                           upload_form=upload_form,
                           foldersjson=foldersjson,
                           filesjson=filesjson,
                           BASE_PATH=BASE_PATH)
Ejemplo n.º 9
0
def update_order(id):
    data = {}
    roofs = []
    proposal = Proposal.query.filter_by(id=id).first()
    s_data = None
    if request.files:
        filepaths = []
        for index, gsa_report in enumerate(request.files):
            file = request.files[f'gsa_report_file{index+1}']
            if file and allowed_file(file.filename):
                filename = secure_filename(file.filename)
                file_path = app.config.get('UPLOAD_FILES_FOLDER') / filename
                file.save(file_path)
                filepaths.append(file_path)
                s_data, proposal_data = add_gsa_report_to_db(filepaths)
    for nums in range(1, proposal.num_of_roofs + 1):
        data['pv_panel'] = request.form.get(f"pv_panel{nums}")
        data['pv_panel_qty'] = request.form.get(f"pv_panel_qty{nums}")
        data['pv_cable'] = request.form.get(f"pv_cable{nums}")
        data['add_construction_qty'] = request.form.get(
            f"add_construction_qty{nums}")
        data['add_construction_price'] = request.form.get(
            f"add_construction_price{nums}")
        data['azimuth'] = request.form.get(f"azimuth{nums}")
        data['angle'] = request.form.get(f"angle{nums}")
        print('proposals', len(proposal.roofs))
        print('sdata', s_data)
        proposal.roofs[nums - 1].update(
            **data, gsa_report_file=s_data[
                nums -
                1]) if s_data is not None else proposal.roofs[nums - 1].update(
                    **data, gsa_report_file=None)
    proposal.inverter_stg3 = request.form.get('inverter_stg3')
    proposal.inverter_stg6 = request.form.get('inverter_stg6')
    proposal.inverter_stg20 = request.form.get('inverter_stg20')
    proposal.inverter_stg125 = request.form.get('inverter_stg125')
    proposal.inverter_stg250 = request.form.get('inverter_stg250')
    proposal.energy_accounting_system = request.form.get(
        'energy_accounting_system')
    proposal.transport_price = request.form.get('transport_price')
    proposal.installation_price = request.form.get('installation_price')
    proposal.discount = request.form.get('discount')
    db.session.commit()
    flash('successfully update roofs', category='success')
    return redirect(f'/proposal-details/{id}')
Ejemplo n.º 10
0
def upload():
    """文件上传"""

    file = request.files.get("Filedata")

    upload_path = os.path.join(current_app.static_folder, 'upload')

    if not os.path.exists(upload_path):
        os.makedirs(upload_path)

    # 如果上传的是文档格式 后缀
    if file and allowed_file(file.filename, EXCEL_EXTENSIONS):

        file_name = file.filename
        file_path = os.path.join(upload_path, file_name)
        file.save(file_path)
        frame = pandas.read_excel(file_path)
        data_resource = []
        frame = frame.fillna("")
        for index, row in frame.iterrows():
            event_code = row.get("事件code")
            event_description = row.get("事件说明")
            category = row.get("分类")
            principal = row.get("负责人")
            remark = row.get("备注")
            sub_datas = get_datas(event_code=event_code,
                                  event_description=event_description,
                                  category=category,
                                  principal=principal,
                                  remark=remark,
                                  config_type_id=request.form.get(
                                      'config_type_id', 0))
            data_resource.extend(sub_datas)

        os.remove(file_path)
        return json.dumps(data_resource)

    return json.dumps({})
Ejemplo n.º 11
0
def save_photo_on_server(user_id):
    if request.method == 'POST':
        connection = functions.connect_to_db(constants.connect_db_hostname,
                                             constants.connect_db_user,
                                             constants.connect_db_password,
                                             constants.connect_db_dbname)
        with connection:
            with connection.cursor() as cursor:
                cursor.execute(constants.sql_get_user, user_id)
                result = cursor.fetchall()
                if len(result) == 0:
                    result = {
                        'status_code':
                        400,
                        'description':
                        constants.not_exist_user_in_db_error_description
                    }
                    return make_response(result, 400)
                else:
                    cursor.execute(constants.sql_check_exist_photo, user_id)
                    result = cursor.fetchall()
                    if len(result) != 0:
                        result = {
                            'status_code': 400,
                            'description':
                            constants.exist_photo_error_description
                        }
                        return make_response(result, 400)
                    else:
                        if (request.files.get('image')):
                            image = request.files.get('image')
                        else:
                            result = {
                                'status_code': 400,
                                'description':
                                constants.not_sending_photo_in_route
                            }
                            return make_response(result, 400)
                        path_to_image = os.path.join(
                            app.config['UPLOAD_FOLDER'], image.filename)
                        if os.path.exists(path_to_image):
                            result = {
                                'status_code':
                                400,
                                'description':
                                constants.exist_photo_error_description
                            }
                            return make_response(result, 400)
                        else:
                            if image and functions.allowed_file(
                                    image.filename):
                                cursor.execute(constants.sql_insert_path_photo,
                                               (user_id, image.filename))
                                image.save(path_to_image)
                                if os.path.exists(path_to_image):
                                    result = {
                                        'status_code':
                                        200,
                                        'description':
                                        constants.
                                        success_save_photo_description
                                    }
                                    return make_response(result, 200)
                                else:
                                    result = {
                                        'status_code':
                                        400,
                                        'description':
                                        constants.
                                        not_save_photo_error_description
                                    }
                                    return make_response(result, 400)
                            else:
                                result = {
                                    'status_code':
                                    400,
                                    'description':
                                    constants.
                                    allow_format_img_error_description
                                }
                                return make_response(result, 400)
    else:
        result = {
            'status_code': 400,
            'description': constants.allow_post_method_error_description
        }
        return make_response(result, 400)
Ejemplo n.º 12
0
def find_face_on_photo():
    if request.method == 'GET':
        connection = functions.connect_to_db(constants.connect_db_hostname,
                                             constants.connect_db_user,
                                             constants.connect_db_password,
                                             constants.connect_db_dbname)
        with connection:
            with connection.cursor() as cursor:
                cursor.execute(constants.sql_get_all_users_photo)
                known_faces_user_id = []
                known_faces_images_path = []
                known_face_encodings_images = []
                for row in cursor:
                    known_faces_user_id.append(row["user_id"])
                    image_path = os.path.join(app.config['UPLOAD_FOLDER'],
                                              row["path"])
                    known_faces_images_path.append(image_path)
                    image = face_recognition.load_image_file(image_path)
                    image_face_encoding = face_recognition.face_encodings(
                        image)[0]
                    known_face_encodings_images.append(image_face_encoding)
        # connection.close()
        if (request.files.get('image')):
            image = request.files.get('image')
        else:
            result = {
                'status_code': 400,
                'description': constants.not_sending_photo_in_route
            }
            return make_response(result, 400)
        path_to_image = os.path.join(app.config['UPLOAD_FOLDER_FOR_FIND_FACE'],
                                     image.filename)
        if image and functions.allowed_file(image.filename):
            image.save(path_to_image)
        if not os.path.exists(path_to_image):
            result = {
                'status_code': 400,
                'description': constants.not_save_photo_error_description
            }
            return make_response(result, 400)
        unknown_image = face_recognition.load_image_file(path_to_image)
        os.remove(path_to_image)

        face_locations = face_recognition.face_locations(unknown_image)
        face_encodings = face_recognition.face_encodings(
            unknown_image, face_locations)

        str_user_id = "Unknown"
        for (top, right, bottom,
             left), face_encoding in zip(face_locations, face_encodings):
            matches = face_recognition.compare_faces(
                known_face_encodings_images, face_encoding)
            user_id = "Unknown"
            face_distances = face_recognition.face_distance(
                known_face_encodings_images, face_encoding)
            best_match_index = np.argmin(face_distances)
            if matches[best_match_index]:
                user_id = known_faces_user_id[best_match_index]
            str_user_id = str(user_id)

        result = {'status_code': 200, 'user_id': str_user_id}
        return make_response(result, 200)
    else:
        result = {
            'status_code': 400,
            'description': constants.allow_get_method_error_description
        }
        return make_response(result, 400)
Ejemplo n.º 13
0
def update_photo(user_id):
    if request.method == 'PUT':
        connection = functions.connect_to_db(constants.connect_db_hostname,
                                             constants.connect_db_user,
                                             constants.connect_db_password,
                                             constants.connect_db_dbname)
        with connection:
            with connection.cursor() as cursor:
                cursor.execute(constants.sql_get_user, user_id)
                result = cursor.fetchall()
                if len(result) == 0:
                    result = {
                        'status_code':
                        400,
                        'description':
                        constants.not_exist_user_in_db_error_description
                    }
                    return make_response(result, 400)
                else:
                    if (request.files.get('image')):
                        image = request.files.get('image')
                    else:
                        result = {
                            'status_code': 400,
                            'description': constants.not_sending_photo_in_route
                        }
                        return make_response(result, 400)
                    if image and functions.allowed_file(image.filename):
                        path_to_image = os.path.join(
                            app.config['UPLOAD_FOLDER'], image.filename)
                        cursor.execute(constants.sql_get_path, user_id)
                        result = cursor.fetchall()
                        if len(result) != 0:
                            cursor.execute(constants.sql_get_path, user_id)
                            for row in cursor:
                                sql_path_to_image = os.path.join(
                                    app.config['UPLOAD_FOLDER'], row["path"])
                            if os.path.exists(sql_path_to_image):
                                os.remove(sql_path_to_image)
                                image.save(path_to_image)
                                # update запрос к БД
                            else:
                                result = {
                                    'status_code':
                                    400,
                                    'description':
                                    constants.not_exist_photo_error_description
                                }
                                return make_response(result, 400)
                        else:
                            result = {
                                'status_code':
                                400,
                                'description':
                                constants.
                                not_exist_photo_in_db_error_description
                            }
                            return make_response(result, 400)
                    else:
                        result = {
                            'status_code':
                            400,
                            'description':
                            constants.allow_format_img_error_description
                        }
                        return make_response(result, 400)
    else:
        result = {
            'status_code': 400,
            'description': constants.allow_put_method_error_description
        }
        return make_response(result, 400)