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'))
Пример #2
0
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)
Пример #3
0
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:
    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)
Пример #5
0
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)
Пример #8
0
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)
Пример #9
0
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)
Пример #10
0
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})
Пример #13
0
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})
Пример #14
0
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})
Пример #15
0
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()})
Пример #16
0
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()})
Пример #18
0
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)
Пример #20
0
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 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})
Пример #22
0
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
    })
Пример #23
0
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})
Пример #24
0
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
Пример #26
0
  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:
Пример #27
0
def page_list(request):
  """List all pages."""
  return utility.respond(request, 'sitemap')
Пример #28
0
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')
Пример #31
0
def index(request):
  """Show the root administrative page."""
  return utility.respond(request, 'admin/index')
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})
Пример #33
0
def get_help(request):
  """Return a help page for the site maintainer."""
  return utility.respond(request, 'admin/help')
Пример #34
0
    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