Metadata-Version: 1.1
Name: pyexcel-webio
Version: 0.0.2
Summary: A generic request and response interface for pyexcel web extensions.
Home-page: https://github.com/chfw/pyexcel-webio
Author: C. W.
Author-email: wangc_2011@hotmail.com
License: GNU GPLv3 or BSD
Description: ==============
        pyexcel-webio
        ==============
        
        .. image:: https://api.travis-ci.org/chfw/pyexcel-webio.png
            :target: http://travis-ci.org/chfw/pyexcel-webio
        
        .. image:: https://coveralls.io/repos/chfw/pyexcel-webio/badge.png?branch=master 
            :target: https://coveralls.io/r/chfw/pyexcel-webio?branch=master 
        
        
        **pyexcel-webio** is a tiny interface library to unify the web extensions that uses `pyexcel <https://github.com/chfw/pyexcel>`__ . You may use it to write a web extension for your faviourite Python web framework.
        
        
        Installation
        ============
        
        You can install it via pip::
        
            $ pip install pyexcel-webio
        
        
        or clone it and install it::
        
            $ git clone http://github.com/chfw/pyexcel-webio.git
            $ cd pyexcel-webio
            $ python setup.py install
        
        
        Usage
        =========
        
        This small section outlines the steps to adapt **pyexcel-webio** for your favourite web framework. For illustration purpose, I took **Flask** micro-framework as an example.
        
        1. Inherit **ExcelInput** class and implement **load_single_sheet** and **load_book** methods depending on the parameters you will have. For example, **Flask.Request** put the incoming file in **Flask.Request.files** and the key is the field name in the html form::
        
            from flask import Flask, Request
            import pyexcel as pe
            from pyexcel.ext import webio
        
            class ExcelRequest(webio.ExcelInput, Request):
                def _get_file_tuple(self, field_name):
                    filehandle = self.files[field_name]
                    filename = filehandle.filename
                    extension = filename.split(".")[1]
                    return extension, filehandle
            
                def load_single_sheet(self, field_name=None, sheet_name=None,
                                      **keywords):
                    file_type, file_handle = self._get_file_tuple(field_name)
                    return pe.get_sheet(file_type=file_type,
                                        content=file_handle.read(),
                                        sheet_name=sheet_name,
                                        **keywords)
            
                def load_book(self, field_name=None, **keywords):
                    file_type, file_handle = self._get_file_tuple(field_name)
                    return pe.get_book(file_type=file_type,
                                       content=file_handle.read(),
                                       **keywords)
        
        2. Plugin in a response method that has the following signature::
        
               def your_func(content, content_type=None, status=200):
                   ....
        
           or a response class has the same signature::
        
               class YourClass:
                   def __init__(self, content, content_type=None, status=200):
                   ....
        
           For example, with **Flask**, it is just a few lines::
        
               from flask import Response
        
        
               webio.ExcelResponse = Response
        
        
        3. Then make the proxy for **make_response** series by simply copying the following lines to your extension::
        
            from pyexcel.ext.webio import (
                make_response,
                make_response_from_array,
                make_response_from_dict,
                make_response_from_records,
                make_response_from_book_dict
            )
        
        License
        ==========
        
        New BSD License
        
        Dependencies
        ============
        
        * pyexcel >= 0.1.2
        
Keywords: API,pyexcel,Excel,HTTP
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Web Environment
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Programming Language :: Python
Classifier: License :: OSI Approved :: BSD License
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.6
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: Implementation :: PyPy
