예제 #1
0
파일: tests.py 프로젝트: reidswan/Checkit
 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)
예제 #2
0
파일: tests.py 프로젝트: reidswan/Checkit
 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)
예제 #3
0
    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)
예제 #4
0
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'
    })
예제 #5
0
    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)
예제 #6
0
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]))
예제 #7
0
파일: tests.py 프로젝트: reidswan/Checkit
 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)