Example #1
0
def new(request):
    """Create a new Lets update."""

    form = LetsForm(creator=request.user, data=request.POST)
    form_valid = form.is_valid()
    if form_valid:
        let = form.save()
        u = request.user
        let_entries = list(u.lets.all()[:3])
        u.lets.invalidate(*let_entries)
        update_progress(u.profile, action='lets')
        update_rewards(u, 'lets')
        process_mojo_action(u, 'lets')

    if request.is_ajax():
        data = {'is_valid': form_valid,
                'errors': form.errors,
                'msg': 'Saved'}
        if form_valid:
            data['user'] = {
                'profile_url': reverse('users.profile',
                                        args=[request.user.username]),
                'picture_url': pp_url(request.user),
                'display_name': request.user.first_name,
            }
            data['letobj'] = {
                'content': "Let's... " + raw_to_plain(let.content),
                'category_url': let.get_category_url(),
                'category_class': let.get_category_class(),
                'category_display': let.get_category_display(),
                'category_img': let.get_category_img(large=True),
                'js_date': js_datetime(let.created),
                'timesince': timesince(let.created),
                'delete_url': reverse('lets.delete', args=[let.pk]),
            }
        return JSONResponse(data)

    next_url = reverse('lets.wall', args=[request.user.username])
    return HttpResponseRedirect(next_url)
Example #2
0
def delete(request, lets_id):
    """Delete a Lets object, only if logged in user is the creator."""

    lets = get_object_or_404(Lets, pk=lets_id)
    if lets.creator != request.user:
        raise PermissionDenied

    lets.delete()

    # Coins
    profile = request.user.profile
    user_key = Lets.u_cache_key(request.user)
    lets_key = cache.get(user_key)
    if lets_key:
        if lets_key > 0:
            # No 250 -
            cache.decr(user_key)

        if lets_key <= 0:
            # Yes 250 -
            profile.update(coins=profile.coins -
                           ucs.ACTIONS_COINS['lets']['daily'])
            cache.delete(user_key)
    else:
        # yes 250 -
        profile.update(coins=profile.coins -
                       ucs.ACTIONS_COINS['lets']['daily'])
    update_progress(profile, action='lets')
    update_rewards(request.user, 'lets')
    process_mojo_action_down(request.user, 'lets')

    # TODO: return progress_data with ajax request. Modify js on lets side to
    #   update profile completion widget
    next_url = reverse('lets.wall', args=[request.user.username])
    if request.is_ajax():
        return JSONResponse({'is_valid': True,
                             'msg': 'Deleted'})
    return HttpResponseRedirect(next_url)