Example #1
0
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')
Example #2
0
def delete_user(cm_id, caller_id, user_id, group_id):
    """
    Method deletes membership of a user from a specified group. Only group
    leader and user-to-delete may call this.

    @clmview_user
    @param_post{user_id,int} id of the user to delete from group
    @param_post{group_id,int} id of the managed group
    """
    if caller_id != user_id:
        User.is_leader(caller_id, group_id)

    try:
        mem = UserGroup.objects.filter(group_id__exact=group_id).filter(user_id__exact=user_id)[0]
    except:
        raise CLMException('user2group_get')

    for m in Message.objects.filter(user_id__exact=caller_id).filter(code__exact='group_request'):
        log.debug(caller_id, 'message params %s' % m.params)
        if json.loads(m.params).get('group_id', None) == id:
            log.debug(caller_id, 'delete message for group %s' % id)
            m.delete()

    try:
        mem.delete()
    except:
        raise CLMException('group_delete_user')
Example #3
0
def delete_user(cm_id, caller_id, user_id, group_id):
    """
    Method deletes membership of a user from a specified group. Only group
    leader and user-to-delete may call this.

    @clmview_user
    @param_post{user_id,int} id of the user to delete from group
    @param_post{group_id,int} id of the managed group
    """
    if caller_id != user_id:
        User.is_leader(caller_id, group_id)

    try:
        mem = UserGroup.objects.filter(group_id__exact=group_id).filter(
            user_id__exact=user_id)[0]
    except:
        raise CLMException('user2group_get')

    for m in Message.objects.filter(user_id__exact=caller_id).filter(
            code__exact='group_request'):
        log.debug(caller_id, 'message params %s' % m.params)
        if json.loads(m.params).get('group_id', None) == id:
            log.debug(caller_id, 'delete message for group %s' % id)
            m.delete()

    try:
        mem.delete()
    except:
        raise CLMException('group_delete_user')
Example #4
0
def send(to_address, msg_text, subject):
    """
    @parameter{to_address,string} addressee of the email
    @parameter{msg_text,string} contents of the email
    @parameter{subject,string} subject of the email

    Sends email via STMP server.
    """
    from_address = settings.FROM_EMAIL
    log.debug(0, '%s%s%s%s%s%s%s' % ("send_email(from='", from_address, "', to='", to_address, "', subject='", subject, "')"))

    msg = EmailMessage(subject, msg_text, from_address, [to_address])
    msg.send()
Example #5
0
def send(to_address, msg_text, subject):
    """
    @parameter{to_address,string} addressee of the email
    @parameter{msg_text,string} contents of the email
    @parameter{subject,string} subject of the email

    Sends email via STMP server.
    """
    from_address = settings.FROM_EMAIL
    log.debug(
        0, '%s%s%s%s%s%s%s' % ("send_email(from='", from_address, "', to='",
                               to_address, "', subject='", subject, "')"))

    msg = EmailMessage(subject, msg_text, from_address, [to_address])
    msg.send()
Example #6
0
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')
Example #7
0
 def wrapper(**data):
     log.debug(0, "Forward request to CM: %s" % url)
     cm_response = CM(data.pop('cm_id')).send_request(url, **data)
     fun.packed = True  # mark function response to not be packed by genericlog
     return fun(cm_response, **data)
Example #8
0
            resp = fun(**data)
            if pack_resp and not hasattr(fun, 'packed'):  # if function is decorated by cm_request, 'packed' atribbute will be set - response is already packed by cm
                resp = response('ok', resp)
            transaction.commit()
        except CLMException, e:
            transaction.rollback()
            user_id = 0
            resp = e.response
        except Exception, e:
            transaction.rollback()
            gen_exception = True
            user_id = 0
            resp = response('clm_error', str(e))

    if log_enabled or resp['status'] != 'ok':
        log.debug(user_id, '=' * 100)
        log.debug(user_id, 'Function: %s' % name)
        log.debug(user_id, 'ARGS:\n%s' % json.dumps(data, indent=4))
        if gen_exception:
            log.exception(user_id, 'General exception')
        log.debug(user_id, 'Response: %s' % resp or 'None')

    return HttpResponse(json.dumps(resp, default=json_convert))


def cm_request(fun):
    """
    Decorator for CM views functions that:
    - either are fully transparent and just return CM response,
    - or propagate request to CM and further postprocess its response.