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 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')
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')
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()
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()
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 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)
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.