Beispiel #1
0
    def post(self):
        code = self.request.get('code')
        goal = self.request.get('goal')

        validationResult = supercompileProgram(code, goal)
        if validationResult.status == UNKNOWN_FUNCTION:
            self.display_errors(no_f_function=True)
            return
        elif validationResult.status == PARSE_ERROR:
            self.display_errors(code_error=validationResult.message,
                                code_line=validationResult.code_line)
            return
        action = self.request.get('action')

        user = users.get_current_user()
        scp_code = validationResult.residualCode
        svg_tree = validationResult.svgTree
        svg_xml = minidom.parseString(svg_tree)
        svg_width = svg_xml.documentElement.getAttribute('width')
        svg_height = svg_xml.documentElement.getAttribute('height')
        name = self.request.get('name').strip()
        empty_name = name == ''
        if action == 'Supercompile' or empty_name:
            key = uuid.uuid1().hex
            memcache.set(key, svg_tree, time=60)
            template_values = {
                'user': users.get_current_user(),
                'sign_in': users.create_login_url(self.request.uri),
                'sign_out': users.create_logout_url(self.request.uri),
                'code': code,
                'goal': goal,
                'scp_code': scp_code,
                'key': key,
                'name': name,
                'summary': self.request.get('summary'),
                'notes': self.request.get('notes'),
                'empty_name': empty_name,
                'svg_width': svg_width,
                'svg_height': svg_height
            }
            self.response.out.write(
                template.render('templates/supercompiler.html',
                                template_values))
            return
        author = models.get_author_for_user(user)
        models.add_program_for_user(author.key(),
                                    name=self.request.get('name'),
                                    summary=self.request.get('summary'),
                                    code=self.request.get('code'),
                                    goal=self.request.get('goal'),
                                    notes=self.request.get('notes'),
                                    scp_code=validationResult.residualCode,
                                    svg_tree=validationResult.svgTree)
        self.redirect('/')
Beispiel #2
0
    def post(self):
        code = self.request.get("code")
        goal = self.request.get("goal")

        validationResult = supercompileProgram(code, goal)
        if validationResult.status == UNKNOWN_FUNCTION:
            self.display_errors(no_f_function=True)
            return
        elif validationResult.status == PARSE_ERROR:
            self.display_errors(code_error=validationResult.message, code_line=validationResult.code_line)
            return
        action = self.request.get("action")

        user = users.get_current_user()
        scp_code = validationResult.residualCode
        svg_tree = validationResult.svgTree
        svg_xml = minidom.parseString(svg_tree)
        svg_width = svg_xml.documentElement.getAttribute("width")
        svg_height = svg_xml.documentElement.getAttribute("height")
        name = self.request.get("name").strip()
        empty_name = name == ""
        if action == "Supercompile" or empty_name:
            key = uuid.uuid1().hex
            memcache.set(key, svg_tree, time=60)
            template_values = {
                "user": users.get_current_user(),
                "sign_in": users.create_login_url(self.request.uri),
                "sign_out": users.create_logout_url(self.request.uri),
                "code": code,
                "goal": goal,
                "scp_code": scp_code,
                "key": key,
                "name": name,
                "summary": self.request.get("summary"),
                "notes": self.request.get("notes"),
                "empty_name": empty_name,
                "svg_width": svg_width,
                "svg_height": svg_height,
            }
            self.response.out.write(template.render("templates/supercompiler.html", template_values))
            return
        author = models.get_author_for_user(user)
        models.add_program_for_user(
            author.key(),
            name=self.request.get("name"),
            summary=self.request.get("summary"),
            code=self.request.get("code"),
            goal=self.request.get("goal"),
            notes=self.request.get("notes"),
            scp_code=validationResult.residualCode,
            svg_tree=validationResult.svgTree,
        )
        self.redirect("/")
Beispiel #3
0
 def post(self):
     code = self.request.get('code')
     goal = self.request.get('goal')
     
     validationResult = supercompileProgram(code, goal)
     if validationResult.status == UNKNOWN_FUNCTION:
         self.display_errors(no_f_function=True)
         return
     elif validationResult.status == PARSE_ERROR:
         self.display_errors(code_error=validationResult.message, code_line=validationResult.code_line)
         return
     action = self.request.get('action')
     
     user = users.get_current_user()
     scp_code = validationResult.residualCode
     svg_tree = validationResult.svgTree
     svg_xml = minidom.parseString(svg_tree)
     svg_width = svg_xml.documentElement.getAttribute('width')
     svg_height = svg_xml.documentElement.getAttribute('height')
     name = self.request.get('name').strip()
     empty_name = name == ''
     if action == 'Supercompile' or empty_name:
         key = uuid.uuid1().hex
         memcache.set(key, svg_tree, time=60)
         template_values = {
                            'user': users.get_current_user(),
                            'sign_in': users.create_login_url(self.request.uri),
                            'sign_out': users.create_logout_url(self.request.uri),
                            'code':code,
                            'goal':goal,
                            'scp_code':scp_code,
                            'key':key,
                            'name':name,
                            'summary':self.request.get('summary'),
                            'notes':self.request.get('notes'),
                            'empty_name':empty_name,
                            'svg_width': svg_width, 'svg_height': svg_height
                            }
         self.response.out.write(template.render('templates/supercompiler.html', template_values))
         return
     author = models.get_author_for_user(user)
     models.add_program_for_user(author.key(), name=self.request.get('name'), summary=self.request.get('summary'), 
                                 code=self.request.get('code'), goal=self.request.get('goal'), 
                                 notes=self.request.get('notes'), scp_code=validationResult.residualCode, 
                                 svg_tree=validationResult.svgTree)
     self.redirect('/')
Beispiel #4
0
 def get(self):
     user = users.get_current_user()
     if not user:
         self.redirect(users.create_login_url(self.request.uri))
         return
     order = self.request.get('order')
     if order not in ['name', '-name', 'date', '-date', 'summary', '-summary', 'modified', '-modified']:
         order = '-modified'
     author = models.get_author_for_user(user)
     programs = models.Program.all().ancestor(author).order(order)
     template_values = {
                     'order': order,   
                     'programs': programs,
                     'user': users.get_current_user(),
                     'sign_in': users.create_login_url(self.request.uri),
                     'sign_out': users.create_logout_url(self.request.host_url),
                     'author':author
                     }
     self.response.out.write(template.render('templates/mine.html', template_values))
Beispiel #5
0
 def get(self):
     user = users.get_current_user()
     if not user:
         self.redirect(users.create_login_url(self.request.uri))
         return
     order = self.request.get("order")
     if order not in ["name", "-name", "date", "-date", "summary", "-summary", "modified", "-modified"]:
         order = "-modified"
     author = models.get_author_for_user(user)
     programs = models.Program.all().ancestor(author).order(order)
     template_values = {
         "order": order,
         "programs": programs,
         "user": users.get_current_user(),
         "sign_in": users.create_login_url(self.request.uri),
         "sign_out": users.create_logout_url(self.request.host_url),
         "author": author,
     }
     self.response.out.write(template.render("templates/mine.html", template_values))
Beispiel #6
0
 def post(self):
     key_name = self.request.get('key')
     action = self.request.get('action')
     if action == 'Delete':
         comment_key = self.request.get('comment_key')
         comment = models.Comment.get(db.Key(comment_key))
         comment.delete()
         self.redirect('/view?key=' + key_name)
         return
     try:
         program = models.Program.get(db.Key(key_name))
         if program:
             comment_text = self.request.get('comment')
             user = users.get_current_user()
             author = models.get_author_for_user(user)
             comment = models.Comment(program = program, author = author, text = comment_text)
             comment.put()
             self.redirect('/view?key=' + key_name)
     except db.BadKeyError:
         self.redirect('/')
Beispiel #7
0
 def post(self):
     key_name = self.request.get("key")
     action = self.request.get("action")
     if action == "Delete":
         comment_key = self.request.get("comment_key")
         comment = models.Comment.get(db.Key(comment_key))
         comment.delete()
         self.redirect("/view?key=" + key_name)
         return
     try:
         program = models.Program.get(db.Key(key_name))
         if program:
             comment_text = self.request.get("comment")
             user = users.get_current_user()
             author = models.get_author_for_user(user)
             comment = models.Comment(program=program, author=author, text=comment_text)
             comment.put()
             self.redirect("/view?key=" + key_name)
     except db.BadKeyError:
         self.redirect("/")
Beispiel #8
0
 def post(self):
     key_name = self.request.get('key')
     action = self.request.get('action')
     if action == 'Delete':
         comment_key = self.request.get('comment_key')
         comment = models.Comment.get(db.Key(comment_key))
         comment.delete()
         self.redirect('/view?key=' + key_name)
         return
     try:
         program = models.Program.get(db.Key(key_name))
         if program:
             comment_text = self.request.get('comment')
             user = users.get_current_user()
             author = models.get_author_for_user(user)
             comment = models.Comment(program=program,
                                      author=author,
                                      text=comment_text)
             comment.put()
             self.redirect('/view?key=' + key_name)
     except db.BadKeyError:
         self.redirect('/')
Beispiel #9
0
 def get(self):
     user = users.get_current_user()
     if not user:
         self.redirect(users.create_login_url(self.request.uri))
         return
     order = self.request.get('order')
     if order not in [
             'name', '-name', 'date', '-date', 'summary', '-summary',
             'modified', '-modified'
     ]:
         order = '-modified'
     author = models.get_author_for_user(user)
     programs = models.Program.all().ancestor(author).order(order)
     template_values = {
         'order': order,
         'programs': programs,
         'user': users.get_current_user(),
         'sign_in': users.create_login_url(self.request.uri),
         'sign_out': users.create_logout_url(self.request.host_url),
         'author': author
     }
     self.response.out.write(
         template.render('templates/mine.html', template_values))