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))
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))
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))
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))
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))
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))
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))
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))