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()
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])
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")
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."), })
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."), })
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)
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)
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())
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")
def get_error(error, user=1): return functions.get_all_review(user=functions.get_user(user))\ .filter(error=error)\ .order_by("review_time")
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")
def get_level(level, user=1): return functions.get_all_review(user=functions.get_user(user))\ .filter(level=level)\ .order_by("review_time")
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")
def get_review_count(user): return functions.get_all_review(user=functions.get_user(user)).count()
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()
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()
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))
def get_practice(user=1): return models.Word.objects.exclude( id__in=functions.get_all_review(user).values("word"))