示例#1
0
文件: views.py 项目: noQ/TriviaOnline
def get_all_questions():
    """
        Retrieve all question from DB and save to HashMap
        note: this will take a while to load but the web call response will be between 1-5 millisec.
    """
    questions = ObjectMemoryCache.get_key(Question)
    if questions is None:
        questions = Question.objects
        ''' set in cache '''
        memo = ObjectMemoryCache(Question, "qid")
        memo.queryset(questions)
        memo.load(serialize=True, serializer_class=QuestionResponse)
        ''' get key '''
        questions = ObjectMemoryCache.get_key(Question)
    return questions
示例#2
0
文件: views.py 项目: noQ/TriviaOnline
 def get(self, request, limit=20):
     token = TokenMiddleware.get_token(request)
     if token is None:
         raise NotAuthenticated("Token invalid or expired!")
     uid = str(token.get(PARAMETER_UID))
     
     leader_table = ObjectMemoryCache.get_key(Leaderboard)
     if leader_table:
         leader_table = leader_table.values()
     else:
         ''' retrieve X leaders from leaderboard table '''
         leader_table = Leaderboard.objects[:limit]
         if len(leader_table) == 0:
             return []
         memo = ObjectMemoryCache(Leaderboard, PARAMETER_ID)
         memo.queryset(leader_table)
         memo.load(serialize=True, serializer_class=Leader)
         leader_table = memo.get_key(Leaderboard)
     return Response(leader_table)
示例#3
0
文件: views.py 项目: noQ/TriviaOnline
 def get(self, request):
     categories = ObjectMemoryCache.get_key(Category)
     if categories:
         categories = categories.values()
     else:
         ''' extract all categories with status 'active' true '''
         categories = Category.objects(active=True)
         if len(categories) == 0:
             return Response([])
         ''' put categories in memory '''
         memo = ObjectMemoryCache(Category, PARAMETER_CATEGORY_ID)
         memo.queryset(categories)
         loaded, categories = memo.load(serialize=True, serializer_class=CategoryResponse)
         if not loaded:
             raise APIException(detail="Unable to load categories")            
     return Response(categories)