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))
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))
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
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}))
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
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
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))
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(