def edit_sidebar(request): """Renders and processes a form to edit the YAML definition of the sidebar. Args: request: The request object Returns: A Django HttpResponse object. """ sidebar = models.Sidebar.load() if request.POST and 'yaml' in request.POST: yaml_data = request.POST['yaml'] if not sidebar: sidebar = models.Sidebar(yaml=yaml_data) else: sidebar.yaml = yaml_data error_message = None try: sidebar.put() except yaml.YAMLError: error_message = 'Invalid YAML' except KeyError, error: error_message = 'Invalid YAML, missing key %s' % error if error_message: return utility.respond(request, 'admin/edit_sidebar', {'yaml': yaml_data, 'error_message': error_message}) return http.HttpResponseRedirect(urlresolvers.reverse('views.admin.index'))
def bulk_edit_users(request): """Renders and processes a form to edit UserProfiles with a csv format. Args: request: The request object Returns: A Django HttpResponse object. """ if not request.POST: return utility.respond(request, 'admin/bulk_edit_users', {'title': 'Bulk user upload form'}) data = request.POST['users_text'] if data and data[-1] != '\n': data += '\n' if request.FILES and 'users_file' in request.FILES: data += request.FILES['users_file']['content'] if 'complete' in request.POST: for profile in models.UserProfile.all(): db.delete(profile) csv_buffer = StringIO.StringIO(data) for email, is_superuser in csv.reader(csv_buffer, skipinitialspace=True): if not models.UserProfile.update(email, is_superuser == '1'): logging.warning('Could not update user %r' % email) url = urlresolvers.reverse('views.admin.index') return http.HttpResponseRedirect(url)
def bulk_edit_users(request): """Renders and processes a form to edit UserProfiles with a csv format. Args: request: The request object Returns: A Django HttpResponse object. """ if not request.POST: title = translation.ugettext('Bulk user upload form') return utility.respond(request, 'admin/bulk_edit_users', {'title': title}) data = request.POST['users_text'] if data and data[-1] != '\n': data += '\n' if request.FILES and 'users_file' in request.FILES: data += request.FILES['users_file']['content'] if 'complete' in request.POST: for profile in models.UserProfile.all(): db.delete(profile) csv_buffer = StringIO.StringIO(data) for email, is_superuser in csv.reader(csv_buffer, skipinitialspace=True): if not models.UserProfile.update(email, is_superuser == '1'): logging.warning('Could not update user %r' % email) url = urlresolvers.reverse('views.admin.index') return http.HttpResponseRedirect(url)
def send_page(page, request): """Sends a given page to a user if they have access rights. Args: page: The page to send to the user request: The Django request object Returns: A Django HttpResponse containing the requested page, or an error message. """ profile = request.profile global_access = page.acl.global_read if not global_access: if profile is None: return http.HttpResponseRedirect(users.create_login_url(request.path)) if not page.user_can_read(profile): logging.warning("User %s made an invalid attempt to access page %s" % (profile.email, page.name)) return utility.forbidden(request) files = page.attached_files() files = [file_obj for file_obj in files if not file_obj.is_hidden] for item in files: ext = item.name.split(".")[-1] item.icon = "/static/images/fileicons/%s.png" % ext is_editor = page.user_can_write(profile) if configuration.SYSTEM_THEME_NAME: template = "themes/%s/page.html" % (configuration.SYSTEM_THEME_NAME) return utility.respond(request, template, {"page": page, "files": files, "is_editor": is_editor})
def edit_user(request, email): """Renders and processes a form to edit a UserProfile. Args: request: The request object email: The user's email Returns: A Django HttpResponse object. """ if not email: if request.POST and request.POST['email']: url = urlresolvers.reverse('views.admin.edit_user', args=[request.POST['email']]) return http.HttpResponseRedirect(url) else: title = translation.ugettext('Edit user') return utility.respond(request, 'admin/edit_user', {'title': title}) profile = models.UserProfile.load(email) if not profile: return utility.page_not_found(request) title = translation.ugettext('Edit user: %(email)s') % {'email': email} return utility.edit_instance(request, models.UserProfile, forms.UserEditForm, 'admin/edit_user', urlresolvers.reverse('views.admin.index'), profile.key().id(), title=title, profile=profile)
def edit_page(request, page_id, parent_id=None): """Generates and processes the form to create or edit a specified page. Args: request: The request object page_id: ID of the page. parent_id: ID of the parent page Returns: A Django HttpResponse object. """ page = None files = None if page_id: page = models.Page.get_by_id(int(page_id)) if not page: return utility.page_not_found( request, 'No page exists with id %r.' % page_id) if not page.user_can_write(request.profile): return utility.forbidden(request) files = list( models.FileStore.all().filter('parent_page =', page).order('name')) for item in files: ext = item.name.lower().split('.')[-1] item.icon = '/static/images/fileicons/%s.png' % ext acl_data = None if page: all_group_keys = [ g.key() for g in models.UserGroup.all().order('name')] groups_without_write_keys = [ k for k in all_group_keys if k not in page.acl.group_write] groups_without_read_keys = [ k for k in all_group_keys if k not in page.acl.group_read] acl_data = { 'groups_without_write': models.UserGroup.get(groups_without_write_keys), 'groups_without_read': models.UserGroup.get(groups_without_read_keys), 'group_write': models.UserGroup.get(page.acl.group_write), 'group_read': models.UserGroup.get(page.acl.group_read), 'user_write': models.UserProfile.get(page.acl.user_write), 'user_read': models.UserProfile.get(page.acl.user_read), 'inherits_acl': page.inherits_acl(), } if not request.POST: form = forms.PageEditForm(data=None, instance=page) return utility.respond(request, 'admin/edit_page', {'form': form, 'page': page, 'files': files, 'acl_data': acl_data, 'parent_id': parent_id}) form = forms.PageEditForm(data=request.POST, instance=page) if not form.errors: try: page = form.save(commit=False) except ValueError, err: form.errors['__all__'] = unicode(err)
def edit_user(request, email): """Renders and processes a form to edit a UserProfile. Args: request: The request object email: The user's email Returns: A Django HttpResponse object. """ if not email: if request.POST and request.POST['email']: url = urlresolvers.reverse('views.admin.edit_user', args=[request.POST['email']]) return http.HttpResponseRedirect(url) else: return utility.respond(request, 'admin/edit_user', {'title': 'Edit user'}) profile = models.UserProfile.load(email) if not profile: return utility.page_not_found(request) title = 'Edit user: '******'admin/edit_user', urlresolvers.reverse('views.admin.index'), profile.key().id(), title=title, profile=profile)
def bulk_edit_users(request): """Renders and processes a form to edit UserProfiles with a csv format. Args: request: The request object Returns: A Django HttpResponse object. """ if not request.POST: return utility.respond(request, "admin/bulk_edit_users", {"title": "Bulk user upload form"}) data = request.POST["users_text"] if data and data[-1] != "\n": data += "\n" if request.FILES and "users_file" in request.FILES: data += request.FILES["users_file"]["content"] if "complete" in request.POST: for profile in models.UserProfile.all(): db.delete(profile) csv_buffer = StringIO.StringIO(data) for email, is_superuser in csv.reader(csv_buffer, skipinitialspace=True): if not models.UserProfile.update(email, is_superuser == "1"): logging.warning("Could not update user %r" % email) url = urlresolvers.reverse("views.admin.index") return http.HttpResponseRedirect(url)
def edit_page(request, page_id, parent_id=None): """Generates and processes the form to create or edit a specified page. Args: request: The request object page_id: ID of the page. parent_id: ID of the parent page Returns: A Django HttpResponse object. """ page = None files = None if page_id: page = models.Page.get_by_id(int(page_id)) if not page: return utility.page_not_found(request, "No page exists with id %r." % page_id) if not page.user_can_write(request.profile): return utility.forbidden(request) files = list(models.FileStore.all().filter("parent_page =", page).order("name")) for item in files: item.icon = "/static/images/fileicons/%s.png" % item.name.split(".")[-1] acl_data = None if page: all_group_keys = [g.key() for g in models.UserGroup.all().order("name")] groups_without_write_keys = [k for k in all_group_keys if k not in page.acl.group_write] groups_without_read_keys = [k for k in all_group_keys if k not in page.acl.group_read] acl_data = { "groups_without_write": models.UserGroup.get(groups_without_write_keys), "groups_without_read": models.UserGroup.get(groups_without_read_keys), "group_write": models.UserGroup.get(page.acl.group_write), "group_read": models.UserGroup.get(page.acl.group_read), "user_write": models.UserProfile.get(page.acl.user_write), "user_read": models.UserProfile.get(page.acl.user_read), "inherits_acl": page.inherits_acl(), } if not request.POST: form = forms.PageEditForm(data=None, instance=page) return utility.respond( request, "admin/edit_page", {"form": form, "page": page, "files": files, "acl_data": acl_data} ) form = forms.PageEditForm(data=request.POST, instance=page) if not form.errors: try: page = form.save(commit=False) except ValueError, err: form.errors["__all__"] = unicode(err)
def list_groups(request): """Lists all the UserGroups in the DB for editing. Args: request: The request object Returns: A Django HttpResponse object. """ groups = models.UserGroup.all().order('name') return utility.respond(request, 'admin/list_groups', {'groups': groups})
def filter_users(request): """Lists all the UserGroups in the DB to filter the user list. Args: request: The request object Returns: A Django HttpResponse object. """ groups = models.UserGroup.all().order('name') return utility.respond(request, 'admin/filter_users', {'groups': groups})
def display_memcache_info(request): """Displays all of the information about the applications memcache. Args: request: The request object Returns: A Django HttpResponse object. """ # pylint: disable-msg=E1101 return utility.respond(request, "admin/memcache_info", {"memcache_info": memcache.get_stats()})
def list_templates(request): """Lists all the templates in the DB for editing. Args: request: The request object Returns: A Django HttpResponse object. """ templates = models.Template.all().order("name") return utility.respond(request, "admin/list_templates", {"templates": templates})
def display_memcache_info(request): """Displays all of the information about the applications memcache. Args: request: The request object Returns: A Django HttpResponse object. """ # pylint: disable-msg=E1101 return utility.respond(request, 'admin/memcache_info', {'memcache_info': memcache.get_stats()})
def send_page(page, request): """Sends a given page to a user if they have access rights. Args: page: The page to send to the user request: The Django request object Returns: A Django HttpResponse containing the requested page, or an error message. """ profile = request.profile global_access = page.acl.global_read if not global_access: if profile is None: return http.HttpResponseRedirect(users.create_login_url(request.path)) if not page.user_can_read(profile): logging.warning('User %s made an invalid attempt to access page %s' % (profile.email, page.name)) return utility.forbidden(request) files = page.attached_files() files = [file_obj for file_obj in files if not file_obj.is_hidden] for item in files: ext = item.name.split('.')[-1] item.icon = '/static/images/fileicons/%s.png' % ext is_editor = page.user_can_write(profile) if page.template: page_template = template.Template(page.template.source) params = utility.set_params(request, {'page': page, 'files': files, 'is_editor': is_editor}) context = template.Context(params) return http.HttpResponse(page_template.render(context)) #mytemplate = Template(page.template.source) #return http.HttpResponse(mytemplate.render(name="jack")) else: base_html = '../templates/themes/%s/base.html' % (configuration.SYSTEM_THEME_NAME) page_html = '../templates/themes/%s/page.html' % (configuration.SYSTEM_THEME_NAME) return utility.respond(request, page_html, {'page': page, 'files': files, 'is_editor': is_editor, 'base_html': base_html})
def filebrowser(request, page_id): """File Browser for CKEditor. The File Browser simplifies including images on the page by select file from list by one-click. Args: request: The request object page_id: ID of the page that attached files are listing Returns: A Django HttpResponse object. """ if page_id: page = models.Page.get_by_id(int(page_id)) if not page: return utility.page_not_found(request) if not page.user_can_write(request.profile): return utility.forbidden(request) files = page.attached_files() if request.GET.get('Type') == 'Image': files = [item for item in files if item.name.lower().split('.')[-1] in ('jpg', 'gif', 'jpeg', 'png', 'bmp', 'webp')] if request.GET.get('Type') == 'Flash': files = [item for item in files if item.name.lower().split('.')[-1] in ('swf', 'flv')] for item in files: ext = item.name.lower().split('.')[-1] item.icon = '/static/images/fileicons/%s.png' % ext return utility.respond(request, 'admin/filebrowser', {'files': files, 'funcNum': request.GET.get('CKEditorFuncNum')}) else: return utility.page_not_found(request)
def view_group(request, group_id): """Lists all the UserProfiles in a group. Args: request: The request object group_id: Id of the group to display Returns: A Django HttpResponse object. """ users = models.UserProfile.all().order('email') if group_id: group = models.UserGroup.get_by_id(int(group_id)) if group.users: users = models.UserProfile.get(group.users) else: users = [] return utility.respond(request, 'admin/view_group', {'users': users})
def send_page(page, request): """Sends a given page to a user if they have access rights. Args: page: The page to send to the user request: The Django request object Returns: A Django HttpResponse containing the requested page, or an error message. """ profile = request.profile global_access = page.acl.global_read if not global_access: if profile is None: return http.HttpResponseRedirect( users.create_login_url(request.path)) if not page.user_can_read(profile): logging.warning( 'User %s made an invalid attempt to access page %s' % (profile.email, page.name)) return utility.forbidden(request) files = page.attached_files() files = [file_obj for file_obj in files if not file_obj.is_hidden] for item in files: ext = item.name.lower().split('.')[-1] item.icon = '/static/images/fileicons/%s.png' % ext is_editor = page.user_can_write(profile) if configuration.SYSTEM_THEME_NAME: template = 'themes/%s/page.html' % (configuration.SYSTEM_THEME_NAME) return utility.respond(request, template, { 'page': page, 'files': files, 'is_editor': is_editor })
def recently_modified(request): """Show the 10 most recently modified pages.""" pages = models.Page.all().order('modified').fetch(10) return utility.respond(request, 'admin/recently_modified', {'pages': pages})
def recently_modified(request): """Show the 10 most recently modified pages.""" pages = models.Page.all().order("modified").fetch(10) return utility.respond(request, "admin/recently_modified", {"pages": pages})
if not request.POST: form = forms.PageEditForm(data=None, instance=page) return utility.respond(request, 'admin/edit_page', {'form': form, 'page': page, 'files': files, 'acl_data': acl_data, 'parent_id': parent_id}) form = forms.PageEditForm(data=request.POST, instance=page) if not form.errors: try: page = form.save(commit=False) except ValueError, err: form.errors['__all__'] = unicode(err) if form.errors: return utility.respond(request, 'admin/edit_page', {'form': form, 'page': page, 'files': files}) page.content = request.POST['editorHtml'] if parent_id and not page.parent_page: page.parent_page = models.Page.get_by_id(int(parent_id)) page.put() return utility.edit_updated_page(page.key().id(), message_id='msgChangesSaved') def new_page(request, parent_id): """Create a new page. Args: request: The request object
if not request.POST: form = forms.PageEditForm(data=None, instance=page) return utility.respond(request, 'admin/edit_page', {'form': form, 'page': page, 'files': files, 'acl_data': acl_data}) form = forms.PageEditForm(data=request.POST, instance=page) if not form.errors: try: page = form.save(commit=False) except ValueError, err: form.errors['__all__'] = unicode(err) if form.errors: return utility.respond(request, 'admin/edit_page', {'form': form, 'page': page, 'files': files}) #page.content = request.POST['editorHtml'] page.content = unicode(request.POST['editorHtml'],'utf-8') if parent_id and not page.parent_page: page.parent_page = models.Page.get_by_id(int(parent_id)) page.put() return utility.edit_updated_page(page.key().id(), message_id='msgChangesSaved') def new_page(request, parent_id): """Create a new page. Args:
def page_list(request): """List all pages.""" return utility.respond(request, 'sitemap')
def get_help(request): """Return a help page for the site maintainer.""" return utility.respond(request, 'admin/help')
def index(request): """Show the root administrative page.""" return utility.respond(request, 'admin/index')
if not request.POST: form = forms.PageEditForm(data=None, instance=page) return utility.respond( request, "admin/edit_page", {"form": form, "page": page, "files": files, "acl_data": acl_data} ) form = forms.PageEditForm(data=request.POST, instance=page) if not form.errors: try: page = form.save(commit=False) except ValueError, err: form.errors["__all__"] = unicode(err) if form.errors: return utility.respond(request, "admin/edit_page", {"form": form, "page": page, "files": files}) page.content = request.POST["editorHtml"] if parent_id and not page.parent_page: page.parent_page = models.Page.get_by_id(int(parent_id)) page.put() return utility.edit_updated_page(page.key().id(), message_id="msgChangesSaved") def new_page(request, parent_id): """Create a new page. Args: request: The request object parent_id: Page that will be the parent of the new page