def join_request(cm_id, caller_id, group_id): """ Sends request for acceptation in specified Groupfor caller. Adds caller to members with 'waiting' state. @clmview_user @param_post{group_id,int} id of the Group, which caller wants to become member of """ group = Group.get(group_id) user = User.get(caller_id) mem = UserGroup() mem.user = user mem.group = group mem.status = group_states['waiting'] message.info(group.leader_id, 'group_request', params={ 'first_name': user.first, 'last_name': user.last, 'group_name': group.name, 'group_id': group.id }) try: mem.save() except: raise CLMException('group_request')
def delete(cm_id, caller_id, group_id): """ Method deletes specified Group. @clmview_user @param_post{group_id,int} id of the Group to delete """ group = Group.get(group_id) resp = CM(cm_id).send_request("user/system_image/get_list/", caller_id=caller_id, group_id=[group_id], access=image_access['group']) if resp['status'] != 'ok': return resp['data'] log.debug(caller_id, 'groups %s' % resp) user = User.get(caller_id) # set private all the system images that belong to the group for img in resp['data']: resp = CM(cm_id).sendRequest(cm_id, caller_id, "user/system_image/set_private/", system_image_id=img['image_id'], leader_groups=[g.group_id for g in user.own_groups]) log.debug(caller_id, 'image set private %s' % resp['data']) if resp['status'] != 'ok': return resp['data'] try: group.delete() except: raise CLMException('group_delete')
def create(cm_id, caller_id, name, description): """ Creates new Group of Users. Caller becomes its leader. He also becomes a member of that Group with @val{ok} state. @clmview_user @param_post{name,string} @param_post{description,string} """ user = User.get(caller_id) # create group group = Group() group.leader = user group.name = name group.desc = description group.save() # create first membership mem = UserGroup() mem.user = user mem.group = group mem.status = group_states['ok'] try: mem.save() except: raise CLMException('group_create')
def get_by_id(cm_id, caller_id, group_id): """ @clmview_user @param_post{group_id,int} id of the requested Group @response{dict} requested Group's details """ return Group.get(group_id).dict
def edit(cm_id, caller_id, group_id, name, description): """ Method edits specified Group. @clmview_user @param_post{group_id,string} id of the group to edit @param_post{name,string} group's name @param_post{description,string} group's description """ group = Group.get(group_id) group.name = name group.desc = description try: group.save() except: raise CLMException('group_edit')
def join_request(cm_id, caller_id, group_id): """ Sends request for acceptation in specified Groupfor caller. Adds caller to members with 'waiting' state. @clmview_user @param_post{group_id,int} id of the Group, which caller wants to become member of """ group = Group.get(group_id) user = User.get(caller_id) mem = UserGroup() mem.user = user mem.group = group mem.status = group_states['waiting'] message.info(group.leader_id, 'group_request', params={'first_name': user.first, 'last_name': user.last, 'group_name': group.name, 'group_id': group.id}) try: mem.save() except: raise CLMException('group_request')
def change_owner(cm_id, caller_id, user_id, group_id): """ Function changes owner of the specified group. Only owner may be the caller, otherwise exception is thrown. @prm{user_id} becomes new Group's leader. @clmview_user @param_post{user_id,int} id of the new owner @param_post{group_id,int} id of the managed Group """ # check that the caller is leader User.is_leader(caller_id, group_id) group = Group.get(group_id) new_leader = User.get(user_id) group.leader = new_leader try: group.save() except: raise CLMException('group_change_owner')
def delete(cm_id, caller_id, group_id): """ Method deletes specified Group. @clmview_user @param_post{group_id,int} id of the Group to delete """ group = Group.get(group_id) resp = CM(cm_id).send_request("user/system_image/get_list/", caller_id=caller_id, group_id=[group_id], access=image_access['group']) if resp['status'] != 'ok': return resp['data'] log.debug(caller_id, 'groups %s' % resp) user = User.get(caller_id) # set private all the system images that belong to the group for img in resp['data']: resp = CM(cm_id).sendRequest( cm_id, caller_id, "user/system_image/set_private/", system_image_id=img['image_id'], leader_groups=[g.group_id for g in user.own_groups]) log.debug(caller_id, 'image set private %s' % resp['data']) if resp['status'] != 'ok': return resp['data'] try: group.delete() except: raise CLMException('group_delete')