def filetree (request): r = ['<ul class="jqueryFileTree" style="display: none;">'] show_hidden = False base_dir = request.user.preferences.basedir try: r = ['<ul class="jqueryFileTree" style="display: none;">'] d = urllib.unquote(request.POST.get('dir', '')) if not d.startswith(base_dir): d = os.path.join(base_dir, d) d = os.path.normpath(d) if not d.startswith(base_dir): r.append('Invalid directory: %s' % str(d)) fdlist = os.listdir(d) fdlist.sort() files = [] dirs = [] for f in fdlist: go = False if f.startswith('.'): if show_hidden: go = True else: go = True if go: ff = os.path.join(d,f) if os.path.isdir(ff): dirs.append((ff,f)) else: e = os.path.splitext(f)[1][1:] # get .ext and remove dot files.append((e,ff,f)) for d in dirs: did = hashstr(d[0]) rm = render_to_string('ide/right_menu_dir.html', {'dir': d[0], 'did': did, 'd': os.path.basename(d[0])}) r.append('<li class="directory collapsed" id="%s" title="%s">%s<a href="#" rel="%s/">%s</a></li>' % (did, d[0], rm, d[0], d[1])) for f in files: fid = hashstr(f[1]) rm = render_to_string('ide/right_menu_file.html', {'f': f[2], 'fid': fid, 'file': f[1]}) r.append('<li class="file ext_%s" id="%s">%s<a href="#" rel="%s">%s</a></li>' % (f[0], fid, rm, f[1], f[2])) r.append('</ul>') except Exception,e: r.append('Could not load directory: %s' % str(e))
def filesave (request): ret = 'bad' error = None path = request.POST.get('path', '') contents = request.POST.get('contents', '') if path == '': error = 'Bad Request' else: if request.user.preferences.valid_path(path): try: fh = codecs.open(path, encoding='utf-8', mode='w') fh.write(contents) except: error = 'Error writing file to disk.' else: fh.close() ret = 'good' else: error = 'File Access Denied' return http.HttpResponse(json.dumps({'result': ret, 'error': error, 'uid': hashstr(path)}), mimetype=settings.JSON_MIME)
def do_search (self): self.state = 'running' self.save() opts = self.get_opts() needle = self.make_needle() results = [] for root, dirs, files in os.walk(opts['dir']): if opts['glob']: files = glob.glob(root + '/' + opts['glob']) if files: for file in files: if JobKill.objects.filter(ds=self).count() > 0: self.killed = True self.save() print 'Job Killed' return fp = os.path.join(root, file) uid = hashstr(fp) if opts['needle']: grep = Grep(fp, needle) grep_results = grep.results() if grep_results: results.append((fp, uid, grep_results)) else: results.append((fp, uid, [])) self.set_results(results) self.state = 'complete' self.save()
def do_search(self): self.state = 'running' self.save() opts = self.get_opts() needle = self.make_needle() results = [] for root, dirs, files in os.walk(opts['dir']): if opts['glob']: files = glob.glob(root + '/' + opts['glob']) if files: for file in files: if JobKill.objects.filter(ds=self).count() > 0: self.killed = True self.save() print 'Job Killed' return fp = os.path.join(root, file) uid = hashstr(fp) if opts['needle']: grep = Grep(fp, needle) grep_results = grep.results() if grep_results: results.append((fp, uid, grep_results)) else: results.append((fp, uid, [])) self.set_results(results) self.state = 'complete' self.save()
def filesave(request): ret = 'bad' error = None path = request.POST.get('path', '') contents = request.POST.get('contents', '') if path == '': error = 'Bad Request' else: if request.user.preferences.valid_path(path): try: fh = codecs.open(path, encoding='utf-8', mode='w') fh.write(contents) except: error = 'Error writing file to disk.' else: fh.close() ret = 'good' else: error = 'File Access Denied' return http.HttpResponse(json.dumps({ 'result': ret, 'error': error, 'uid': hashstr(path) }), mimetype=settings.JSON_MIME)
def copy (request): global CLIPBOARD path = request.REQUEST.get('dir') name = request.REQUEST.get('name') d = os.path.dirname(path) CLIPBOARD = os.path.join(d, name) if d == request.user.preferences.basedir: did = 'file_browser' else: did = hashstr(d) return ide.utils.good_json(did)
def paste (request): path = request.REQUEST.get('dir') name = request.REQUEST.get('name') d = os.path.dirname(path) folder = os.path.join(d, name) if CLIPBOARD: shutil.copy(CLIPBOARD, folder) if d == request.user.preferences.basedir: did = 'file_browser' else: did = hashstr(d) return ide.utils.good_json(did)
def remove (request): path = request.REQUEST.get('dir') if os.path.isdir(path): shutil.rmtree(path) else: os.remove(path) d = os.path.dirname(path) if d == request.user.preferences.basedir: did = 'file_browser' else: did = hashstr(d) return ide.utils.good_json(did)
def remove(request): path = request.REQUEST.get('dir') if os.path.isdir(path): shutil.rmtree(path) else: os.remove(path) d = os.path.dirname(path) if d == request.user.preferences.basedir: did = 'file_browser' else: did = hashstr(d) return ide.utils.good_json(did)
def rename (request): path = request.REQUEST.get('dir') name = request.REQUEST.get('name') d = os.path.dirname(path) newpath = os.path.join(d, name) if os.path.exists(newpath): return ide.utils.bad_json('Destination Exists Already') os.rename(path, newpath) if d == request.user.preferences.basedir: did = 'file_browser' else: did = hashstr(d) return ide.utils.good_json(did)
def rename(request): path = request.REQUEST.get('dir') name = request.REQUEST.get('name') d = os.path.dirname(path) newpath = os.path.join(d, name) if os.path.exists(newpath): return ide.utils.bad_json('Destination Exists Already') os.rename(path, newpath) if d == request.user.preferences.basedir: did = 'file_browser' else: did = hashstr(d) return ide.utils.good_json(did)
def fileget(request): try: base_dir = request.user.preferences.basedir f = request.POST.get('f', '') f = os.path.normpath(f) if not f.startswith(base_dir): raise http.Http404 fh = open(f, 'rb') mode = None if ide.utils.istext(fh.read(512)): fh.seek(0) root, ext = os.path.splitext(f) if ext[1:].lower() in ide.settings.TEXT_EXTENSIONS.keys(): mode = ide.settings.TEXT_EXTENSIONS[ext[1:].lower()] ret = { 'fileType': 'text', 'data': fh.read(), 'path': f, 'filename': os.path.basename(f), 'mode': mode, 'uid': hashstr(f) } else: ret = { 'fileType': 'binary', } return http.HttpResponse(json.dumps(ret), mimetype=settings.JSON_MIME) except: import traceback traceback.print_exc()
def fileget (request): try: base_dir = request.user.preferences.basedir f = request.POST.get('f', '') f = os.path.normpath(f) if not f.startswith(base_dir): raise http.Http404 fh = open(f, 'rb') mode = None if ide.utils.istext(fh.read(512)): fh.seek(0) root, ext = os.path.splitext(f) if ext[1:].lower() in ide.settings.TEXT_EXTENSIONS.keys(): mode = ide.settings.TEXT_EXTENSIONS[ext[1:].lower()] ret = { 'fileType': 'text', 'data': fh.read(), 'path': f, 'filename': os.path.basename(f), 'mode': mode, 'uid': hashstr(f) } else: ret = {'fileType': 'binary', } return http.HttpResponse(json.dumps(ret), mimetype=settings.JSON_MIME) except: import traceback traceback.print_exc()
def filetree(request): r = ['<ul class="jqueryFileTree" style="display: none;">'] show_hidden = False base_dir = request.user.preferences.basedir try: r = ['<ul class="jqueryFileTree" style="display: none;">'] d = urllib.unquote(request.POST.get('dir', '')) if not d.startswith(base_dir): d = os.path.join(base_dir, d) d = os.path.normpath(d) if not d.startswith(base_dir): r.append('Invalid directory: %s' % str(d)) fdlist = os.listdir(d) fdlist.sort() files = [] dirs = [] for f in fdlist: go = False if f.startswith('.'): if show_hidden: go = True else: go = True if go: ff = os.path.join(d, f) if os.path.isdir(ff): dirs.append((ff, f)) else: e = os.path.splitext(f)[1][1:] # get .ext and remove dot files.append((e, ff, f)) for d in dirs: did = hashstr(d[0]) rm = render_to_string('ide/right_menu_dir.html', { 'dir': d[0], 'did': did, 'd': os.path.basename(d[0]) }) r.append( '<li class="directory collapsed" id="%s" title="%s">%s<a href="#" rel="%s/">%s</a></li>' % (did, d[0], rm, d[0], d[1])) for f in files: fid = hashstr(f[1]) rm = render_to_string('ide/right_menu_file.html', { 'f': f[2], 'fid': fid, 'file': f[1] }) r.append( '<li class="file ext_%s" id="%s">%s<a href="#" rel="%s">%s</a></li>' % (f[0], fid, rm, f[1], f[2])) r.append('</ul>') except Exception, e: r.append('Could not load directory: %s' % str(e))