Beispiel #1
0
def award_points(request, answer_id, queryset=Answer.objects.all()):
    """ do transfer point from question's author to answerer """
    answer = get_object_or_404(queryset, id=answer_id)
    
    if request.user == answer.author:
        raise Http404(_(u'You can not award yourself!'))
    elif answer.question.author != request.user:
        raise Http404(_(u'This is not your question!'))
    elif answer.question.bounty_points:
        points = answer.question.bounty_points
        reason=ugettext(u'Award points to answer: %(answer)s') % {'answer': answer }
        try:
            UnitPack.consume(request.user, quantity=points, reason=reason)
        except ValueError, msg:
            url = construct_main_site_url(reverse('prepaid-index', urlconf=settings.MUACCOUNTS_MAIN_URLCONF))
            if request.is_ajax():
                data = simplejson.dumps({'not_enough_credits': '1',
                                         'available_credits': UnitPack.get_user_credits(request.user),
                                         'required_credits': points,
                                         'awarded': '0'})
                return HttpResponse(data, mimetype="application/json")
            else:
                return HttpResponseRedirect(url)
        else:
            UnitPack.credit(answer.author, quantity=points, reason=reason)
            PointAward(answer=answer, points=points).save()
            
            if request.is_ajax():
                data = simplejson.dumps({'not_enough_credits': '0', 
                                         'awarded': '1'})
                return HttpResponse(data, mimetype="application/json")
            else:
                return redirect(answer)
Beispiel #2
0
def ask(request, form_class=MuAskForm, template_name='ask.html'):
    if request.method == "POST":
        form = form_class(request.POST)
        if request.muaccount.is_bounty:
            form.fields['bounty_points'].max_value = UnitPack.get_user_credits(request.user)
        if form.is_valid():
            question = form.save(request)
            return redirect(question)
    else:
        form = form_class()
        if request.muaccount.is_bounty:
            form.fields['bounty_points'].max_value = UnitPack.get_user_credits(request.user)

    tags = _get_tags_cache_json(queryset=Tag.objects.filter(deleted=False, 
                                            questions__muaccount=request.muaccount))
    return render_to_response(template_name, {
                              'form': form,
                              'tags': tags,
                              }, context_instance=RequestContext(request))
Beispiel #3
0
def activity_site_advertise(request, object_id):
	obj = get_object_or_404(Activity, pk=object_id, user=request.user, published=True).derived
	
	if request.method == 'POST' and not obj.date_site_advertised:
		# Publish to site's twitter profile
		# obj.site_advertise()
		site_twitter = get_site_twitter_info(obj)
		cost = site_twitter['cost']
		need = cost - UnitPack.get_user_credits(request.user)
		if need <= 0:
			msg = 'Posted to %s\'s twitter profile' % site_twitter['user']
			global_tweet(obj.message)
			if cost > 0:
				UnitPack.consume(request.user, cost, reason=msg)
			request.user.message_set.create(message=msg)
			obj.date_site_advertised = datetime.datetime.now()
			obj.save()
		else:
			request.user.message_set.create(message='Sorry, you need %s more points' % need)
				
	return HttpResponseRedirect(obj.get_manage_url())
Beispiel #4
0
def task_create(request):
	form_class = AddTaskForm
	
	if request.method == 'POST':
		form = form_class(request.POST, request.FILES)
		
		if form.is_valid():
			budget = form.cleaned_data['budget']
			if budget > UnitPack.get_user_credits(request.user):
				form.errors['budget'] = ['Your budget cannot be higher than your current points']
			else:
				task = form.save(commit=False)
				task.user = request.user
				task.budget = budget
				task.save()
				task.tags = form.cleaned_data['tags']
				if form.cleaned_data['attachment']:
					task.attach(form.cleaned_data['attachment'])
				if task.budget > 0:
					UnitPack.consume(request.user, budget, reason=BUDGET_REASON % {'task':task.name})
				return redirect('tasks-task_setup', task.id)
	else:
		form = form_class(initial=_get_and_delete_form_data(request))
	return {'form':form}
Beispiel #5
0
def show_user_credits(user):
	return UnitPack.get_user_credits(user)