Mercurial > libervia-web
comparison src/server/server.py @ 1093:eda7a1c6532a
server: new getAffiliation method:
getAffiliation allows to retrieve affiliation to a pubsub node for logged user. The method handle cache in user's session, avoiding requesting pubsub service when possible.
author | Goffi <goffi@goffi.org> |
---|---|
date | Fri, 01 Jun 2018 13:03:52 +0200 |
parents | 9c41b7e91172 |
children | 01e95ec9df9e |
comparison
equal
deleted
inserted
replaced
1092:63ed5f6bd4eb | 1093:eda7a1c6532a |
---|---|
1918 if len(args) == 1: | 1918 if len(args) == 1: |
1919 return args[0](session) | 1919 return args[0](session) |
1920 else: | 1920 else: |
1921 return (iface(session) for iface in args) | 1921 return (iface(session) for iface in args) |
1922 | 1922 |
1923 @defer.inlineCallbacks | |
1924 def getAffiliation(self, request, service, node): | |
1925 """retrieve pubsub node affiliation for current user | |
1926 | |
1927 use cache first, and request pubsub service if not cache is found | |
1928 @param request(server.Request): request linked to the session | |
1929 @param service(jid.JID): pubsub service | |
1930 @param node(unicode): pubsub node | |
1931 @return (unicode): affiliation | |
1932 """ | |
1933 sat_session = self.getSessionData(request, session_iface.ISATSession) | |
1934 if sat_session.profile is None: | |
1935 raise exceptions.InternalError(u'profile must be set to use this method') | |
1936 affiliation = sat_session.getAffiliation(service, node) | |
1937 if affiliation is not None: | |
1938 defer.returnValue(affiliation) | |
1939 else: | |
1940 try: | |
1941 affiliations = yield self.bridgeCall('psAffiliationsGet', service.full(), node, sat_session.profile) | |
1942 except Exception as e: | |
1943 log.warning("Can't retrieve affiliation for {service}/{node}: {reason}".format( | |
1944 service=service, node=node, reason=e)) | |
1945 affiliation = u"" | |
1946 else: | |
1947 try: | |
1948 affiliation = affiliations[node] | |
1949 except KeyError: | |
1950 affiliation = u"" | |
1951 sat_session.setAffiliation(service, node, affiliation) | |
1952 defer.returnValue(affiliation) | |
1953 | |
1923 ## Websocket (dynamic pages) ## | 1954 ## Websocket (dynamic pages) ## |
1924 | 1955 |
1925 def getWebsocketURL(self, request): | 1956 def getWebsocketURL(self, request): |
1926 base_url_split = self.getExtBaseURLData(request) | 1957 base_url_split = self.getExtBaseURLData(request) |
1927 if base_url_split.scheme.endswith('s'): | 1958 if base_url_split.scheme.endswith('s'): |