Ejemplo n.º 1
0
Archivo: views.py Proyecto: RhRU/ftman
def search(request, tableid):
    if is_logged(request):
        oauth_client = request.session.get('oauth_client')
        if not is_allowed_to_view(oauth_client, tableid):
            messages.error(request, 'عفوا غير مسموح لك بمشاهدة هذه الصفحة.')
            return HttpResponseRedirect(reverse('error'))
    else:
        messages.error(request, 'سجل الدخول لكى تتمكن من مشاهدة الصفحة.')
        return HttpResponseRedirect(reverse('error'))

    tables = oauth_client.query(SQL().showTables())

    if len(tables['rows']) > 0 and 'table id' in tables['rows'][0]:
        viewable_tables = get_viewable_tables(tables['rows'])
    else:
        viewable_tables = tables['rows']

    results = []
    table_info = oauth_client.query(SQL().select(tableid))
    table_info['header'].append('rowid')

    if request.GET.get('searchKey'):
        condition = "name LIKE '%" + request.GET.get('searchKey').encode(
            'UTF-8') + "%'"
        results = oauth_client.query(SQL().select(tableid,
                                                  table_info['header'],
                                                  condition))
    else:
        results = oauth_client.query(SQL().select(tableid,
                                                  table_info['header']))

    pager = Paginator(results['rows'], settings.PAGER)

    if request.GET.get('page'):
        page = pager.page(request.GET.get('page'))
    else:
        page = pager.page(1)

    page_range = pager.page_range

    if page.number > 3 and len(page_range) > 5:
        page_range = page_range[page.number - 2:]

    template_context = {
        'header': results['header'],
        'tables': viewable_tables,
        'rows': page.object_list,
        'tableid': tableid,
        'pager': pager,
        'page': page,
        'page_range': page_range
    }
    return render_to_response('table.html', template_context,
                              RequestContext(request))
Ejemplo n.º 2
0
Archivo: views.py Proyecto: RhRU/ftman
def row(request, tableid, rowid):

    if is_logged(request):
        oauth_client = request.session.get('oauth_client')
        if not is_allowed_to_view(oauth_client, tableid):
            messages.error(request, 'عفوا غير مسموح لك بمشاهدة هذه الصفحة.')
            return HttpResponseRedirect(reverse('error'))
    else:
        messages.error(request, 'سجل الدخول لكى تتمكن من مشاهدة الصفحة.')
        return HttpResponseRedirect(reverse('error'))

    tables = oauth_client.query(SQL().showTables())

    if len(tables['rows']) > 0 and 'table id' in tables['rows'][0]:
        viewable_tables = get_viewable_tables(tables['rows'])
    else:
        viewable_tables = tables['rows']

    tree = ET.parse(os.path.abspath(os.path.dirname(__file__)) + '/tables.xml')
    root = tree.getroot()

    foreign_tables = {}

    for column in root.findall(".//table[@id='" + tableid +
                               "']/columns/column"):
        for child in column.getchildren():
            if (child.tag == 'foreign_key'):
                json_data = json.load(urllib2.urlopen(child.text))
                foreign_tables[column.get('name')] = json_data['rows']

    if request.method == 'POST':
        my_post = request.POST.copy()
        my_post.pop("csrfmiddlewaretoken", None)

        results = oauth_client.query(SQL().update(tableid, my_post.keys(),
                                                  my_post.values(), rowid))
        return HttpResponseRedirect(
            reverse('table', kwargs={'tableid': tableid}))

    results = oauth_client.query(SQL().select(tableid, None, "rowid=" + rowid))

    template_context = {
        'header': results['header'],
        'rows': results['rows'],
        'foreign_tables': foreign_tables,
        'tables': viewable_tables,
        'tableid': tableid,
        'rowid': rowid
    }

    return render_to_response('row.html', template_context,
                              RequestContext(request))
Ejemplo n.º 3
0
    def _importRows(self, filehandle, table_id, cols):
        """ Helper function to upload rows of data in a CSV file to a table """
        max_per_batch = 100
        current_row = 0
        queries = []
        rows = []
        for line in filehandle:
            values = dict(zip(cols, line))
            query = SQL().insert(table_id, values)
            queries.append(query)
            current_row += 1
            if current_row == max_per_batch:
                full_query = ';'.join(queries)
                try:
                    rows += self.ftclient.query(full_query).split("\n")[1:-1]
                except:
                    print str(sys.exc_info()[1])
                    print full_query + "\n"
                time.sleep(1)

                current_row = 0
                queries = []

        if len(queries) > 0:
            full_query = ';'.join(queries)
            try:
                rows += self.ftclient.query(full_query).split("\n")[1:-1]
            except:
                print str(sys.exc_info()[1])
                print full_query

        return rows
Ejemplo n.º 4
0
Archivo: views.py Proyecto: RhRU/ftman
def delete(request, tableid, rowid):

    if is_logged(request):
        oauth_client = request.session.get('oauth_client')
        if not is_allowed_to_view(oauth_client, tableid):
            messages.error(request, 'عفوا غير مسموح لك بمشاهدة هذه الصفحة.')
            return HttpResponseRedirect(reverse('error'))
    else:
        messages.error(request, 'سجل الدخول لكى تتمكن من مشاهدة الصفحة.')
        return HttpResponseRedirect(reverse('error'))

    results = oauth_client.query(SQL().delete(tableid, rowid))

    return HttpResponseRedirect(reverse('table', kwargs={'tableid': tableid}))
Ejemplo n.º 5
0
    def importFile(self, filename, table_name=None, data_types=None):
        """ Creates new table and imports data from CSV file """
        filehandle = csv.reader(open(filename, "rb"))
        cols = filehandle.next()
        if data_types: columns_and_types = dict(zip(cols, data_types))
        else: columns_and_types = dict([(c, "STRING") for c in cols])

        table = {}
        table[table_name or filename] = columns_and_types
        results = self.ftclient.query(SQL().createTable(table))
        table_id = int(results.split()[1])

        self._importRows(filehandle, table_id, cols)

        return table_id
Ejemplo n.º 6
0
Archivo: views.py Proyecto: RhRU/ftman
def is_allowed_to_view(oauth_client, tableid):

    results = oauth_client.query(SQL().showTables())

    if len(results['rows']) > 0 and 'table id' in results['rows'][0]:
        viewable_tables = get_viewable_tables(results['rows'])
        tables_ids = []
        for table in viewable_tables:
            tables_ids.append(table['table id'])

        if tableid in tables_ids:
            return 1
        else:
            return 0
    else:
        return 0
Ejemplo n.º 7
0
Archivo: views.py Proyecto: RhRU/ftman
def home(request):

    if is_logged(request):
        oauth_client = request.session.get('oauth_client')
    else:
        messages.error(request, 'سجل الدخول لكى تتمكن من مشاهدة الصفحة.')
        return HttpResponseRedirect(reverse('error'))

    tables = oauth_client.query(SQL().showTables())

    if len(tables['rows']) > 0 and 'table id' in tables['rows'][0]:
        viewable_tables = get_viewable_tables(tables['rows'])
    else:
        viewable_tables = tables['rows']

    template_context = {'tables': viewable_tables}

    return render_to_response('main.html', template_context,
                              RequestContext(request))
Ejemplo n.º 8
0
from lib.fusiontables.authorization.clientlogin import ClientLogin
from lib.fusiontables.sql.sqlbuilder import SQL
from lib.fusiontables import ftclient
from lib.fusiontables.fileimport.fileimporter import CSVImporter

if __name__ == "__main__":

    import sys, getpass
    username = sys.argv[1]
    password = getpass.getpass("Enter your password: "******"\n")[1])
    print tableid

    #insert row into table
    rowid = int(