コード例 #1
0
ファイル: tests.py プロジェクト: 1ukash/horizon
    def test_update_with_keystone_can_edit_user_false(self):
        user = self.users.get(id="1")

        api.user_get(IsA(http.HttpRequest),
                     '1',
                     admin=True).AndReturn(user)
        api.tenant_list(IgnoreArg(), admin=True).AndReturn(self.tenants.list())
        api.keystone_can_edit_user().AndReturn(False)
        api.keystone_can_edit_user().AndReturn(False)
        api.user_update_tenant(IsA(http.HttpRequest),
                               user.id,
                               self.tenant.id).AndReturn(None)
        api.keystone.roles_for_user(IsA(http.HttpRequest),
                                    user.id,
                                    self.tenant.id).AndReturn(None)

        self.mox.ReplayAll()

        formData = {'method': 'UpdateUserForm',
                    'id': user.id,
                    'name': user.name,
                    'tenant_id': self.tenant.id, }

        res = self.client.post(USER_UPDATE_URL, formData)

        self.assertNoFormErrors(res)
        self.assertMessageCount(warning=1)
コード例 #2
0
    def test_update_with_keystone_can_edit_user_false(self):
        user = self.users.get(id="1")

        api.user_get(IsA(http.HttpRequest), '1', admin=True).AndReturn(user)
        api.tenant_list(IgnoreArg(), admin=True).AndReturn(self.tenants.list())
        api.keystone_can_edit_user().AndReturn(False)
        api.keystone_can_edit_user().AndReturn(False)
        api.user_update_tenant(IsA(http.HttpRequest), user.id,
                               self.tenant.id).AndReturn(None)
        api.keystone.roles_for_user(IsA(http.HttpRequest), user.id,
                                    self.tenant.id).AndReturn(None)

        self.mox.ReplayAll()

        formData = {
            'method': 'UpdateUserForm',
            'id': user.id,
            'name': user.name,
            'tenant_id': self.tenant.id,
        }

        res = self.client.post(USER_UPDATE_URL, formData)

        self.assertNoFormErrors(res)
        self.assertMessageCount(warning=1)
コード例 #3
0
ファイル: forms.py プロジェクト: liangxiaobi/chinahorizon
    def handle(self, request, data):
        failed, succeeded = [], []
        user_is_editable = api.keystone_can_edit_user()
        bill_id=data.pop('id')
        if user_is_editable:
            msg_bits = (_('name'), _('email'))
            try:
                new_bill = bills(id=bill_id,
                                 name=data['name'],
                             region=data['region'],
                             payment_type=data['payment_type'],
                             order_unit=data['order_unit'],
                             order_size=data['order_size'],
                             price=data['price'],
                             enabled=data['enabled']
                             )
                new_bill.save()
                succeeded.extend(msg_bits)
            except:
                failed.append(msg_bits)
                exceptions.handle(request, _('Unable to create bill.'))

        if succeeded:
            messages.success(request, _('Bill has been updated successfully.'))
        if failed:
            failed = map(force_unicode, failed)
            messages.error(request,
                           _('Unable to update %(attributes)s for the bill.')
                             % {"attributes": ", ".join(failed)})
        return True
コード例 #4
0
ファイル: forms.py プロジェクト: liangxiaobi/chinahorizon
    def handle(self, request, data):
        failed, succeeded = [], []
        user_is_editable = api.keystone_can_edit_user()
        bill_id = data.pop('id')
        if user_is_editable:
            msg_bits = (_('name'), _('email'))
            try:
                new_bill = bills(id=bill_id,
                                 name=data['name'],
                                 region=data['region'],
                                 payment_type=data['payment_type'],
                                 order_unit=data['order_unit'],
                                 order_size=data['order_size'],
                                 price=data['price'],
                                 enabled=data['enabled'])
                new_bill.save()
                succeeded.extend(msg_bits)
            except:
                failed.append(msg_bits)
                exceptions.handle(request, _('Unable to create bill.'))

        if succeeded:
            messages.success(request, _('Bill has been updated successfully.'))
        if failed:
            failed = map(force_unicode, failed)
            messages.error(
                request,
                _('Unable to update %(attributes)s for the bill.') %
                {"attributes": ", ".join(failed)})
        return True
コード例 #5
0
ファイル: forms.py プロジェクト: liangxiaobi/chinahorizon
    def __init__(self, request, *args, **kwargs):
        super(UpdateBillForm, self).__init__(request, *args, **kwargs)

        if api.keystone_can_edit_user() is False:
            for field in ('name', 'Region', 'payment_type', 'order_unit',
                          'order_size', 'price'):
                self.fields.pop(field)
コード例 #6
0
ファイル: forms.py プロジェクト: liangxiaobi/chinahorizon
    def handle(self, request, data):
        failed, succeeded = [], []
        user_is_editable = api.keystone_can_edit_user()
        user_id = data.pop('id')
        if user_is_editable:
            # Update user details
            msg_bits = (_('username'), _('email'))
            try:
                new_user = bill_users.objects.filter(id=user_id).update(
                    username=data['username'],
                    email=data['email'],
                    company=data['company'],
                    real_name=data['real_name'],
                    ID_Card=data['ID_Card'],
                    mobile=data['mobile'],
                    qq=data['qq'],
                    enabled=data['enabled'],
                )
                succeeded.extend(msg_bits)
            except:
                failed.extend(msg_bits)
                exceptions.handle(request, ignore=True)

        if succeeded:
            messages.success(request, _('User has been updated successfully.'))
        if failed:
            failed = map(force_unicode, failed)
            messages.error(
                request,
                _('Unable to update %(attributes)s for the user.') %
                {"attributes": ", ".join(failed)})
        return True
コード例 #7
0
ファイル: forms.py プロジェクト: liangxiaobi/chinahorizon
    def handle(self, request, data):
        failed, succeeded = [], []
        user_is_editable = api.keystone_can_edit_user()
        user = data.pop('id')
        tenant = data.pop('tenant_id')

        if user_is_editable:
            password = data.pop('password')
            data.pop('confirm_password', None)

        if user_is_editable:
            # Update user details
            msg_bits = (_('name'), _('email'))
            try:
                api.keystone.user_update(request, user, **data)
                succeeded.extend(msg_bits)
            except:
                failed.extend(msg_bits)
                exceptions.handle(request, ignore=True)

        # Update default tenant
        msg_bits = (_('primary project'), )
        try:
            api.user_update_tenant(request, user, tenant)
            succeeded.extend(msg_bits)
        except:
            failed.append(msg_bits)
            exceptions.handle(request, ignore=True)

        # Check for existing roles
        # Show a warning if no role exists for the tenant
        user_roles = api.keystone.roles_for_user(request, user, tenant)
        if not user_roles:
            messages.warning(
                request,
                _('The user %s has no role defined for' + ' that project.') %
                data.get('name', None))

        if user_is_editable:
            # If present, update password
            # FIXME(gabriel): password change should be its own form and view
            if password:
                msg_bits = (_('password'), )
                try:
                    api.user_update_password(request, user, password)
                    succeeded.extend(msg_bits)
                except:
                    failed.extend(msg_bits)
                    exceptions.handle(request, ignore=True)

        if succeeded:
            messages.success(request, _('User has been updated successfully.'))
        if failed:
            failed = map(force_unicode, failed)
            messages.error(
                request,
                _('Unable to update %(attributes)s for the user.') %
                {"attributes": ", ".join(failed)})
        return True
コード例 #8
0
ファイル: forms.py プロジェクト: 1ukash/horizon
    def handle(self, request, data):
        failed, succeeded = [], []
        user_is_editable = api.keystone_can_edit_user()
        user = data.pop('id')
        tenant = data.pop('tenant_id')

        if user_is_editable:
            password = data.pop('password')
            data.pop('confirm_password', None)

        if user_is_editable:
            # Update user details
            msg_bits = (_('name'), _('email'))
            try:
                api.keystone.user_update(request, user, **data)
                succeeded.extend(msg_bits)
            except:
                failed.extend(msg_bits)
                exceptions.handle(request, ignore=True)

        # Update default tenant
        msg_bits = (_('primary project'),)
        try:
            api.user_update_tenant(request, user, tenant)
            succeeded.extend(msg_bits)
        except:
            failed.append(msg_bits)
            exceptions.handle(request, ignore=True)

        # Check for existing roles
        # Show a warning if no role exists for the tenant
        user_roles = api.keystone.roles_for_user(request, user, tenant)
        if not user_roles:
            messages.warning(request,
                             _('The user %s has no role defined for' +
                             ' that project.')
                             % data.get('name', None))

        if user_is_editable:
            # If present, update password
            # FIXME(gabriel): password change should be its own form and view
            if password:
                msg_bits = (_('password'),)
                try:
                    api.user_update_password(request, user, password)
                    succeeded.extend(msg_bits)
                except:
                    failed.extend(msg_bits)
                    exceptions.handle(request, ignore=True)

        if succeeded:
            messages.success(request, _('User has been updated successfully.'))
        if failed:
            failed = map(force_unicode, failed)
            messages.error(request,
                           _('Unable to update %(attributes)s for the user.')
                             % {"attributes": ", ".join(failed)})
        return True
コード例 #9
0
 class Meta:
     name = "users"
     verbose_name = _("Users")
     if api.keystone_can_edit_user():
         row_actions = (EditUserLink, EnableUsersAction, DisableUsersAction,
                        DeleteUsersAction)
         table_actions = (UserFilterAction, CreateUserLink,
                          DeleteUsersAction)
     else:
         row_actions = (EnableUsersAction, DisableUsersAction)
         table_actions = (UserFilterAction,)
コード例 #10
0
    def handle(self, request, data):
        failed, succeeded = [], []
        user_is_editable = api.keystone_can_edit_user()
        user = data.pop('id')
        tenant = data.pop('tenant_id')
        data.pop('method')

        if user_is_editable:
            password = data.pop('password')
            data.pop('confirm_password', None)

        if user_is_editable:
            # Update user details
            msg_bits = (_('name'), _('email'))
            try:
                api.keystone.user_update(request, user, **data)
                succeeded.extend(msg_bits)
            except:
                failed.extend(msg_bits)
                exceptions.handle(request, ignore=True)

        # Update default tenant
        msg_bits = (_('primary project'), )
        try:
            api.user_update_tenant(request, user, tenant)
            succeeded.extend(msg_bits)
        except:
            failed.append(msg_bits)
            exceptions.handle(request, ignore=True)

        if user_is_editable:
            # If present, update password
            # FIXME(gabriel): password change should be its own form and view
            if password:
                msg_bits = (_('password'), )
                try:
                    api.user_update_password(request, user, password)
                    succeeded.extend(msg_bits)
                except:
                    failed.extend(msg_bits)
                    exceptions.handle(request, ignore=True)

        if succeeded:
            messages.success(request, _('User has been updated successfully.'))
        if failed:
            failed = map(force_unicode, failed)
            messages.error(
                request,
                _('Unable to update %(attributes)s for the user.') %
                {"attributes": ", ".join(failed)})
        return shortcuts.redirect('horizon:syspanel:users:index')
コード例 #11
0
ファイル: forms.py プロジェクト: AsylumCorp/horizon
    def handle(self, request, data):
        failed, succeeded = [], []
        user_is_editable = api.keystone_can_edit_user()
        user = data.pop('id')
        tenant = data.pop('tenant_id')
        data.pop('method')

        if user_is_editable:
            password = data.pop('password')
            data.pop('confirm_password', None)

        if user_is_editable:
            # Update user details
            msg_bits = (_('name'), _('email'))
            try:
                api.keystone.user_update(request, user, **data)
                succeeded.extend(msg_bits)
            except:
                failed.extend(msg_bits)
                exceptions.handle(request, ignore=True)

        # Update default tenant
        msg_bits = (_('primary project'),)
        try:
            api.user_update_tenant(request, user, tenant)
            succeeded.extend(msg_bits)
        except:
            failed.append(msg_bits)
            exceptions.handle(request, ignore=True)

        if user_is_editable:
            # If present, update password
            # FIXME(gabriel): password change should be its own form and view
            if password:
                msg_bits = (_('password'),)
                try:
                    api.user_update_password(request, user, password)
                    succeeded.extend(msg_bits)
                except:
                    failed.extend(msg_bits)
                    exceptions.handle(request, ignore=True)

        if succeeded:
            messages.success(request, _('User has been updated successfully.'))
        if failed:
            failed = map(force_unicode, failed)
            messages.error(request,
                           _('Unable to update %(attributes)s for the user.')
                             % {"attributes": ", ".join(failed)})
        return shortcuts.redirect('horizon:syspanel:users:index')
コード例 #12
0
def index(request):
    form = UpdatePassword(request=request)
    if request.method == 'POST':
        form = UpdatePassword(request=request, data=request.POST)
        if form.is_valid():
            if api.keystone_can_edit_user():
                api.user_update_password(
                    request,
                    request.user.id,
                    form.cleaned_data['new_password'],
                    admin=True
                )
                request.user_logout()
                return shortcuts.redirect('/auth/login')
    return shortcuts.render(request, 'password/settings.html', {
        'form': form,
    })
コード例 #13
0
ファイル: tables.py プロジェクト: matiu2/horizon
 def allowed(self, request, datum):
     if not api.keystone_can_edit_user() or \
             (datum and datum.id == request.user.id):
         return False
     return True
コード例 #14
0
    def __init__(self, request, *args, **kwargs):
        super(UpdateUserForm, self).__init__(request, *args, **kwargs)

        if api.keystone_can_edit_user() is False:
            for field in ('name', 'email', 'password', 'confirm_password'):
                self.fields.pop(field)
コード例 #15
0
ファイル: tables.py プロジェクト: matiu2/horizon
 def allowed(self, request, user):
     if api.keystone_can_edit_user():
         return True
     return False
コード例 #16
0
ファイル: tables.py プロジェクト: zhang-hua/horizon
 def allowed(self, request, datum):
     if not api.keystone_can_edit_user() or \
             (datum and datum.id == request.user.id):
         return False
     return True
コード例 #17
0
ファイル: forms.py プロジェクト: 1ukash/horizon
    def __init__(self, request, *args, **kwargs):
        super(UpdateUserForm, self).__init__(request, *args, **kwargs)

        if api.keystone_can_edit_user() is False:
            for field in ('name', 'email', 'password', 'confirm_password'):
                self.fields.pop(field)
コード例 #18
0
ファイル: tables.py プロジェクト: liangxiaobi/chinahorizon
 def allowed(self, request, datum):
     if not api.keystone_can_edit_user():
         return False
     return True
コード例 #19
0
ファイル: tables.py プロジェクト: liangxiaobi/chinahorizon
 def allowed(self, request, datum):
     if not api.keystone_can_edit_user():
         return False
     return True
コード例 #20
0
ファイル: tables.py プロジェクト: liangxiaobi/chinahorizon
 def allowed(self, request, user):
     if api.keystone_can_edit_user():
         return True
     return False
コード例 #21
0
ファイル: forms.py プロジェクト: liangxiaobi/chinahorizon
    def __init__(self, request, *args, **kwargs):
        super(UpdateBillForm, self).__init__(request, *args, **kwargs)

        if api.keystone_can_edit_user() is False:
            for field in ('name', 'Region', 'payment_type', 'order_unit','order_size','price'):
                self.fields.pop(field)