25 from clm.models.user
import User
26 from clm.models.group
import Group
27 from clm.models.user_group
import UserGroup
28 from clm.models.message
import Message
29 from clm.utils
import log, message
30 from clm.utils.cm
import CM
31 from clm.utils.decorators
import user_log
32 from clm.utils.exception
import CLMException
33 from common.states
import group_states, image_access
47 def create(cm_id, caller_id, name, description):
48 user = User.get(caller_id)
54 group.desc = description
61 mem.status = group_states[
'ok']
65 raise CLMException(
'group_create')
78 group = Group.get(group_id)
79 user = User.get(caller_id)
84 mem.status = group_states[
'waiting']
86 message.info(group.leader_id,
'group_request', params={
'first_name': user.first,
'last_name': user.last,
'group_name': group.name,
'group_id': group.id})
90 raise CLMException(
'group_request')
105 user = User.get(caller_id)
109 for ug
in UserGroup.objects.filter(user_id__exact=user.id):
110 if ug.status == group_states[
'waiting']:
111 waiting.append(ug.group_id)
112 elif ug.status == group_states[
'ok']:
113 ok.append(ug.group_id)
115 for g
in Group.objects.all():
118 d[
'user_status'] = group_states[
'ok']
119 elif g.id
in waiting:
120 d[
'user_status'] = group_states[
'waiting']
122 d[
'user_status'] = group_states[
'not member']
137 user = User.get(caller_id)
139 for g
in user.group_set.all():
141 d[
'status'] = group_states[
'ok']
160 group = Group.objects.get(pk=group_id)
162 return [u.dict
for u
in group.users.filter(usergroup__status__exact=group_states[
'ok'])]
174 user = User.get(caller_id)
177 return [g.dict
for g
in user.own_groups]
195 group = Group.objects.get(pk=group_id)
197 return [u.dict
for u
in group.users.filter(usergroup__status__exact=group_states[
'waiting'])]
210 group = Group.get(group_id)
212 resp = CM(cm_id).send_request(
"user/system_image/get_list/", caller_id=caller_id, group_id=[group_id], access=image_access[
'group'])
213 if resp[
'status'] !=
'ok':
216 log.debug(caller_id,
'groups %s' % resp)
218 user = User.get(caller_id)
220 for img
in resp[
'data']:
221 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])
222 log.debug(caller_id,
'image set private %s' % resp[
'data'])
223 if resp[
'status'] !=
'ok':
229 raise CLMException(
'group_delete')
241 def edit(cm_id, caller_id, group_id, name=None, description=None):
242 group = Group.get(group_id)
246 group.desc = description
250 raise CLMException(
'group_edit')
265 User.is_leader(caller_id, group_id)
268 mem = UserGroup.objects.filter(group_id__exact=group_id).filter(user_id__exact=user_id).filter(status__exact=group_states[
'waiting'])[0]
270 raise CLMException(
'user2group_get')
272 mem.status = group_states[
'ok']
273 for m
in Message.objects.filter(user_id__exact=caller_id).filter(code__exact=
'group_request'):
274 if json.loads(m.params).
get(
'group_id',
None) == id:
279 raise CLMException(
'user_activate')
291 if caller_id != user_id:
292 User.is_leader(caller_id, group_id)
295 mem = UserGroup.objects.filter(group_id__exact=group_id).filter(user_id__exact=user_id)[0]
297 raise CLMException(
'user2group_get')
299 for m
in Message.objects.filter(user_id__exact=caller_id).filter(code__exact=
'group_request'):
300 log.debug(caller_id,
'message params %s' % m.params)
301 if json.loads(m.params).
get(
'group_id',
None) == id:
302 log.debug(caller_id,
'delete message for group %s' % id)
308 raise CLMException(
'group_delete_user')
322 User.is_leader(caller_id, group_id)
324 group = Group.get(group_id)
325 new_leader = User.get(user_id)
327 group.leader = new_leader
332 raise CLMException(
'group_change_owner')
346 return Group.get(group_id).dict