diff --git a/apps/assets/signals_handler.py b/apps/assets/signals_handler.py
index 9e6eb21eb..63dc3e882 100644
--- a/apps/assets/signals_handler.py
+++ b/apps/assets/signals_handler.py
@@ -37,7 +37,7 @@ def push_cluster_system_users_to_asset(asset):
@receiver(post_save, sender=Asset, dispatch_uid="my_unique_identifier")
def on_asset_created(sender, instance=None, created=False, **kwargs):
if instance and created:
- logger.info("Asset `` create signal received".format(instance))
+ logger.info("Asset `{}` create signal received".format(instance))
update_asset_hardware_info_on_created(instance)
test_asset_conn_on_created(instance)
push_cluster_system_users_to_asset(instance)
diff --git a/apps/assets/templates/assets/asset_group_detail.html b/apps/assets/templates/assets/asset_group_detail.html
index 9a691036b..4a9b719b1 100644
--- a/apps/assets/templates/assets/asset_group_detail.html
+++ b/apps/assets/templates/assets/asset_group_detail.html
@@ -17,6 +17,11 @@
{% trans 'Update' %}
+
+
+ {% trans 'Delete' %}
+
+
@@ -212,7 +217,6 @@ $(document).ready(function () {
addAssets(assets_id);
})
-
.on('click', '.btn-leave-group', function () {
var $this = $(this);
var the_url = "{% url 'api-assets:group-update-assets' pk=asset_group.id %}";
@@ -225,6 +229,13 @@ $(document).ready(function () {
assets.remove(delete_asset_id);
var data = {"assets": assets};
leaveGroup($this, name, the_url, data);
+}).on('click', '.btn-del', function () {
+ var $this = $(this);
+ var name = "{{ asset_group.name}}";
+ var uid = "{{ asset_group.id }}";
+ var the_url = '{% url "api-assets:asset-group-detail" pk=DEFAULT_PK %}'.replace('{{ DEFAULT_PK }}', uid);
+ var redirect_url = "{% url 'assets:asset-group-list' %}";
+ objectDelete($this, name, the_url, redirect_url);
})
diff --git a/apps/assets/templates/assets/system_user_detail.html b/apps/assets/templates/assets/system_user_detail.html
index db9cf9670..0bf591bb2 100644
--- a/apps/assets/templates/assets/system_user_detail.html
+++ b/apps/assets/templates/assets/system_user_detail.html
@@ -25,6 +25,11 @@
{% trans 'Update' %}
+
+
+ {% trans 'Delete' %}
+
+
@@ -259,6 +264,13 @@ $(document).ready(function () {
return $(this).data('gid');
}).get();
updateSystemUserCluster(clusters);
+}).on('click', '.btn-del', function () {
+ var $this = $(this);
+ var name = "{{ system_user.name}}";
+ var uid = "{{ system_user.id }}";
+ var the_url = '{% url "api-assets:system-user-detail" pk=DEFAULT_PK %}'.replace('{{ DEFAULT_PK }}', uid);
+ var redirect_url = "{% url 'assets:system-user-list' %}";
+ objectDelete($this, name, the_url, redirect_url);
})
{% endblock %}
diff --git a/apps/perms/templates/perms/asset_permission_detail.html b/apps/perms/templates/perms/asset_permission_detail.html
index 942013852..5540ca515 100644
--- a/apps/perms/templates/perms/asset_permission_detail.html
+++ b/apps/perms/templates/perms/asset_permission_detail.html
@@ -237,6 +237,16 @@ $(document).ready(function () {
}).get();
updateSystemUser(system_users);
$tr.remove()
+}).on('click', '#is_active', function () {
+ var the_url = '{% url "api-perms:asset-permission-detail" pk=asset_permission.id %}';
+ var checked = $(this).prop('checked');
+ var body = {
+ 'is_active': checked
+ };
+ APIUpdateAttr({
+ url: the_url,
+ body: JSON.stringify(body),
+ });
})
{% endblock %}
diff --git a/apps/users/api.py b/apps/users/api.py
index e1d38f572..326f2c3ec 100644
--- a/apps/users/api.py
+++ b/apps/users/api.py
@@ -128,7 +128,7 @@ class UserAuthApi(APIView):
user_agent = request.data.get('HTTP_USER_AGENT', '')
if not login_ip:
- login_ip = request.META.get('HTTP_X_REAL_IP') or request.META.get("REMOTE_ADDR")
+ login_ip = request.META.get('HTTP_X_FORWARDED_FOR') or request.META.get("REMOTE_ADDR")
user, msg = check_user_valid(
username=username, password=password,
diff --git a/apps/users/forms.py b/apps/users/forms.py
index c27bd4378..651df78d3 100644
--- a/apps/users/forms.py
+++ b/apps/users/forms.py
@@ -46,7 +46,7 @@ class UserCreateUpdateForm(forms.ModelForm):
}
def save(self, commit=True):
- password = self.cleaned_data.pop('password')
+ password = self.cleaned_data.get('password')
user = super().save(commit=commit)
if password:
user.set_password(password)
diff --git a/apps/users/views/login.py b/apps/users/views/login.py
index fabc39b7d..493e4936c 100644
--- a/apps/users/views/login.py
+++ b/apps/users/views/login.py
@@ -53,7 +53,8 @@ class UserLoginView(FormView):
if not self.request.session.test_cookie_worked():
return HttpResponse(_("Please enable cookies and try again."))
auth_login(self.request, form.get_user())
- login_ip = self.request.META.get('REMOTE_ADDR', '')
+ login_ip = self.request.META.get('HTTP_X_FORWARDED_FOR') or \
+ self.request.META.get('REMOTE_ADDR', '')
user_agent = self.request.META.get('HTTP_USER_AGENT', '')
write_login_log_async.delay(
self.request.user.username, type='W',