def test_get_js_fails_with_missing_request_uri(self): inst = Sijax() try: inst.get_js() self.fail() except SijaxError: pass
def test_changing_uris_results_in_a_differnt_js_output(self): inst = Sijax() req_uri = "http://localhost:8080/submit_here" json_uri = "http://localhost:8080/json2.js" inst.set_request_uri(req_uri) js = inst.get_js() self.assertTrue('Sijax.setRequestUri("%s");' % req_uri in js) self.assertFalse('Sijax.setJsonUri' in js) inst.set_json_uri(json_uri) js = inst.get_js() self.assertTrue('Sijax.setRequestUri("%s");' % req_uri in js) self.assertTrue('Sijax.setJsonUri("%s");' % json_uri in js)
def all(request, template='accounts/all.html'): profiles_for_game = UserProfilePerInstance.objects.select_related().\ filter( instance=request.current_game ).exclude(user_profile__user__is_active=False ).order_by('-date_created') filter_by_variants = Sijax() filter_by_variants.set_request_uri( reverse('accounts:ajax-filter-players-by-variant')) search_by_kw = Sijax() search_by_kw.set_request_uri(reverse('accounts:ajax-search-players-by-kw')) context = { 'profiles_for_game': profiles_for_game, 'filter_by_variants_form': FilterPlayersByVariantsForm(request), 'search_by_kw_form': SearchPlayersByKeywordsForm(request), 'filter_by_variants_sijax_js': filter_by_variants.get_js(), 'search_by_kw_sijax_js': search_by_kw.get_js(), 'paginate_players_per_page': settings.ENDLESS_PAGINATE_PLAYERS_PER_PAGE, } return render(request, template, context)
def profile(request, id, template_name="accounts/profile.html"): if hasattr(request, 'current_game'): instance = request.current_game else: raise Http404("could not locate a valid game") context = {} player = get_object_or_404(User, id=id) kwargs = {} kwargs['instance'] = request.current_game kwargs['user_profile'] = request.user.get_profile( ) if request.user == player else player.get_profile() try: my_game_profile = UserProfilePerInstance.objects.get(**kwargs) except UserProfilePerInstance.DoesNotExist: raise Http404("user for this game is not registered") if request.method == 'POST': this_page = reverse('accounts:player_profile', args=(id, )) form = CommentForm(data=request.POST) if form.is_valid(): cd = form.cleaned_data log.debug("processed comment_form. cleaned_data: %s" % cd) comment_parent = get_object_or_404(UserProfilePerInstance, id=cd.get('parent_id')) comment = comment_parent.comments.create( content_object=comment_parent, message=cd.get(u'message'), user=request.user, instance=request.current_game, ) if request.POST.has_key( 'video-url') and request.POST.get('video-url') != '': create_video_attachment(comment, request.POST.get('video-url'), request.current_game, request.user) if request.FILES.has_key('picture'): create_image_attachment(comment, request.FILES.get('picture'), request.current_game, request.user) stream_verb = 'commented' stream_utils.action.send( request.user, stream_verb, target=comment_parent, action_object=comment, description="commented on a user profile", ) if request.user != comment_parent.user_profile.user: message = '%s commented on your profile.' % request.user.get_profile( ).screen_name comment_parent.user_profile.user.notifications.create( content_object=comment, message=message) redirect( reverse('accounts:player_profile', args=(comment_parent.user_profile.user.pk, ))) my_games = Instance.objects.exclude(is_disabled=True).filter( pk__in=UserProfilePerInstance.objects.filter( user_profile=player.get_profile()).values_list('instance__pk', flat=True)) stream = Action.objects.get_for_actor( player).\ exclude(verb='user_logged_in').order_by('-datetime')[:10] create_comment_sijax = Sijax() create_comment_sijax.set_request_uri(reverse('comments:ajax-create')) context.update({ 'create_comment_sijax_js': create_comment_sijax.get_js(), }) context.update({ 'player': player, 'profile_per_instance': my_game_profile, 'stream': stream, 'affiliations': my_game_profile.affils.all(), 'my_games': my_games, }) # this line here updates the context with # mission, my_points_for_mission and progress_percentage return render(request, template_name, context)
def _build_context(request, action, activity, user=None): context = {} activity_type = activity.activity_type_readable def _get_related(): if activity_type == 'open_ended': return getattr(activity, 'openended_answers') elif activity_type == 'empathy': return getattr(activity, 'empathy_answers') elif activity_type == 'multi_response': return getattr(activity, 'multichoice_answers') else: for klass in ['AnswerMap', 'AnswerSingleResponse']: related_name = klass.replace('Answer', '').lower() + '_answers' if hasattr(activity, related_name): return getattr(activity, related_name) if action == 'overview': create_comment_sijax = Sijax() create_comment_sijax.set_request_uri(reverse('comments:ajax-create')) context.update({ 'create_comment_sijax_js': create_comment_sijax.get_js(), }) if activity_type != 'multi_response': answers = activity.__class__.objects.none() myAnswer = None myComment = None related = _get_related() if related: answers = related.filter(activity=activity) if user: try: myAnswer = related.get(activity=activity, answerUser=user) my_comments = myAnswer.comments.all().order_by( 'posted_date') myComment = None if my_comments.count(): myComment = my_comments[0] except: pass context.update( dict( answers=answers, myAnswer=myAnswer, myComment=myComment, )) if activity_type in ['multi_response', 'single_response']: choices = MultiChoiceActivity.objects.by_activity( activity=activity) context.update({'choices': choices}) if activity_type == "multi_response": answers = AnswerMultiChoice.objects.answers_by_activity( activity) my_comment = None my_answers = None answer_dict = {} for answer in answers: answer_user = answer.get_user() if not answer_dict.has_key(answer_user): answer_dict[answer_user] = { 'answers': [], 'comments': [] } answer_dict[answer_user]['answers'].append( '<li>%s</li>' % answer.option_value) for comment in answer.comments.all(): if user: if not my_comment: my_comment = comment answer_dict[answer_user]['comments'].append(comment) all_answers = [] if user and user in answer_dict: my_answers = mark_safe( '<ul>' + ''.join(answer_dict[user]['answers']) + '</ul>') for user, data in sorted(answer_dict.items()): all_answers.append( (user, mark_safe('<ul>' + ''.join(data['answers']) + '</ul>'), data['comments'])) #log.debug('overview multi my answers %s' % my_answers) #log.debug('overview multi all answers %s' % all_answers) #print all_answers context.update( dict(all_answers=all_answers, my_answers=my_answers, my_comment=my_comment)) elif activity_type == 'map': answers = AnswerMap.objects.filter(activity=activity) init_coords = [] x = 0 map = None for answer in answers: map = answer.map message = None if answer.comments.count(): message = answer.comments.all()[0].message or None player = answer.answerUser.get_profile().screen_name markers = simplejson.loads("%s" % map)["markers"] for coor in markers if markers != None else []: coor = coor["coordinates"] init_coords.append([x, coor[0], coor[1], message, player]) x = x + 1 if not map: map = activity.mission.parent.location context.update(dict( init_coords=init_coords, map=map, )) elif action == 'play': if activity_type == 'open_ended': form = make_openended_form() elif activity_type == 'empathy': form = make_empathy_form() elif (activity_type == "single_response"): choices = _get_mc_choices(activity) form = make_single_form(choices) elif (activity_type == "multi_response"): choices = _get_mc_choices(activity) form = make_multi_form(choices) elif (activity_type == "map"): form = MapForm() init_coords = [] x = 0 answer = AnswerMap.objects.filter(activity=activity, answerUser=user) if answer.count(): map = answer[0].map markers = simplejson.loads("%s" % map)["markers"] x = 0 for coor in markers if markers != None else []: coor = coor["coordinates"] init_coords.append([x, coor[0], coor[1]]) x = x + 1 else: map = activity.mission.parent.location context.update({'map': map}) context.update({'form': form}) if user: context['is_completed'] = activity.is_completed(user) return context