def get_group_info(request, group_id, avatar_size=GROUP_AVATAR_DEFAULT_SIZE): group = seaserv.get_group(group_id) try: avatar_url, is_default, date_uploaded = api_grp_avatar_url( group.id, avatar_size) except Exception as e: logger.error(e) avatar_url = get_default_group_avatar_url() val = utc_to_local(dt(group.timestamp)) group_info = { "id": group.id, "name": group.group_name, "owner": group.creator_name, "created_at": val.strftime("%Y-%m-%dT%H:%M:%S") + DateFormat(val).format('O'), "avatar_url": request.build_absolute_uri(avatar_url), "admins": get_group_admins(group.id), } return group_info
def get_group_info(request, group_id, avatar_size=GROUP_AVATAR_DEFAULT_SIZE): group = seaserv.get_group(group_id) try: avatar_url, is_default, date_uploaded = api_grp_avatar_url( group.id, avatar_size) except Exception as e: logger.error(e) avatar_url = get_default_group_avatar_url() isoformat_timestr = timestamp_to_isoformat_timestr(group.timestamp) group_info = { "id": group.id, "parent_group_id": group.parent_group_id, "name": group.group_name, "owner": group.creator_name, "created_at": isoformat_timestr, "avatar_url": request.build_absolute_uri(avatar_url), "admins": get_group_admins(group.id), "wiki_enabled": is_wiki_mod_enabled_for_group(group_id) } # parent_group_id = 0: non department group # parent_group_id = -1: top department group # parent_group_id = n(n > 0): sub department group, n is parent group's id if group.parent_group_id != 0: group_info['group_quota'] = seafile_api.get_group_quota(group_id) group_info['group_quota_usage'] = seafile_api.get_group_quota_usage( group_id) return group_info
def post(self, request): """ Create a group """ if not self._can_add_group(request): error_msg = _(u'You do not have permission to create group.') return api_error(status.HTTP_403_FORBIDDEN, error_msg) username = request.user.username group_name = request.data.get('group_name', '') group_name = group_name.strip() # Check whether group name is validate. if not validate_group_name(group_name): error_msg = _(u'Group name can only contain letters, numbers, blank, hyphen or underscore') return api_error(status.HTTP_400_BAD_REQUEST, error_msg) # Check whether group name is duplicated. if check_group_name_conflict(request, group_name): error_msg = _(u'There is already a group with that name.') return api_error(status.HTTP_400_BAD_REQUEST, error_msg) # Group name is valid, create that group. try: group_id = seaserv.ccnet_threaded_rpc.create_group(group_name, username) except SearpcError as e: logger.error(e) error_msg = _(u'Failed') return api_error(status.HTTP_500_INTERNAL_SERVER_ERROR, error_msg) try: size = int(request.data.get('avatar_size', GROUP_AVATAR_DEFAULT_SIZE)) except ValueError: size = GROUP_AVATAR_DEFAULT_SIZE g = seaserv.get_group(group_id) try: avatar_url, is_default, date_uploaded = api_grp_avatar_url(g.id, size) except Exception as e: logger.error(e) avatar_url = get_default_group_avatar_url() val = utc_to_local(dt(g.timestamp)) new_group = { "id": g.id, "name": g.group_name, "creator": g.creator_name, "created_at": val.strftime("%Y-%m-%dT%H:%M:%S") + DateFormat(val).format('O'), "avatar_url": request.build_absolute_uri(avatar_url), "admins": self._get_group_admins(g.id), } return Response(new_group, status=status.HTTP_201_CREATED)
def get(self, request): """list all departments """ if not is_pro_version(): return api_error(status.HTTP_403_FORBIDDEN, 'Permission denied.') try: departments = ccnet_api.list_all_departments() except Exception as e: logger.error(e) error_msg = 'Internal Server Error' return api_error(status.HTTP_500_INTERNAL_SERVER_ERROR, error_msg) try: avatar_size = int( request.GET.get('avatar_size', GROUP_AVATAR_DEFAULT_SIZE)) except ValueError: avatar_size = GROUP_AVATAR_DEFAULT_SIZE result = [] for department in departments: department = seaserv.get_group(department.id) username = request.user.username if not is_group_member(department.id, username): continue try: avatar_url, is_default, date_uploaded = api_grp_avatar_url( department.id, avatar_size) except Exception as e: logger.error(e) avatar_url = get_default_group_avatar_url() created_at = timestamp_to_isoformat_timestr(department.timestamp) department_info = { "id": department.id, "email": '%s@seafile_group' % str(department.id), "parent_group_id": department.parent_group_id, "name": department.group_name, "owner": department.creator_name, "created_at": created_at, "avatar_url": request.build_absolute_uri(avatar_url), } result.append(department_info) return Response(result)
def get(self, request): """list all departments """ try: departments = ccnet_api.list_all_departments() except Exception as e: logger.error(e) error_msg = 'Internal Server Error' return api_error(status.HTTP_500_INTERNAL_SERVER_ERROR, error_msg) try: avatar_size = int(request.GET.get('avatar_size', GROUP_AVATAR_DEFAULT_SIZE)) except ValueError: avatar_size = GROUP_AVATAR_DEFAULT_SIZE result = [] for department in departments: department = seaserv.get_group(department.id) username = request.user.username if not is_group_member(department.id, username): continue try: avatar_url, is_default, date_uploaded = api_grp_avatar_url(department.id, avatar_size) except Exception as e: logger.error(e) avatar_url = get_default_group_avatar_url() created_at = timestamp_to_isoformat_timestr(department.timestamp) department_info = { "id": department.id, "email": '%s@seafile_group' % str(department.id), "parent_group_id": department.parent_group_id, "name": department.group_name, "owner": department.creator_name, "created_at": created_at, "avatar_url": request.build_absolute_uri(avatar_url), } result.append(department_info) return Response(result)
def get_group_info(request, group_id, avatar_size=GROUP_AVATAR_DEFAULT_SIZE): group = seaserv.get_group(group_id) try: avatar_url, is_default, date_uploaded = api_grp_avatar_url(group.id, avatar_size) except Exception as e: logger.error(e) avatar_url = get_default_group_avatar_url() val = utc_to_local(dt(group.timestamp)) group_info = { "id": group.id, "name": group.group_name, "creator": group.creator_name, "created_at": val.strftime("%Y-%m-%dT%H:%M:%S") + DateFormat(val).format('O'), "avatar_url": request.build_absolute_uri(avatar_url), "admins": get_group_admins(group.id), } return group_info
def get_group_info(request, group_id, avatar_size=GROUP_AVATAR_DEFAULT_SIZE): group = seaserv.get_group(group_id) try: avatar_url, is_default, date_uploaded = api_grp_avatar_url(group.id, avatar_size) except Exception as e: logger.error(e) avatar_url = get_default_group_avatar_url() isoformat_timestr = timestamp_to_isoformat_timestr(group.timestamp) group_info = { "id": group.id, "name": group.group_name, "owner": group.creator_name, "created_at": isoformat_timestr, "avatar_url": request.build_absolute_uri(avatar_url), "admins": get_group_admins(group.id), "wiki_enabled": is_wiki_mod_enabled_for_group(group_id) } return group_info
def get(self, request): """ List all groups. """ org_id = None username = request.user.username if is_org_context(request): org_id = request.user.org.org_id user_groups = seaserv.get_org_groups_by_user(org_id, username) else: user_groups = seaserv.get_personal_groups_by_user(username) try: size = int(request.GET.get('avatar_size', GROUP_AVATAR_DEFAULT_SIZE)) except ValueError: size = GROUP_AVATAR_DEFAULT_SIZE with_repos = request.GET.get('with_repos') with_repos = True if with_repos == '1' else False groups = [] for g in user_groups: try: avatar_url, is_default, date_uploaded = api_grp_avatar_url(g.id, size) except Exception as e: logger.error(e) avatar_url = get_default_group_avatar_url() val = utc_to_local(dt(g.timestamp)) group = { "id": g.id, "name": g.group_name, "creator": g.creator_name, "created_at": val.strftime("%Y-%m-%dT%H:%M:%S") + DateFormat(val).format('O'), "avatar_url": request.build_absolute_uri(avatar_url), "admins": self._get_group_admins(g.id), } if with_repos: if org_id: group_repos = seafile_api.get_org_group_repos(org_id, g.id) else: group_repos = seafile_api.get_repos_by_group(g.id) repos = [] for r in group_repos: repo = { "id": r.id, "name": r.name, "desc": r.desc, "size": r.size, "size_formatted": filesizeformat(r.size), "mtime": r.last_modified, "mtime_relative": translate_seahub_time(r.last_modified), "encrypted": r.encrypted, "permission": r.permission, "owner": r.user, "owner_nickname": email2nickname(r.user), "share_from_me": True if username == r.user else False, } repos.append(repo) group['repos'] = repos groups.append(group) return Response(groups)