def get_admin_master_data(self, request): communities_message = [] query = Community.query().filter(Community.team_secret != None) if request.team_key: query = query.filter(Community.team_key == request.team_key) communities = query.fetch() for community in communities: community_message = CommunityAdminMasterMessage() community_message.community_name = community.name community_message.team_key = community.team_key community_message.team_secret = community.team_secret community_message.team_hash = community.team_hash community_message.plan = community.plan app = community.apps[0].get() if app: community_message.app_name = app.name community_message.app_icon = app.icon_url community_message.users = [] if request.get_user_list: for userrole in UserRole.community_user_list(community_key=community.key): user = userrole.user.get() if user and (user.account_type == community.team_key): if user.user_email.split("@")[1] == "devnull.usersource.io": break user_message = UserAdminMasterMessage() user_message.display_name = user.display_name user_message.user_email = user.user_email user_message.password_present = True if user.password else False user_message.role = userrole.role user_message.image_url = user.image_url if community.circles: user_message.circle = community.circles.get(str(userrole.circle_level)) community_message.users.append(user_message) communities_message.append(community_message) return CommunityAdminMasterListMessage(communities=communities_message)
def user_list(self, request): community_user_message_list = [] status = InvitationStatusType.ACCEPTED userroles = UserRole.community_user_list(request.id) for userrole in userroles: user = userrole.user.get() if user: user_message = UserMessage(id=user.key.id(), display_name=user.display_name, user_email=user.user_email) community_user_message = CommunityUserMessage(user=user_message, role=userrole.role, status=status) community_user_message_list.append(community_user_message) if request.include_invite: status = InvitationStatusType.PENDING from model.invite import Invite invited_users = Invite.list_by_community(request.id) for invited_user in invited_users: user_message = UserMessage(display_name=invited_user.name, user_email=invited_user.email) community_user_message = CommunityUserMessage(user=user_message, role=invited_user.role, status=status) community_user_message_list.append(community_user_message) return CommunityUserListMessage(user_list=community_user_message_list)
def get_noft_devices(cls, first_user, anno, action_type): """ Get list of device ids to which notification to be sent :param ndb.Model first_user: "******" datastore of user who did anno action :param ndb.Model anno: "anno" datastore :param str action_type: one of the :py:class:`.AnnoActionType` :returns: list of device ids for iOS and Android devices :rtype: dict """ interested_user_deviceids = {PlatformType.IOS: [], PlatformType.ANDROID: []} community_manager_deviceids = {PlatformType.IOS: [], PlatformType.ANDROID: []} # get all interested users for anno if action_type is other than "created" if action_type != AnnoActionType.CREATED: interested_user_list = UserAnnoState.list_users_by_anno( anno_key=anno.key, projection=[UserAnnoState.user, UserAnnoState.last_read] ) interested_user_deviceids = cls.list_deviceid(interested_user_list) # anno is in community-scope then send notification to all managers of that community if anno.community: community_id = anno.community.id() community_manager_list = UserRole.community_user_list(community_id=community_id, only_managers=True) community_manager_deviceids = cls.list_deviceid(community_manager_list) # merging device ids of interested users and community managers notf_devices = { platform: list(set(interested_user_deviceids[platform] + community_manager_deviceids[platform])) for platform in interested_user_deviceids } # removing first user from push notification task if first_user.device_id and first_user.device_type: if first_user.device_id in notf_devices[first_user.device_type]: notf_devices[first_user.device_type].remove(first_user.device_id) return notf_devices