def change_profile(request): user = request.user profile = user.profile email, mobile = retrieve_params(request.data, 'email', 'mobile') if UserProxy.objects.filter(email=email).exclude(pk=user.pk).exists(): return fail(_("This email has already been used.")) if UserProfile.objects.filter(mobile=mobile).exclude( pk=profile.pk).exists(): return fail(_("This mobile has already been used.")) user.email = email profile.mobile = mobile user.save() profile.save() return Response({ "success": True, "msg": _("Password has been changed! Please login in again.") })
def backup_volume(request): volume_id, name, is_full = retrieve_params(request.data, 'volume_id', 'name', 'is_full') udc = UserDataCenter.objects.get(pk=request.session["UDC_ID"]) is_full = True if is_full == 'true' else False volume = Volume.objects.get(pk=volume_id) if BackupItem.is_any_unstable(resource=volume): return fail( _("Volume %(name)s has one backup task now.") % {'name': volume.name}) if BackupItem.has_error_node_on_default_chain(resource=volume): return fail( _("Volume %(name)s has one error backup node on " "default backup chain. Please delete it first") % {'name': volume.name}) item = BackupItem.create(volume, name, request.user, udc, is_full=is_full) Operation.log(volume, obj_name=volume.name, action="backup") tasks.execute_backup.delay(item.id) return success(_("Backup is in process."))
def backup_volume(request): volume_id, name, is_full = retrieve_params( request.data, 'volume_id', 'name', 'is_full') udc = UserDataCenter.objects.get(pk=request.session["UDC_ID"]) is_full = True if is_full == 'true' else False volume = Volume.objects.get(pk=volume_id) if BackupItem.is_any_unstable(resource=volume): return fail(_("Volume %(name)s has one backup task now.") % {'name': volume.name}) if BackupItem.has_error_node_on_default_chain(resource=volume): return fail(_("Volume %(name)s has one error backup node on " "default backup chain. Please delete it first") % {'name': volume.name}) item = BackupItem.create(volume, name, request.user, udc, is_full=is_full) Operation.log(volume, obj_name=volume.name, action="backup") tasks.execute_backup.delay(item.id) return success(_("Backup is in process."))
def announce(request): level, title, content = retrieve_params(request.data, 'level', 'title', 'content') Notification.objects.create(title=title, content=content, level=level, is_announcement=True) return Response({"success": True, "msg": _('Announcement is sent successfully!')})
def announce(request): level, title, content = retrieve_params(request.data, 'level', 'title', 'content') Notification.objects.create(title=title, content=content, level=level, is_announcement=True) return Response({"success": True, "msg": _('Announcement is sent successfully!')})
def broadcast(request): receiver_ids = request.data.getlist('receiver_ids[]') level, title, content = retrieve_params(request.data, 'level', 'title', 'content') send_notifications.delay(title, content, level, receiver_ids) return Response({"success": True, "msg": _('Notification is sent successfully!')})
def define_workflow(request): workflow_id, name, resource_type = retrieve_params(request.data, 'id', 'name', 'resource_type') step_ids, step_names, step_approvers = retrieve_list_params( request.data, 'step_ids[]', 'step_names[]', 'step_approvers[]') if workflow_id: workflow = Workflow.objects.get(pk=workflow_id) else: workflow = Workflow(is_default=False) workflow.name = name workflow.resource_type = resource_type workflow.save() original_steps, new_steps = workflow.steps.all(), [] step_orders = range(len(step_ids)) last_step = None for index in step_orders: pk, name, approver_id = step_ids[index], step_names[ index], step_approvers[index] if pk: step = Step.objects.get(pk=pk) else: step = Step() step.workflow = workflow step.name = name step.order = index step.approver = UserProxy.normal_users.get(pk=approver_id) step.save() if last_step: last_step.next = step last_step.save() last_step = step new_steps.append(step) for step in original_steps: if step not in new_steps: step.delete() workflow = Workflow.objects.get(pk=workflow.pk) return Response({ "success": True, "msg": _('Workflow is saved.'), "data": WorkflowSerializer(workflow).data })
def broadcast(request): receiver_ids = request.data.getlist('receiver_ids[]') level, title, content = retrieve_params(request.data, 'level', 'title', 'content') send_notifications.delay(title, content, level, receiver_ids) return Response({"success": True, "msg": _('Notification is sent successfully!')})
def data_center_broadcast(request): level, title, content = retrieve_params( request.data, 'level', 'title', 'content') dc_ids = request.data.getlist('data_centers[]') send_notifications_by_data_center.delay(title, content, level, dc_ids) return Response({"success": True, "msg": _('Notification is sent successfully!')})
def data_center_broadcast(request): level, title, content = retrieve_params( request.data, 'level', 'title', 'content') dc_ids = request.data.getlist('data_centers[]') send_notifications_by_data_center.delay(title, content, level, dc_ids) return Response({"success": True, "msg": _('Notification is sent successfully!')})
def define_workflow(request): workflow_id, name, resource_type = retrieve_params( request.data, 'id', 'name', 'resource_type') step_ids, step_names, step_approvers = retrieve_list_params( request.data, 'step_ids[]', 'step_names[]', 'step_approvers[]') if workflow_id: workflow = Workflow.objects.get(pk=workflow_id) else: workflow = Workflow(is_default=False) workflow.name = name workflow.resource_type = resource_type workflow.save() original_steps, new_steps = workflow.steps.all(), [] step_orders = range(len(step_ids)) last_step = None for index in step_orders: pk, name, approver_id = step_ids[index], step_names[index], step_approvers[index] if pk: step = Step.objects.get(pk=pk) else: step = Step() step.workflow = workflow step.name = name step.order = index step.approver = UserProxy.normal_users.get(pk=approver_id) step.save() if last_step: last_step.next = step last_step.save() last_step = step new_steps.append(step) for step in original_steps: if step not in new_steps: step.delete() workflow = Workflow.objects.get(pk=workflow.pk) return Response({"success": True, "msg": _('Workflow is saved.'), "data": WorkflowSerializer(workflow).data})
def backup_instance(request): instance_id, name, is_full = retrieve_params(request.data, 'instance_id', 'name', 'is_full') udc = UserDataCenter.objects.get(pk=request.session["UDC_ID"]) volume_ids = request.data.getlist('volume_ids[]') is_full = True if is_full == 'true' else False instance = Instance.objects.get(pk=instance_id) volumes = Volume.objects.filter(pk__in=volume_ids) if BackupItem.is_any_unstable(resource=instance): return fail( _("Instance %(name)s has one backup task now.") % {'name': instance.name}) if BackupItem.has_error_node_on_default_chain(resource=instance): return fail( _("Instance %(name)s has one error backup node on " "default backup chain. Please delete it first") % {'name': instance.name}) for volume in volumes: if BackupItem.is_any_unstable(resource=volume): return fail( _("Volume %(name)s has one backup task now.") % {'name': volume.name}) if BackupItem.has_error_node_on_default_chain(resource=volume): return fail( _("Volume %(name)s has one error backup node on " "default backup chain. Please delet it first") % {'name': volume.name}) items = [ BackupItem.create(instance, name, request.user, udc, is_full=is_full) ] Operation.log(instance, obj_name=instance.name, action="backup") for volume in volumes: items.append( BackupItem.create(volume, name, request.user, udc, is_full=is_full)) Operation.log(volume, obj_name=volume.name, action="backup") for item in items: tasks.execute_backup.delay(item.id) return success(_("Backup is in process."))
def network_update(request): network_id, name = retrieve_params(request.data, 'id', 'name') try: network = Network.objects.get(pk=network_id, user=request.user) except Network.DoesNotExist: return Response({"OPERATION_STATUS": 0, "MSG": _('The selected network not exist')}) else: network.name = name network.save() Operation.log(obj=network, obj_name=network.name, action='update') return Response({"OPERATION_STATUS": 1, "MSG": _('Update network success')})
def set_default_workflow(request): workflow_id, resource_type = retrieve_params(request.data, 'id', 'resource_type') try: workflow = Workflow.objects.get(pk=workflow_id) except Workflow.DoesNotExist: return Response(status=status.HTTP_404_NOT_FOUND) else: Workflow.objects.filter(resource_type=resource_type).update(is_default=False) workflow.is_default = True workflow.save() msg = _("%(name)s is the default workflow for %(resource)s now.") \ % {'name': workflow.name, 'resource': workflow.resource_name} return Response({"success": True, "msg": msg}, status=status.HTTP_200_OK)
def backup_instance(request): instance_id, name, is_full = retrieve_params( request.data, 'instance_id', 'name', 'is_full') udc = UserDataCenter.objects.get(pk=request.session["UDC_ID"]) volume_ids = request.data.getlist('volume_ids[]') is_full = True if is_full == 'true' else False instance = Instance.objects.get(pk=instance_id) volumes = Volume.objects.filter(pk__in=volume_ids) if BackupItem.is_any_unstable(resource=instance): return fail(_("Instance %(name)s has one backup task now.") % {'name': instance.name}) if BackupItem.has_error_node_on_default_chain(resource=instance): return fail(_("Instance %(name)s has one error backup node on " "default backup chain. Please delete it first") % {'name': instance.name}) for volume in volumes: if BackupItem.is_any_unstable(resource=volume): return fail(_("Volume %(name)s has one backup task now.") % {'name': volume.name}) if BackupItem.has_error_node_on_default_chain(resource=volume): return fail(_("Volume %(name)s has one error backup node on " "default backup chain. Please delet it first") % {'name': volume.name}) items = [BackupItem.create(instance, name, request.user, udc, is_full=is_full)] Operation.log(instance, obj_name=instance.name, action="backup") for volume in volumes: items.append(BackupItem.create(volume, name, request.user, udc, is_full=is_full)) Operation.log(volume, obj_name=volume.name, action="backup") for item in items: tasks.execute_backup.delay(item.id) return success(_("Backup is in process."))
def set_default_workflow(request): workflow_id, resource_type = retrieve_params(request.data, 'id', 'resource_type') try: workflow = Workflow.objects.get(pk=workflow_id) except Workflow.DoesNotExist: return Response(status=status.HTTP_404_NOT_FOUND) else: Workflow.objects.filter(resource_type=resource_type).update( is_default=False) workflow.is_default = True workflow.save() msg = _("%(name)s is the default workflow for %(resource)s now.") \ % {'name': workflow.name, 'resource': workflow.resource_name} return Response({"success": True, "msg": msg}, status=status.HTTP_200_OK)
def change_profile(request): user = request.user profile = user.profile email, mobile = retrieve_params(request.data, 'email', 'mobile') if UserProxy.objects.filter(email=email).exclude(pk=user.pk).exists(): return fail(_("This email has already been used.")) if UserProfile.objects.filter(mobile=mobile).exclude(pk=profile.pk).exists(): return fail(_("This mobile has already been used.")) user.email = email profile.mobile = mobile user.save() profile.save() return Response({"success": True, "msg": _( "Password has been changed! Please login in again.")})