Blame page/user.py

b838e2
b838e2
import exception
572081
from generator.form import Form
b838e2
e5b0ac
from page.page import Page
e5b0ac
from page.repo import RepoPage, RepoCreatePage, RepoListPage
e5b0ac
b838e2
b838e2
class UserCreatePage(Page):
b838e2
  def process(self, request, path, prevpath):
b838e2
    if path:
b838e2
      raise exception.HttpNotFound()
b838e2
    if not request.model.users.can_create():
b838e2
      raise exception.HttpNotFound()
b838e2
    answer = request.answer
572081
    
572081
    answer.add_uipath_entry( answer.t('Create user'), prevpath )
572081
    
572081
    form = Form(request)
572081
    form.begin('', 'user.create')
572081
    form.add_input('login:', 'login', 'text')
572081
    form.add_input('password:', 'password', 'password', '')
572081
    form.add_input('retry password:', 'passwordretry', 'password', '')
572081
    form.add_input('name:', 'name', 'text')
572081
    form.add_submit()
572081
    form.end()
572081
    answer.content += form.content
572081
b838e2
    return answer.complete_content()
b838e2
b838e2
b838e2
class UserPage(Page):
b838e2
  def __init__(self):
b838e2
    super().__init__()
b838e2
    self.profile = UserProfilePage()
b838e2
    
b838e2
  def process(self, request, path, prevpath):
b838e2
    if not path:
b838e2
      raise exception.HttpNotFound()
b838e2
b838e2
    user = None
572081
    user = request.model.users.get_by_login(str(path[0]))
b838e2
    if not user:
b838e2
      raise exception.HttpNotFound()
b838e2
572081
    answer = request.answer
572081
572081
    answer.objects['user'] = user
572081
    answer.add_uipath_entry( user.name, prevpath + [user.login] )
b838e2
    return self.profile.sub_process(request, path, prevpath)
b838e2
b838e2
b838e2
class UserProfilePage(Page):
b838e2
  def __init__(self):
b838e2
    super().__init__()
b838e2
    self.edit = UserUpdatePage()
b838e2
    self.delete = UserDeletePage()
e5b0ac
    self.repo = RepoPage()
e5b0ac
    self.repo_create = RepoCreatePage()
e5b0ac
    self.repos = RepoListPage()
b838e2
b838e2
  def process(self, request, path, prevpath):
b838e2
    user = request.answer.objects['user']
b838e2
    answer = request.answer
b838e2
b838e2
    if path:
b838e2
      if path[0] == 'edit':
b838e2
        return self.edit.sub_process(request, path, prevpath)
b838e2
      if path[0] == 'delete':
b838e2
        return self.delete.sub_process(request, path, prevpath)
e5b0ac
      if path[0] == 'repo':
e5b0ac
        return self.repo.sub_process(request, path, prevpath)
e5b0ac
      if path[0] == 'repo_create':
e5b0ac
        return self.repo_create.sub_process(request, path, prevpath)
e5b0ac
      if path[0] == 'repos':
e5b0ac
        return self.repos.sub_process(request, path, prevpath)
b838e2
      raise exception.HttpNotFound()
b838e2
b838e2
    answer.content += '

' + answer.e(user.login) + '

\n'
b838e2
    answer.content += '

' + answer.e(user.name) + '

\n'
b838e2
    if user.superuser:
b838e2
      answer.content += '

' + answer.te('Site admin') + '

\n'
572081
    if user.can_update():
b838e2
      answer.content += '

' + self.make_link(answer, prevpath + ['edit'], 'Edit user') + '

\n'
e5b0ac
e5b0ac
    answer.content += '

' + self.make_link(answer, prevpath + ['repos'], 'Repositories') + '

\n'
e5b0ac
b838e2
    return answer.complete_content()
b838e2
b838e2
b838e2
class UserUpdatePage(Page):
b838e2
  def process(self, request, path, prevpath):
b838e2
    if path:
b838e2
      raise exception.HttpNotFound()
b838e2
b838e2
    answer = request.answer
b838e2
    user = answer.objects['user']
b838e2
    if not user.can_update():
b838e2
      raise exception.HttpNotFound()
b838e2
    
572081
    answer.add_uipath_entry( answer.t('Edit user'), prevpath )
572081
572081
    form = Form(request)
572081
    form.begin('Profile', 'user.update')
572081
    form.add_hidden('user_id', user.id)
572081
    form.add_input('name:', 'name', 'name', user.name)
572081
    form.add_submit()
572081
    form.end()
572081
    answer.content += form.content
b838e2
    
572081
    form = Form(request)
572081
    form.begin('Change password', 'user.setpassword')
572081
    form.add_hidden('user_id', user.id)
b838e2
    if user.id == request.model.myrights.user_id:
572081
      form.add_input('old password:', 'oldpassword', 'password', '')
572081
    form.add_input('new password:', 'newpassword', 'password', '')
572081
    form.add_input('new password retry:', 'newpasswordretry', 'password', '')
572081
    form.add_submit()
572081
    form.end()
572081
    answer.content += form.content
b838e2
    
b838e2
    if user.id != request.model.myrights.user_id and not user.superuser is None:
572081
      form = Form(request)
572081
      form.begin('Global rights', 'user.setsuperuser')
572081
      form.add_hidden('user_id', user.id)
572081
      form.add_checkbox('site admin:', 'superuser', user.superuser)
572081
      form.add_submit()
572081
      form.end()
572081
      answer.content += form.content
b838e2
b838e2
    if user.can_delete() and prevpath:
572081
      url = request.get_urlpath_escaped(prevpath[:-1] + ['delete'])
572081
      form = Form(request)
572081
      form.content += '<form action="' + url + '" method="GET">' + form.GROUP_BEGIN</form>
572081
      form.content += form.title('Deletion')
572081
      form.add_submit('Delete user')
572081
      form.end()
572081
      answer.content += form.content
b838e2
b838e2
    return answer.complete_content()
b838e2
b838e2
b838e2
class UserDeletePage(Page):
b838e2
  def process(self, request, path, prevpath):
b838e2
    if path:
b838e2
      raise exception.HttpNotFound()
b838e2
b838e2
    answer = request.answer
b838e2
    user = answer.objects['user']
b838e2
    if not user.can_delete():
b838e2
      raise exception.HttpNotFound()
b838e2
572081
    answer.add_uipath_entry( answer.t('Delete user'), prevpath )
572081
572081
    form = Form(request)
572081
    form.begin('', 'user.delete')
572081
    form.add_hidden('user_id', user.id)
572081
    form.content += '

' + answer.e(user.login) + '

\n'
572081
    form.content += '

' + answer.e(user.name) + '

\n'
572081
    form.content += '

' + answer.te('Do you really want do delete user?') + '

\n'
b838e2
    if user.id == request.model.myrights.user_id:
572081
      form.add_input('password to delete your account:', 'password', 'password', '')
572081
    form.add_submit('Confirm delete')
572081
    form.end()
572081
    answer.content += form.content
572081
b838e2
    return answer.complete_content()
b838e2
b838e2
b838e2
class UserListPage(Page):
b838e2
  def process(self, request, path, prevpath):
b838e2
    if path:
b838e2
      raise exception.HttpNotFound()
b838e2
    if not prevpath:
b838e2
      raise exception.HttpNotFound()
b838e2
    if not request.model.users.can_list():
b838e2
      raise exception.HttpNotFound()
b838e2
    
b838e2
    users = request.model.users.get_list()
b838e2
    
b838e2
    answer = request.answer
572081
    answer.add_uipath_entry( answer.t('Users list'), prevpath )
572081
b838e2
    for user in users:
572081
      url = request.get_urlpath_escaped(prevpath[:-1] + ['user', str(user.login)])
b838e2
      answer.content += '

' \

b838e2
                     + answer.e(user.login) + ' ' \
b838e2
                     + answer.e(user.name) + '

\n'
b838e2
b838e2
    if request.model.users.can_create():
b838e2
      answer.content += '

' + self.make_link(answer, prevpath[:-1] + ['user_create'], 'Create user') + '

\n'
b838e2
b838e2
    return answer.complete_content()
b838e2