def test_not_past_due_if_due_date_in_past(self): """ Checks that Checklist.past_due() returns False on questions with future due dates """ c = CheckList(pub_date=timezone.now(), due_date=timezone.now() - datetime.timedelta(days=1), checklist_title="Test") self.assertIs(c.past_due(), True)
def test_not_due_soon_on_past_due_date(self): """ Checks that CheckList.due_soon() returns False on questions past due date """ c = CheckList(pub_date=timezone.now(), due_date=timezone.now() - datetime.timedelta(days=2), checklist_title="Test") self.assertIs(c.due_soon(), False)
def post(self, request): """ post a new checklist """ name = request.POST.get('name') if not name: return HttpResponseBadRequest() checklist = CheckList(name=name) checklist.save() return redirect('checklist', id=checklist.id)
def new_checklist(request): if not request.user.is_authenticated(): return HttpResponseRedirect(reverse("checklist:login")) return render(request, 'checklist/edit.html', { 'checklist': CheckList(), 'page_title': 'New Checklist' })
def post(self, request): """ curate a checklist, store it to db, goto the checklist page """ place = request.POST.get('place') if not place: return HttpResponseBadRequest() checklist = CheckList(name=place + " checklist") checklist.save() checklist_items = [] # library call to get checklist for checklist_item in get_checklist(place): checklist_items.append(CheckListItem(checklist=checklist, item=checklist_item)) CheckListItem.objects.bulk_create(checklist_items) return redirect('checklist', id=checklist.id)
def post_edit(request): '''Handle edit POST before redirecting''' if not request.user.is_authenticated: raise Http404("") if request.method != "POST": # only handle POSTed edits raise Http404("") if 'checklist_id' not in request.POST.keys( ) or request.POST['checklist_id'] in ["None", None, '']: # from /new print("NEW! :D") # debug checklist = CheckList(pub_date=timezone.now(), due_date=timezone.now() + datetime.timedelta(days=1)) checklist.owner = request.user else: # from /edit checklist_id = int(request.POST['checklist_id']) checklist = get_object_or_404(CheckList, pk=checklist_id) if checklist.owner.pk != request.user.pk: raise Http404("") if "title" in request.POST.keys(): checklist.checklist_title = request.POST["title"] if "duedate_date" in request.POST.keys( ) and "duedate_time" in request.POST.keys(): dt = parse_datetime(request.POST["duedate_date"], request.POST["duedate_time"]) checklist.due_date = dt checklist.save( ) # ensure the checklist has a primary key, and commit title and due_date change (if made) for item in checklist.checklistitem_set.all( ): # first check for edits and deletes of existing items title_key = "item" + str(item.id) + "_title" desc_key = "item" + str(item.id) + "_desc" if title_key in request.POST.keys() and request.POST[title_key] != "": print("modifying") # debug item.item_title = request.POST[title_key] item.item_desc = request.POST[desc_key] item.save() else: print("deleting") #debug item.delete() handled = [] # ensure items aren't added twice for key in request.POST.keys(): # check for added items # print(key) #debugging if key.startswith("itemnew") and key not in handled: title_k, desc_k = "", "" if key.endswith("desc"): desc_k = key title_k = key.replace("desc", "title") else: title_k = key desc_k = key.replace("title", "desc") handled += [ title_k, desc_k ] # prevent double add (on encountering e.g. newitem3_title and newitem3_desc) title, desc = request.POST[title_k], request.POST[desc_k] new_item = CheckListItem(item_title=title, item_desc=desc, complete=False) new_item.checklist = checklist new_item.save() # commit changes return HttpResponseRedirect(reverse('checklist:view', args=[checklist.pk]))
def test_complete_checklists(self): """ Checks that CheckList.due_soon() returns False on questions past due date """ c = CheckList(pub_date=timezone.now(), due_date=timezone.now() + datetime.timedelta(days=10), checklist_title="Test") c.save() items = [ CheckListItem(item_title="t1", item_desc="t1", complete=True, checklist=c), CheckListItem(item_title="t2", item_desc="t2", complete=True, checklist=c) ] for i in items: i.save() self.assertIs(c.is_complete(), True)