def getCommunityApps(community_id=None, team_key=None, app_count=None): if community_id: community = Community.get_by_id(community_id) elif team_key: community = Community.query(Community.team_key == team_key).get() return community.apps[0:app_count] if app_count else community.apps
def getAppAndCommunity(message, user): if message.team_key: community = Community.getCommunityFromTeamKey(team_key=message.team_key) appinfo = getAppInfo(community.key.id()) elif message.app_name: appinfo = AppInfo.get(name=message.app_name, platform=message.platform_type) community = None if appinfo is None: appInfoMessage = AppInfoMessage(name=message.app_name, version=message.app_version, platform=message.platform_type) appinfo = AppInfo.insert(appInfoMessage) else: app_community = getCommunityForApp(id=appinfo.key.id()) if app_community and isMember(app_community, user): community = app_community elif message.community_name: community_id = Community.getCommunity(community_name=message.community_name).id community = Community.get_by_id(community_id) appinfo = getAppInfo(community_id) else: raise endpoints.BadRequestException("Please specify a community or app") return appinfo, community
def edit_welcome_msg(self, request): community = Community.get_by_id(request.id) if community: community.welcome_msg = request.welcome_msg community.put() return ResponseMessage(success=True) else: return ResponseMessage(success=False)
def community_user_list(cls, community_id=None, community_key=None, only_managers=False): if (not community_key) and community_id: community_key = Community.get_by_id(community_id).key users = [] if community_key: query = cls.query().filter(cls.community == community_key) if only_managers: query = query.filter(cls.role == UserRoleType.MANAGER) users = query.fetch() return users
def edit_user_role(self, request): user = get_user_from_request(user_id=request.user_id, user_email=request.user_email) community = Community.get_by_id(request.community_id) resp = None if community: if user: resp = UserRole.edit(user, community, request.role) elif request.include_invite: resp = Invite.change_user_role(request.user_email, community, request.role) return ResponseMessage(success=True if resp else False)
def delete_user(self, request): user = get_user_from_request(user_id=request.user_id, user_email=request.user_email) community = Community.get_by_id(request.community_id) success = False if community: if user: UserRole.delete(user, community) success = True elif request.include_invite: Invite.delete(request.user_email, community) success = True return ResponseMessage(success=success)
def anno_list(self, request): """ Exposes an API endpoint to retrieve a list of anno. """ user = auth_user(self.request_state.headers) limit = 10 if request.limit is not None: limit = request.limit is_plugin = request.is_plugin or False curs = None if request.cursor is not None: try: curs = Cursor(urlsafe=request.cursor) except BadValueError: raise endpoints.BadRequestException('Invalid cursor %s.' % request.cursor) select_projection = None if request.select is not None: select_projection = request.select.split(',') if request.query_type == AnnoQueryType.CREATED: return Anno.query_by_app_by_created(request.app, limit, select_projection, curs, user) elif request.query_type == AnnoQueryType.VOTE_COUNT: return Anno.query_by_vote_count(request.app, user) elif request.query_type == AnnoQueryType.FLAG_COUNT: return Anno.query_by_flag_count(request.app, user) elif request.query_type == AnnoQueryType.ACTIVITY_COUNT: return Anno.query_by_activity_count(request.app, user) elif request.query_type == AnnoQueryType.LAST_ACTIVITY: return Anno.query_by_last_activity(request.app, user) elif request.query_type == AnnoQueryType.COUNTRY: return Anno.query_by_country(request.app, user) elif request.query_type == AnnoQueryType.COMMUNITY: community = Community.get_by_id(request.community) return Anno.query_by_community(community, limit, select_projection, curs, user) elif request.query_type == AnnoQueryType.APP: app = AppInfo.get(request.app) return Anno.query_by_app(app, limit, select_projection, curs, user) else: return Anno.query_by_page(limit, select_projection, curs, user, is_plugin)
def create(cls, message, creator): community_name = "" community = Community.get_by_id(message.community) invitation_created = cls.query(ndb.AND(cls.email == message.email, cls.community == community.key) ).count() if community and not invitation_created: if message.role is None: message.role = UserRoleType.MEMBER if message.invite_msg is None: message.invite_msg = community.welcome_msg invite_hash = str(uuid.uuid4()) entity = cls(name=message.name, email=message.email, role=message.role, invite_msg=message.invite_msg, invite_hash=invite_hash, community=community.key, creator=creator.key) entity.put() if entity: community_name = community.name return community_name
def list_by_community(cls, community_id): return cls.query(cls.community == Community.get_by_id(community_id).key).fetch()