コード例 #1
0
ファイル: views.py プロジェクト: rymur/notecards
def create_card(request, deckid):
    '''
    Accepts an AJAX POST request to create a new card.
    Returns card information in HTML to be inserted into the page.
    '''
    if request.method == 'POST':
        userID = request.user.id
        user = User.objects.get(pk=userID)
        # redundant filter to make sure user owns the deck
        deck = get_object_or_404(Deck, pk=deckid, author=user)
        form = cardForm(request.POST)
        if form.is_valid():
            front = form.cleaned_data['front']
            back = form.cleaned_data['back']
            card = Card(front=front, back=back, deck=deck)
            card.save()
            # Card goes into a select box so we use the <option> tag
            content = '<option>{0} -- {1}</option>'.format(front, back)
            return HttpResponse(status=201,
                                content=content,
                                content_type='text/html')
        else:
            return render(request, 'notecards/build.html', {'form': form})
コード例 #2
0
ファイル: views.py プロジェクト: rymur/notecards
def create_card(request, deckid):
    '''
    Accepts an AJAX POST request to create a new card.
    Returns card information in HTML to be inserted into the page.
    '''
    if request.method == 'POST':
        userID = request.user.id
        user = User.objects.get(pk=userID)
        # redundant filter to make sure user owns the deck
        deck = get_object_or_404(Deck, pk=deckid, author=user)
        form = cardForm(request.POST)
        if form.is_valid():
            front = form.cleaned_data['front']
            back = form.cleaned_data['back']
            card = Card(front=front, back=back, deck=deck)
            card.save()
            # Card goes into a select box so we use the <option> tag
            content = '<option>{0} -- {1}</option>'.format(front, back)
            return HttpResponse(status=201,
                                content=content,
                                content_type='text/html')
        else:
            return render(request, 'notecards/build.html', {'form': form})
コード例 #3
0
ファイル: views.py プロジェクト: rymur/notecards
def clone_deck(request):
    '''Creates a copy of a user's deck for another user to own.'''
    deckid = request.GET.get('did')
    userID = request.user.id
    user = User.objects.get(pk=userID)
    deck = Deck.objects.get(pk=deckid)
    # Make sure user isn't trying to clone their own deck
    if deck.author != user:
        newDeck, created = Deck.objects.get_or_create(author=user,
                                                      title=deck.title)
        # Check to make sure that user doesn't already have a deck the
        # same title
        if not created:
            return HttpResponse('Error: You already own a deck with '
                                'this title')
        # Copy the deck
        newDeck.slug = deck.slug
        newDeck.description = deck.description
        newDeck.published = False
        newDeck.save()
        # Copy the tags
        tags = deck.tags.names()
        for tag in tags:
            newDeck.tags.add(tag)
        newDeck.save()
        # Copy the cards
        for card in deck.card_set.all():
            newCard = Card(front=card.front,
                           back=card.back,
                           deck=newDeck,
                           score=0)
            newCard.save()
        # Redirect user to their newly cloned deck
        url = reverse('view_deck') + '?did=' + str(newDeck.id)
        return HttpResponseRedirect(url)
    else:
        return HttpResponse('Error: You already own this deck')
コード例 #4
0
ファイル: views.py プロジェクト: rymur/notecards
def clone_deck(request):
    '''Creates a copy of a user's deck for another user to own.'''
    deckid = request.GET.get('did')
    userID = request.user.id
    user = User.objects.get(pk=userID)
    deck = Deck.objects.get(pk=deckid)
    # Make sure user isn't trying to clone their own deck
    if deck.author != user:
        newDeck, created = Deck.objects.get_or_create(author=user,
                                                      title=deck.title)
        # Check to make sure that user doesn't already have a deck the
        # same title
        if not created:
            return HttpResponse('Error: You already own a deck with '
                                'this title')
        # Copy the deck
        newDeck.slug = deck.slug
        newDeck.description = deck.description
        newDeck.published = False
        newDeck.save()
        # Copy the tags
        tags = deck.tags.names()
        for tag in tags:
            newDeck.tags.add(tag)
        newDeck.save()
        # Copy the cards
        for card in deck.card_set.all():
            newCard = Card(front=card.front,
                           back=card.back,
                           deck=newDeck,
                           score=0)
            newCard.save()
        # Redirect user to their newly cloned deck
        url = reverse('view_deck') + '?did=' + str(newDeck.id)
        return HttpResponseRedirect(url)
    else:
        return HttpResponse('Error: You already own this deck')