Example #1
0
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))
Example #2
0
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)
Example #3
0
 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()
Example #4
0
    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()
Example #5
0
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)
Example #6
0
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)
Example #7
0
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)
Example #8
0
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)
Example #9
0
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)
Example #10
0
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)
Example #11
0
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)
Example #12
0
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()
Example #13
0
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()
Example #14
0
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))