示例#1
0
   def get(self, name):
       """
       uses the 'name' as key to obtain details from the datastore, then allows the user to edit it
       """
       q = Script.all().filter('name = ', name)
       user = users.get_current_user()
       #the user is logged in at this point, owing to 'login: required' setting in apps.yaml
       params = {}
       if user:
          params['user'] = user
          params['logout_url'] = users.create_logout_url("/")
          result = q.fetch(1)[0]
          params['language'] = result.language
          params['description'] = result.description
          params['user_friendly_name'] = result.user_friendly_name
          params['code'] = result.code.strip()
          params['name'] = result.name

          prev_scriptlets = False
          if Script.all().filter('user ='******'prev_scriptlets'] = prev_scriptlets

       self.response.out.write(template.render('templates/edit.html', params))
示例#2
0
 def get(self):
     if self.request.path[-1] == '/':
         self.redirect(self.request.path[:-1])
     name = self.request.path.split('/')[-1]
     script = Script.all().filter('name =', name).get()
     self.response.out.write("#!%s\n" % script.language)
     self.response.out.write(script.code)
示例#3
0
 def wrap(self):
     parts = self.request.path.split('/')[1:]
     if parts[-1] == '':
         parts.pop()
     if '.' in parts[-1]:
         part, ext = parts[-1].split('.')
         parts[-1] = part
     else:
         ext = None
     script = Script.all().filter('id =', parts[0]).get()
     version = None
     if script:
         if len(parts) > 1:
             if parts[1] == 'latest':
                 return self.redirect('/%s/%s' % (script.id, script.latest_version.id))
             else:
                 version = script.version_set.filter('id =', parts[1]).get()
         else:
             version = script.latest_version
     if not version:
         self.not_found()
     elif self.should_run():
         self.run(script, version)
     else:
         user = users.get_current_user()
         if script.private and script.user.key() != user.key():
             return self.not_authorized()
         if ext == 'js':
             self.response.headers['Content-Type'] = 'text/javascript'
             self.response.out.write(version.body)
         else:
             f(self, script, version, user)
示例#4
0
    def get(self):
       """
       gets a list of available scripts for the logged in user
       """
       q = Script.all().filter('user ='******'login: required' setting in apps.yaml
       params = {}
       params['user'] = user
       params['logout_url'] = users.create_logout_url("/")
       params['query'] = q
       prev_scriptlets = False
       if Script.all().filter('user ='******'prev_scriptlets'] = prev_scriptlets

       self.response.out.write(template.render('templates/saved.html', params))
示例#5
0
 def post(self):
    """
    deletes an script that the logged in user dosen't want
    """
    for script_name in self.request.POST.items():
       if script_name[0] == 'delete':
          query_item = Script.all().filter('name =', script_name[1])
          if query_item.count() == 1:
             for item in query_item.fetch(1):
              item.delete()
    self.redirect('/saved/') 
示例#6
0
 def get(self):
    if self.request.path[-1] == '/':
        self.redirect(self.request.path[:-1])
    name = self.request.path.split('/')[-1]
    script = Script.all().filter('name =', name).get()
    user = users.get_current_user()
    
    if not script or (not user or user != script.user):
        self.redirect(users.create_login_url("/"))
    
    
    self._get_main(script.name, script.language, script.code)
示例#7
0
 def _save_and_redirect(self, name, language, code):
     if name == "":
         name = baseN(abs(hash(time.time())), 36)
     
     script = Script.all().filter('name =', name).get()
     if (script):
         script.language = language
         script.code = code
         script.put()
     else:    
         script = Script(name=name, language=language, code=code)
         script.put()
     self.redirect('/view/%s' % script.name)
示例#8
0
    def get(self):
        if self.request.path[-1] == '/':
            self.redirect(self.request.path[:-1])
        name = self.request.path.split('/')[-1]
        script = Script.all().filter('name =', name).get()

        prev_scriptlets = False
        if Script.all().filter('user ='******'script':script, 'lines': script.code.count("\n"), 'run_url': self.request.url.replace('view', 'run')}
            user = users.get_current_user()
            if user:
                params['user'] = user
                params['logout_url'] = users.create_logout_url("/")
            else:
                params['user'] = user
                params['login_url'] = users.create_login_url('/')
            params['prev_scriptlets'] = prev_scriptlets
            self.response.out.write(template.render('templates/view.html', params))
        else:
            self.redirect('/')
示例#9
0
 def _run_script(self):
     name = self.request.path.split('/')[-1]
     script = Script.all().filter('name =', name).get()
     if script:
         payload = dict(self.request.POST)
         headers = dict(self.request.headers)
         if headers.get('Content-Type'):
             del headers['Content-Type']
         headers['Run-Code'] = base64.b64encode(script.code)
         headers['Run-Code-URL'] = self.request.url.replace('run', 'code')
         self.response.out.write(urlfetch.fetch(
                     url='%s?%s' % (language_engines[script.language], self.request.query_string),
                     payload=urllib.urlencode(payload) if len(payload) else None,
                     method=self.request.method,
                     headers=headers).content)
     else:
         self.redirect('/')
示例#10
0
   def post(self, name):
        """
        deletes the old entry and iserts a new one with the same name and new updated values
        """
        language = self.request.POST['language']
        description = self.request.POST['description'].strip()
        user_friendly_name = self.request.POST['user_friendly_name'].strip()
        name = self.request.POST['name']

        code = self.request.POST['%s-code' % language].strip()
        #delete old entry
        q = Script.all().filter('name = ', name)
        for item in q:
           item.delete()
        script = Script(name=name, language=language, code=code, description=description or 'None', user_friendly_name=user_friendly_name or 'None')
        script.put()
        self.redirect('/saved/')
示例#11
0
文件: main.py 项目: jjohn/scriptlets
 def get(self):
     user = users.get_current_user()
     auth_save = self.request.cookies.get("auth_save", None)
     if auth_save:
         self.response.headers.add_header("Set-Cookie", "auth_save=; expires=Wed, 11-Sep-1985 11:00:00 GMT")
         params = cgi.parse_qs(auth_save)
         script = Script(language=params["language"][0], code=params["code"][0])
         script.put()
         self.redirect("/view/%s" % script.name)
     else:
         if user:
             prev_scriptlets = False
             if Script.all().filter("user ="******"user": user, "logout_url": users.create_logout_url("/"), "prev_scriptlets": prev_scriptlets}
         else:
             params = {"user": user, "login_url": users.create_login_url("/")}
         self.response.out.write(template.render("templates/main.html", params))
示例#12
0
 def _get_main(self, name, language, code):
 
     
     user = users.get_current_user()
     auth_save = self.request.cookies.get('auth_save', None)
     if auth_save:
         self.response.headers.add_header('Set-Cookie', 'auth_save=; expires=Wed, 11-Sep-1985 11:00:00 GMT')
         params = cgi.parse_qs(auth_save)
         self._save_and_redirect(params['name'][0], params['language'][0], params['code'][0])
     else:
         scripts = Script.all().filter('user ='******'user': user, 'scripts': scripts, 'name': name, 'language': language, 'code': code}
         if user:
             params['logout_url'] = users.create_logout_url("/")
         else:
             params['login_url'] = users.create_login_url('/')
         self.response.out.write(template.render('templates/main.html', params))
示例#13
0
 def get(self):
     if self.request.path[-1] == '/':
         self.redirect(self.request.path[:-1])
     name = self.request.path.split('/')[-1]
     script = Script.all().filter('name =', name).get()
     self.response.out.write(base64.b64encode(script.code))