def _current_languages(request): """ Get a list of current languages for a group and page. This list is meant to be returned to the client in the "session" model. :param request: the current request :return: a list of languages """ url = util.get_url_from_request(request) languages = [] user_id = request.authenticated_userid page = annotran.pages.models.Page.get_by_uri(util.strip_logout(url)) if page is not None: public_translations = tran_models.get_public_translations(page) # public_languages = models.Language.get_public(page) for language in public_translations: languages.append({ 'groupubid': '__world__', 'name': language.name, 'id': language.pubid, 'url': request.route_url('translation_read', public_language_id=language.pubid, public_group_id='__world__') }) if user_id is None: return languages user = request.authenticated_user if user is None: return languages # return languages for all groups for that particular user translations_for_page = tran_models.get_page_translations(page) for group in user.groups: # list of languages for a group # this needs to also filter by the public group ID for language in translations_for_page: if group.id == language.group_id: languages.append({ 'groupubid': group.pubid, 'name': language.name, 'id': language.pubid, 'url': request.route_url('translation_read', public_language_id=language.pubid, public_group_id=group.pubid) }) return languages
def _current_votes(request): """ Get votes for all users (authors) who wrote translations on a given page in a specified language. This list is meant to be returned to the client in the "session" model :param request: the current request :return: a list of votes """ votes = [] url = util.get_url_from_request(request) page = annotran.pages.models.Page.get_by_uri(util.strip_logout(url)) user = request.authenticated_user if page is not None: public_translations = tran_models.get_public_translations(page) # public_languages = models.Language.get_public(page) for language in public_translations: l_votes = annotran.votes.models.Vote.get_author_scores(page, language) if l_votes: for auth_score in l_votes: votes.append({ 'author_id': auth_score.username, 'avg_score': str(round(decimal.Decimal(auth_score.average), 2)), 'language_id': language.pubid, 'group_id': "__world__", }) if user is None: return votes translations_for_page = tran_models.get_page_translations(page) # languages_for_page = models.Language.get_by_page(page) for group in user.groups: for language in translations_for_page: for auth_score in annotran.votes.models.Vote.get_author_scores(page, language, group): votes.append({ 'author_id': auth_score.username, 'avg_score': str(round(decimal.Decimal(auth_score.average), 2)), 'language_id': language.pubid, 'group_id': group.pubid, }) return votes