[virtualcommons-svn] commit/vcweb: 3 new changesets
Status: Beta
Brought to you by:
alllee
From: <com...@bi...> - 2013-03-29 15:39:23
|
3 new commits in vcweb: https://bitbucket.org/virtualcommons/vcweb/commits/ec0331636019/ Changeset: ec0331636019 User: alllee Date: 2013-03-29 16:09:12 Summary: setting up redirect to monitor page after registering participants Affected #: 9 files diff -r 2bdfcbcab00d636dffbc2eac0588cd558f7e278b -r ec033163601966f6e25e594d7bfca0bb741e3965 vcweb/broker/templates/broker/participate.html --- a/vcweb/broker/templates/broker/participate.html +++ b/vcweb/broker/templates/broker/participate.html @@ -285,9 +285,12 @@ <h4>PRACTICE ROUND</h4> This is a practice round. The decisions you make in this round will <b>NOT</b> contribute to your earnings. + <span data-bind='if: isSecondPracticeRound'> + <button class='btn btn-primary' data-bind='click: setupSecondPracticeRoundTour'>Tutorial</button> + </span> + <span data-bind="if: isFirstPracticeRound"> - <button class='btn btn-primary' data-bind='click: setupFirstPracticeRoundTour'>Tour</button> - <a href="#" data-bind="">Show me 1st Instructions again</a> + <button class='btn btn-primary' data-bind='click: setupFirstPracticeRoundTour'>Tutorial</button></span></div> @@ -518,6 +521,7 @@ console.debug(tour); }; model.setupSecondPracticeRoundTour = function () { + console.debug("starting second tour"); var tourSecond = new Tour(); tourSecond.addStep({ element: "#lastRoundHarvestPayOff", @@ -569,7 +573,7 @@ title: "Chat rooms", content: "Remember that all your choices are independent and none will see what your decisions are.", }); - tourSecond.start(); + tourSecond.start(true); }; model.update = function () { $.get('view-model', { participant_group_id: model.participantGroupId(), }, diff -r 2bdfcbcab00d636dffbc2eac0588cd558f7e278b -r ec033163601966f6e25e594d7bfca0bb741e3965 vcweb/core/forms.py --- a/vcweb/core/forms.py +++ b/vcweb/core/forms.py @@ -122,8 +122,8 @@ return self.cleaned_data -class RegisterSimpleParticipantsForm(RegisterParticipantsForm): - username_suffix = forms.CharField(min_length=3, initial='asu', +class RegisterTestParticipantsForm(RegisterParticipantsForm): + username_suffix = forms.CharField(min_length=3, initial='asu', help_text=_('''Appended to every generated username before the "@" symbol, e.g., s1...@fo...''')) email_suffix = forms.CharField(min_length=3, initial='mailinator.com', help_text=_(''' diff -r 2bdfcbcab00d636dffbc2eac0588cd558f7e278b -r ec033163601966f6e25e594d7bfca0bb741e3965 vcweb/core/models.py --- a/vcweb/core/models.py +++ b/vcweb/core/models.py @@ -738,6 +738,7 @@ if pgr.group.session_id == current_group.session_id: logger.error("Participant %s is already in a group %s with the same session id, not adding them to %s", participant, pgr.group, current_group) return pgr + logger.debug("adding participant %s to group %s", participant, current_group) return current_group.add_participant(participant) def allocate_groups(self, randomize=True, preserve_existing_groups=False, session_id=None): @@ -776,8 +777,8 @@ def create_group_clusters(self): round_configuration = self.current_round session_id = round_configuration.session_id - logger.debug("creating group clusters with session id %s", session_id) if round_configuration.create_group_clusters: + logger.debug("creating group clusters with session id %s", session_id) gcs = self.group_cluster_set.filter() gs = self.group_set.filter() if session_id: diff -r 2bdfcbcab00d636dffbc2eac0588cd558f7e278b -r ec033163601966f6e25e594d7bfca0bb741e3965 vcweb/core/templates/experimenter/dashboard.html --- a/vcweb/core/templates/experimenter/dashboard.html +++ b/vcweb/core/templates/experimenter/dashboard.html @@ -17,7 +17,7 @@ <a class='btn' data-content='Register participants for this experiment with actual email addresses' href='{{e.controller_url}}/register-email-list'><img src='{{STATIC_URL}}images/famfamfam/group_add.png' alt='register'/> register participants</a><a data-content='Register participants for this experiment with fake email addresses by providing an email suffix and the number of participants.' - class='btn' href='{{e.controller_url}}/register-simple'> + class='btn' href='{{e.controller_url}}/register-test-participants'><img src='{{STATIC_URL}}images/famfamfam/group_add.png' alt='register'/> test participants</a> {% else %} <a data-content='Remove all participants from the experiment, including any data they may have generated.' href='{{e.controller_url}}/clear-participants' class='btn confirm-experiment-action'> diff -r 2bdfcbcab00d636dffbc2eac0588cd558f7e278b -r ec033163601966f6e25e594d7bfca0bb741e3965 vcweb/core/templates/experimenter/monitor.html --- a/vcweb/core/templates/experimenter/monitor.html +++ b/vcweb/core/templates/experimenter/monitor.html @@ -7,7 +7,7 @@ <h3>{{experiment}}</h3><div class='row-fluid'><div class='span6'> - <div class='alert alert-white' data-bind='if: isActive'> + <div class='alert alert-white' data-bind='visible: isActive'><h4>ROUND MANAGEMENT</h4><div class='btn-toolbar'><div class='btn-group'> @@ -45,7 +45,7 @@ <div class='alert alert-error alert-block'><h4>No participants</h4><i class='icon-warning-sign'></i><a href='{{experiment.controller_url}}/register-email-list'>Register bulk email addresses</a> or - <a href='{{experiment.controller_url}}/register-simple'>add test participants</a>? + <a href='{{experiment.controller_url}}/register-test-participants'>add test participants</a>? </div></div><div data-bind="if: hasParticipants"> diff -r 2bdfcbcab00d636dffbc2eac0588cd558f7e278b -r ec033163601966f6e25e594d7bfca0bb741e3965 vcweb/core/templates/experimenter/register-simple-participants.html --- a/vcweb/core/templates/experimenter/register-simple-participants.html +++ /dev/null @@ -1,7 +0,0 @@ -{% extends "experimenter/register-participants.html" %} -{% block participant_registration_header %} -<h3>Test Participant Registration</h3> -<div class='alert alert-block alert-error'><h4 class='alert-heading'>NOTE</h4>This should only be used for testing experiments.</div> -{% endblock %} - - diff -r 2bdfcbcab00d636dffbc2eac0588cd558f7e278b -r ec033163601966f6e25e594d7bfca0bb741e3965 vcweb/core/templates/experimenter/register-test-participants.html --- /dev/null +++ b/vcweb/core/templates/experimenter/register-test-participants.html @@ -0,0 +1,7 @@ +{% extends "experimenter/register-participants.html" %} +{% block participant_registration_header %} +<h3>Test Participant Registration</h3> +<div class='alert alert-block alert-error'><h4 class='alert-heading'>NOTE</h4>This should only be used for testing experiments.</div> +{% endblock %} + + diff -r 2bdfcbcab00d636dffbc2eac0588cd558f7e278b -r ec033163601966f6e25e594d7bfca0bb741e3965 vcweb/core/urls.py --- a/vcweb/core/urls.py +++ b/vcweb/core/urls.py @@ -2,7 +2,7 @@ from django.contrib.auth.decorators import login_required from vcweb import settings from vcweb.core.views import (Dashboard, LoginView, LogoutView, RegistrationView, monitor, CloneExperimentView, - RegisterEmailListView, RegisterSimpleParticipantsView, ClearParticipantsExperimentView, add_experiment, + RegisterEmailListView, RegisterTestParticipantsView, ClearParticipantsExperimentView, add_experiment, Participate, download_data, export_configuration, api_logger, participant_ready, get_number_of_ready_participants, deactivate) import logging import urllib @@ -24,7 +24,7 @@ url(r'^experiment/(?P<pk>\d+)/check-ready-participants$', get_number_of_ready_participants, name='number_of_ready_participants'), url(r'^experiment/(?P<pk>\d+)/monitor$', monitor, name='monitor_experiment'), url(r'^experiment/(?P<pk>\d+)/register-email-list$', RegisterEmailListView.as_view(), name='register_email_list'), - url(r'^experiment/(?P<pk>\d+)/register-simple$', RegisterSimpleParticipantsView.as_view(), name='register_simple'), + url(r'^experiment/(?P<pk>\d+)/register-test-participants$', RegisterTestParticipantsView.as_view(), name='register_test_participants'), # FIXME: refactor these into POSTs using the ExperimentActionForm url(r'^experiment/(?P<pk>\d+)/deactivate$', deactivate, name='deactivate'), url(r'^experiment/(?P<pk>\d+)/clone$', CloneExperimentView.as_view(), name='clone'), diff -r 2bdfcbcab00d636dffbc2eac0588cd558f7e278b -r ec033163601966f6e25e594d7bfca0bb741e3965 vcweb/core/views.py --- a/vcweb/core/views.py +++ b/vcweb/core/views.py @@ -13,7 +13,7 @@ from vcweb.core import dumps from vcweb.core.decorators import anonymous_required, experimenter_required, participant_required from vcweb.core.forms import (RegistrationForm, LoginForm, ParticipantAccountForm, ExperimenterAccountForm, - ParticipantGroupIdForm, RegisterEmailListParticipantsForm, RegisterSimpleParticipantsForm, + ParticipantGroupIdForm, RegisterEmailListParticipantsForm, RegisterTestParticipantsForm, RegisterExcelParticipantsForm, LogMessageForm) from vcweb.core.http import JsonResponse from vcweb.core.models import (User, ChatMessage, Participant, ParticipantExperimentRelationship, ParticipantGroupRelationship, @@ -315,9 +315,9 @@ def get_success_url(self): return reverse('core:dashboard') -class RegisterSimpleParticipantsView(ExperimenterSingleExperimentMixin, FormView): - form_class = RegisterSimpleParticipantsForm - template_name = 'experimenter/register-simple-participants.html' +class RegisterTestParticipantsView(ExperimenterSingleExperimentMixin, FormView): + form_class = RegisterTestParticipantsForm + template_name = 'experimenter/register-test-participants.html' def form_valid(self, form): number_of_participants = form.cleaned_data.get('number_of_participants') @@ -330,10 +330,11 @@ email_suffix=email_suffix, username_suffix=username_suffix, password=experiment_passcode) - return super(RegisterSimpleParticipantsView, self).form_valid(form) + return super(RegisterTestParticipantsView, self).form_valid(form) def get_success_url(self): - return reverse('core:dashboard') + + return reverse('core:monitor_experiment', kwargs={'pk':self.object.pk}) # FIXME: these last two use GET (which should be idempotent) to modify database state which makes HTTP sadful class CloneExperimentView(ExperimenterSingleExperimentView): https://bitbucket.org/virtualcommons/vcweb/commits/e027e52f7508/ Changeset: e027e52f7508 User: alllee Date: 2013-03-29 16:10:10 Summary: redirect to monitor experiment page after participant registration Affected #: 1 file diff -r ec033163601966f6e25e594d7bfca0bb741e3965 -r e027e52f7508d42eca6b89e44081c2d99dc81c27 vcweb/core/views.py --- a/vcweb/core/views.py +++ b/vcweb/core/views.py @@ -313,7 +313,7 @@ password=experiment.authentication_code) return super(RegisterEmailListView, self).form_valid(form) def get_success_url(self): - return reverse('core:dashboard') + return reverse('core:monitor_experiment', kwargs={'pk':self.object.pk}) class RegisterTestParticipantsView(ExperimenterSingleExperimentMixin, FormView): form_class = RegisterTestParticipantsForm @@ -333,7 +333,6 @@ return super(RegisterTestParticipantsView, self).form_valid(form) def get_success_url(self): - return reverse('core:monitor_experiment', kwargs={'pk':self.object.pk}) # FIXME: these last two use GET (which should be idempotent) to modify database state which makes HTTP sadful https://bitbucket.org/virtualcommons/vcweb/commits/d0174c7c0e46/ Changeset: d0174c7c0e46 User: alllee Date: 2013-03-29 16:39:08 Summary: patch for session_id empty strings, adding some simple styling to alive status Affected #: 3 files diff -r e027e52f7508d42eca6b89e44081c2d99dc81c27 -r d0174c7c0e46bafae53916d2f93f97925b946e26 vcweb/boundaries/templates/boundaries/participate.html --- a/vcweb/boundaries/templates/boundaries/participate.html +++ b/vcweb/boundaries/templates/boundaries/participate.html @@ -335,7 +335,7 @@ </div><div class='span4'><h3>Group Status</h3> - <table class='table table-bordered table-condensed'> + <table class='table table-bordered table-condensed table-striped'><thead><tr><th>Player</th><!-- ko foreach: playerData --> @@ -359,7 +359,7 @@ <tr><td>Alive</td><!-- ko foreach: playerData --> - <td data-bind='text: alive'></td> + <td data-bind='css: { "text-error": ! alive(), "text-success": alive() }, text: alive() ? "Yes" : "No"'></td><!-- /ko --></tr></tbody> diff -r e027e52f7508d42eca6b89e44081c2d99dc81c27 -r d0174c7c0e46bafae53916d2f93f97925b946e26 vcweb/boundaries/views.py --- a/vcweb/boundaries/views.py +++ b/vcweb/boundaries/views.py @@ -17,7 +17,7 @@ def participate(request, experiment_id=None): participant = request.user.participant logger.debug("handling participate request for %s and experiment %s", participant, experiment_id) - experiment = get_object_or_404(Experiment.objects.select_related('experiment_metadata', 'experiment_configuration').prefetch_related('group_set', 'experiment_configuration__round_configuration_set'), pk=experiment_id) + experiment = get_object_or_404(Experiment.objects.select_related('experiment_metadata', 'experiment_configuration'), pk=experiment_id) pgr = experiment.get_participant_group_relationship(participant) if experiment.experiment_metadata != get_experiment_metadata() or pgr.participant != request.user.participant: raise Http404 @@ -58,7 +58,6 @@ def get_view_model(request, experiment_id=None): experiment = get_object_or_404(Experiment.objects.select_related('experiment_metadata', 'experiment_configuration'), pk=experiment_id) pgr = experiment.get_participant_group_relationship(request.user.participant) - logger.debug("getting view model for participant: %s", pgr) return JsonResponse(get_view_model_json(experiment, pgr)) experiment_model_defaults = { diff -r e027e52f7508d42eca6b89e44081c2d99dc81c27 -r d0174c7c0e46bafae53916d2f93f97925b946e26 vcweb/core/models.py --- a/vcweb/core/models.py +++ b/vcweb/core/models.py @@ -392,6 +392,9 @@ Generator function for all participant group relationships in this experiment ''' session_id = self.current_round.session_id + if not session_id: + # force session_id to be None if it turned into the empty string somehow + session_id = None for group in self.group_set.filter(session_id=session_id): for pgr in group.participant_group_relationship_set.all(): yield pgr @@ -670,7 +673,7 @@ # FIXME: figure out how to declaratively do this so experiments can more easily notify "I have these data values to # initialize at the start of each round. def initialize_data_values(self, group_parameters=None, participant_parameters=None, group_cluster_parameters=None, round_data=None): - logger.debug("initializing [participant params: %s] [group parameters: %s] [group_cluster_parameters: %s] ", participant_parameters, group_parameters, group_cluster_parameters) + #logger.debug("initializing [participant params: %s] [group parameters: %s] [group_cluster_parameters: %s] ", participant_parameters, group_parameters, group_cluster_parameters) if group_parameters is None: group_parameters = self.parameters(scope=Parameter.Scope.GROUP) if participant_parameters is None: Repository URL: https://bitbucket.org/virtualcommons/vcweb/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. |