Example #1
0
 def action_edit(self):
     if not self.section.path_params or len(self.section.path_params) != 1:
         raise Exception('NotFound')
     message = ''
     theme = self.get_theme(self.section.path_params[0])
     if self.section.handler.request.get('submit'):
         new_namespace = self.section.handler.request.get('namespace')
         if not new_namespace:
             message = '<div class="status error">Namespace is required</div>'
         elif new_namespace != theme.namespace and new_namespace in self.theme_namespaces:
             message = '<div class="status error">%s is already a custom theme namespace</div>' % new_namespace
         elif new_namespace != theme.namespace and is_local_theme_namespace(new_namespace):
             message = '<div class="status error">"%s" is a local theme namespace</div>' % new_namespace
         elif new_namespace != theme.namespace:
             for t in theme.body_template_names:
                 section.rename_theme_namespace_template(theme.namespace + '/' + t, new_namespace + '/' + t)
             self.theme_namespaces[self.theme_namespaces.index(theme.namespace)] = new_namespace
             self.update()
             theme.namespace = new_namespace
             theme.put()
             cache.flush_all() # Flush all cached resources for this theme which is important for sections where it is active
             raise Exception('Redirect', self.section.action_redirect_path)
         else:
             raise Exception('Redirect', self.section.action_redirect_path)
     f = form(self.section, self.section.full_path)
     f.add_control(control(self.section, 'text', 'namespace', theme.namespace))
     f.add_control(control(self.section, 'submit', 'submit', 'Submit'))
     return '%s<h2>Edit namespace</h2>%s' % (message, unicode(f))
Example #2
0
 def action_edit(self):
     if not self.section.path_params or len(self.section.path_params) != 1:
         raise Exception('NotFound')
     message = ''
     theme = self.get_theme(self.section.path_params[0])
     if self.section.handler.request.get('submit'):
         new_namespace = self.section.handler.request.get('namespace')
         if not new_namespace:
             message = '<div class="status error">Namespace is required</div>'
         elif new_namespace != theme.namespace and new_namespace in self.theme_namespaces:
             message = '<div class="status error">%s is already a custom theme namespace</div>' % new_namespace
         elif new_namespace != theme.namespace and is_local_theme_namespace(
                 new_namespace):
             message = '<div class="status error">"%s" is a local theme namespace</div>' % new_namespace
         elif new_namespace != theme.namespace:
             for t in theme.body_template_names:
                 section.rename_theme_namespace_template(
                     theme.namespace + '/' + t, new_namespace + '/' + t)
             self.theme_namespaces[self.theme_namespaces.index(
                 theme.namespace)] = new_namespace
             self.update()
             theme.namespace = new_namespace
             theme.put()
             cache.flush_all(
             )  # Flush all cached resources for this theme which is important for sections where it is active
             raise Exception('Redirect', self.section.action_redirect_path)
         else:
             raise Exception('Redirect', self.section.action_redirect_path)
     f = form(self.section, self.section.full_path)
     f.add_control(
         control(self.section, 'text', 'namespace', theme.namespace))
     f.add_control(control(self.section, 'submit', 'submit', 'Submit'))
     return '%s<h2>Edit namespace</h2>%s' % (message, unicode(f))
Example #3
0
 def delete_text_resource(self, theme, filename, filenames, contents):
     if self.section.handler.request.get('submit'):
         index = filenames.index(filename)
         del filenames[index]
         del contents[index]
         theme.put()
         cache.flush_all() # Flush all cached resources for this theme which is important for sections where it is active
         raise Exception('Redirect', self.section.action_redirect_path)
     f = form(self.section, self.section.full_path)
     f.add_control(control(self.section, 'submit', 'submit', 'Confirm'))
     return '<div class="status warning">Are you sure you wish to delete "%s"?</div>%s' % (filename, unicode(f))
Example #4
0
 def delete_text_resource(self, theme, filename, filenames, contents):
     if self.section.handler.request.get('submit'):
         index = filenames.index(filename)
         del filenames[index]
         del contents[index]
         theme.put()
         cache.flush_all(
         )  # Flush all cached resources for this theme which is important for sections where it is active
         raise Exception('Redirect', self.section.action_redirect_path)
     f = form(self.section, self.section.full_path)
     f.add_control(control(self.section, 'submit', 'submit', 'Confirm'))
     return '<div class="status warning">Are you sure you wish to delete "%s"?</div>%s' % (
         filename, unicode(f))
Example #5
0
 def action_delete(self):
     if not self.section.path_params or len(self.section.path_params) != 1:
         raise Exception('NotFound')
     theme = self.get_theme(self.section.path_params[0])
     if self.section.handler.request.get('submit'):
         self.theme_keys.remove(str(theme.key()))
         self.theme_namespaces.remove(theme.namespace)
         theme.delete()
         self.update()
         cache.flush_all() # Flush all cached resources for this theme which is important for sections where it is active
         raise Exception('Redirect', self.section.action_redirect_path)
     f = form(self.section, self.section.full_path)
     f.add_control(control(self.section, 'submit', 'submit', 'Confirm'))
     return '<div class="status warning">Are you sure you wish to delete theme "%s" and all associated resources?</div>%s' % (theme.namespace, unicode(f))
Example #6
0
 def edit_text_resource(self,
                        theme,
                        filename,
                        filenames,
                        contents,
                        validate_body_template=False):
     if filename:
         index = filenames.index(filename)
         content = contents[index]
     else:
         index = len(filenames) if filenames else 0
         content = ''
     message = ''
     if self.section.handler.request.get('submit'):
         new_filename = self.section.handler.request.get(
             'filename').replace('/', '')
         content = self.section.handler.request.get('content')
         if not new_filename:
             message = '<div class="status error">Filename is required</div>'
         elif filename != new_filename and new_filename in filenames:
             message = '<div class="status error">Filename already exists</div>'
         else:
             try:
                 if validate_body_template:
                     content = validated_body_template(content)
             except Exception as inst:
                 message = '<div class="status error">%s</div>' % inst[0]
             else:
                 if filename:
                     filenames[index] = new_filename
                     contents[index] = content
                 else:
                     filenames.append(new_filename)
                     contents.append(content)
                 theme.put()
                 cache.flush_all(
                 )  # Flush all cached resources for this theme which is important for sections where it is active
                 raise Exception('Redirect',
                                 self.section.action_redirect_path)
     f = form(self.section, self.section.full_path)
     f.add_control(
         control(self.section, 'text', 'filename', filename, 'Filename'))
     f.add_control(
         textareacontrol(self.section, 'content', content, 'Content', 90,
                         50))
     f.add_control(control(self.section, 'submit', 'submit', 'Submit'))
     return '%s<h1>Add</h1>%s' % (message, unicode(f))
Example #7
0
 def action_delete(self):
     if not self.section.path_params or len(self.section.path_params) != 1:
         raise Exception('NotFound')
     theme = self.get_theme(self.section.path_params[0])
     if self.section.handler.request.get('submit'):
         for key in theme.image_keys:
             cache.delete(CACHE_KEY_PREPEND + str(key))
             BlobInfo.get(key).delete()
         self.theme_keys.remove(theme.key)
         self.theme_namespaces.remove(theme.namespace)
         theme.key.delete()
         self.update()
         cache.flush_all(
         )  # Flush all cached resources for this theme which is important for sections where it is active
         raise Exception('Redirect', self.section.action_redirect_path)
     f = form(self.section, self.section.full_path)
     f.add_control(control(self.section, 'submit', 'submit', 'Confirm'))
     return '<div class="status warning">Are you sure you wish to delete theme "%s" and all associated resources?</div>%s' % (
         theme.namespace, unicode(f))
Example #8
0
 def edit_text_resource(self, theme, filename, filenames, contents, validate_body_template=False):
     if filename:
         index = filenames.index(filename)
         content = contents[index]
     else:
         index = len(filenames) if filenames else 0
         content = ''
     message = ''
     if self.section.handler.request.get('submit'):
         new_filename = self.section.handler.request.get('filename').replace('/', '')
         content = self.section.handler.request.get('content')
         if not new_filename:
             message = '<div class="status error">Filename is required</div>'
         elif filename != new_filename and new_filename in filenames:
             message = '<div class="status error">Filename already exists</div>'
         else:
             try:
                 if validate_body_template:
                     content = validated_body_template(content)
             except Exception as inst:
                 message = '<div class="status error">%s</div>' % inst[0]
             else:
                 if filename:
                     filenames[index] = new_filename
                     contents[index] = content
                 else:
                     filenames.append(new_filename)
                     contents.append(content)
                 theme.put()
                 cache.flush_all() # Flush all cached resources for this theme which is important for sections where it is active
                 raise Exception('Redirect', self.section.action_redirect_path)
     f = form(self.section, self.section.full_path)
     f.add_control(control(self.section, 'text', 'filename', filename, 'Filename'))
     f.add_control(textareacontrol(self.section, 'content', content, 'Content', 90, 50))
     f.add_control(control(self.section, 'submit', 'submit', 'Submit'))
     return '%s<h1>Add</h1>%s' % (message, unicode(f))