예제 #1
0
def get_date_count(date=None, user=1):
    if not date:
        date = timezone.localtime(timezone.now()).date()

    return functions.get_all_review(user=functions.get_user(user))\
        .annotate(date=TruncDate('review_time'))\
        .filter(date=date).count()
예제 #2
0
    def get_list(self):
        import resources

        url = reverse_lazy("resources")
        self.resource_names = [{"name": _("Resources"), "url": url}]
        self.resource_list = resources.get_resources()

        item = dandan.value.AttrDict()
        query = self.kwargs.get("query")
        if not query:
            return

        indices = query.split("/")

        for index in indices:
            try:
                index = int(index)
            except ValueError:
                return

            if len(self.resource_list) <= index:
                return

            item = self.resource_list[index]

            url += "{}/".format(index)
            name = dandan.value.AttrDict()
            name.name = item.name
            name.url = url

            self.resource_names.append(name)
            self.resource_type = item.type
            self.resource_list = item.list

        if self.resource_list and isinstance(self.resource_list[0], str):
            self.resource_dict = {
                title: index
                for index, title in enumerate(self.resource_list)
            }

        if self.get_status("dictionary") != 0 and self.resource_type == "list":
            words_list = models.Word.objects.values_list('title')
            words_set = set([var[0] for var in words_list])
            self.un_dictionary_list = list(set(self.resource_list) - words_set)
            self.un_dictionary_list = sorted(
                self.un_dictionary_list, key=lambda e: self.resource_dict[e])

            # logger.debug("un dictionary list length %s"a, len(self.un_dictionary_list))

        if self.get_status("review") != 0 and self.resource_type == "list":
            words_list = functions.get_all_review(
                user=self.request.user).values_list('word__title')
            words_set = set([var[0] for var in words_list])
            self.un_review_list = list(set(self.resource_list) - words_set)
            self.un_review_list = sorted(self.un_review_list,
                                         key=lambda e: self.resource_dict[e])
예제 #3
0
def get_date(date=None, user=1):
    if not date:
        date = timezone.localtime(timezone.now()).date()

    return functions.get_all_review(user=functions.get_user(user))\
        .annotate(date=TruncDate('review_time'))\
        .filter(date=date)\
        .annotate(hour=TruncHour('review_time'))\
        .values("hour")\
        .annotate(count=Count('id'))\
        .order_by("hour")
예제 #4
0
 def remove_review(self):
     id = int(self.kwargs.get("id", None))
     review = functions.get_all_review(user=self.request.user).filter(
         id=id).first()
     if not review:
         return JsonResponse({
             "success": False,
             "error": 1,
             "description": _("Review not exists."),
         })
     review.delete()
     return JsonResponse({
         "success": True,
         "action": 'word',
         "description": _("Remove review success."),
     })
예제 #5
0
    def edit_reset(self, form):
        review = functions.get_all_review(
            self.request.user).filter(id=self.kwargs.get("id", None)).first()
        if not review:
            return JsonResponse({
                "success": False,
                "action": 'reset',
                "description": _("Review does not exists"),
            })

        functions.reset_review(review)

        return JsonResponse({
            "success": True,
            "action": 'reset',
            "description": _("Reset review success."),
        })
예제 #6
0
    def add_review(self):
        word = self.save_word()
        if isinstance(word, JsonResponse):
            return word
        review = functions.get_all_review(user=self.request.user).filter(
            word=word).first()
        if not review:
            review = functions.set_review(word=word, user=self.request.user)

        data = {
            "success": True,
            "action": 'review',
            "description": _("Add to review success."),
        }
        if self.request.user.is_staff:
            data['edit_url'] = reverse_lazy("edit", kwargs={"id": word.id})
            logger.debug(data['edit_url'])
        return JsonResponse(data)
예제 #7
0
파일: study.py 프로젝트: StevenBaby/words
def set_skip(user=1):
    skiped = functions.get_all_review(user=user)\
        .filter(review__gt=0).update(review=0, skip=F("skip") + 1)
    logger.debug("skiped review count %s", skiped)
예제 #8
0
파일: study.py 프로젝트: StevenBaby/words
def get_hard(user=1):
    return functions.get_all_review(user=user)\
        .exclude(hard=0)\
        .exclude(review_time__lte=timezone.now())\
        .filter(review_time__gt=F('hard_time'))\
        .filter(hard_time__lte=timezone.now())
예제 #9
0
def get_count(user=1):
    return functions.get_all_review(user=functions.get_user(user))\
        .annotate(date=TruncDate('first_time'))\
        .values("date")\
        .annotate(count=Count('id'))\
        .order_by("-date")
예제 #10
0
def get_error(error, user=1):

    return functions.get_all_review(user=functions.get_user(user))\
        .filter(error=error)\
        .order_by("review_time")
예제 #11
0
def get_error_count(user=1):

    return functions.get_all_review(user=functions.get_user(user))\
        .values("error")\
        .annotate(count=Count('error'))\
        .order_by("-error")
예제 #12
0
def get_level(level, user=1):

    return functions.get_all_review(user=functions.get_user(user))\
        .filter(level=level)\
        .order_by("review_time")
예제 #13
0
def get_level_count(user=1):

    return functions.get_all_review(user=functions.get_user(user))\
        .values("level")\
        .annotate(count=Count('level'))\
        .order_by("-level")
예제 #14
0
def get_review_count(user):
    return functions.get_all_review(user=functions.get_user(user)).count()
예제 #15
0
파일: study.py 프로젝트: StevenBaby/words
def get_near_review(user=1):
    return functions.get_all_review(user=user)\
        .filter(update_time__lt=timezone.now() - datetime.timedelta(seconds=1))\
        .order_by("review_time").first()
예제 #16
0
파일: study.py 프로젝트: StevenBaby/words
def get_near_hard(user=1):
    return functions.get_all_review(user=user)\
        .exclude(hard=0)\
        .exclude(review_time__lte=timezone.now())\
        .filter(review_time__gt=F('hard_time'))\
        .order_by("hard_time").first()
예제 #17
0
파일: study.py 프로젝트: StevenBaby/words
def get_review(user=1):
    return functions.get_all_review(user=user)\
        .filter(review_time__lte=timezone.now())\
        .filter(update_time__lt=timezone.now() - datetime.timedelta(seconds=1))
예제 #18
0
파일: study.py 프로젝트: StevenBaby/words
def get_practice(user=1):

    return models.Word.objects.exclude(
        id__in=functions.get_all_review(user).values("word"))