Exemplo n.º 1
0
        def wrapper(*args, **kwargs):
            request = flask.request

            status = request.args.get('status', '0')
            status = int(status) if status.isdigit() else 0
            status = OrderStatus(
                status
            ) if OrderStatus.WAITING.value <= status <= OrderStatus.CLOSED.value else None

            handler = request.args.get('handler')
            handler = handler if handler and isinstance(handler, str) else None

            source = request.args.get('source', '')
            source = int(source) if source.isdigit() else None

            pagenum = request.args.get('pagenum', '1')
            pagenum = int(pagenum) if pagenum.isdigit() else 1
            pagenum = max(1, pagenum)

            pagesize = request.args.get('pagesize', '20')
            pagesize = int(pagesize) if pagesize.isdigit() else 20
            pagesize = min(50, max(20, pagesize))

            kwargs['status'] = status
            kwargs['handler'] = handler
            kwargs['source'] = source
            kwargs['pagenum'] = pagenum
            kwargs['pagesize'] = pagesize

            return func(*args, **kwargs)
Exemplo n.º 2
0
def upload_file():
    if request.method == 'POST':
        if 'file' not in request.files:
            flash('No file part')
            return redirect(request.url)

        file_obj = request.files['file']

        if file_obj.filename == '' or file_obj.filename.split(
                '.')[-1] != 'tsv':
            error = 'Invalid file!'
            return render_template('upload.html', error=error)

        if file_obj:
            filename = secure_filename(file_obj.filename)
            file_path = os.path.join(app.config['UPLOAD_FOLDER'], filename)
            file_obj.save(file_path)

        with open(file_path) as order_data:
            reader = csv.reader(order_data, delimiter='\t')

            app.logger.info('Begin processing File')

            for row in reader:
                customer, product, order_status, previous_order = process_order(
                    row)

                if not previous_order:
                    insert_row(db.session, Customer(**customer), app.logger)
                    db.session.commit()

                    insert_row(db.session, Product(**product), app.logger)
                    db.session.commit()

                    insert_row(db.session, OrderStatus(**order_status),
                               app.logger)
                    db.session.commit()

                else:
                    order = OrderStatus.query.filter_by(
                        status='new', **previous_order).first()

                    if order:
                        order.status = 'canceled'
                        order.updated_at = order_status['updated_at']
                    else:
                        app.logger.warn(
                            'Unable to load row: {}'.format(order_status))

                    db.session.commit()

        return redirect(url_for('uploaded_file', filename=filename))
Exemplo n.º 3
0
 def default_order_status(self):
     return [
         OrderStatus(status = 'P', description = 'Pendente'),
         OrderStatus(status = 'C', description = 'Cancelado'),
         OrderStatus(status = 'F', description = 'Finalizado')
     ]