def login_view(request, survey_id, redirect_to=None): survey = get_object_or_404(TeamTemperature, pk=survey_id) timezone.activate(pytz.timezone(survey.default_tz or 'UTC')) if not redirect_to: redirect_to = request.GET.get( 'redirect_to', reverse( 'admin', kwargs={ 'survey_id': survey_id})) form = ResultsPasswordForm() if request.method == 'POST': form = ResultsPasswordForm(request.POST, error_class=ErrorBox) if form.is_valid(): rpf = form.cleaned_data password = rpf['password'].encode('utf-8') if check_password(password, survey.password): responses.add_admin_for_survey(request, survey.id) assert responses.is_admin_for_survey(request, survey_id) return redirect(redirect_to) else: form.add_error('password', 'Incorrect password') if authenticated_user(request, survey): return redirect(redirect_to) return render(request, 'password.html', {'form': form})
def home_view(request, survey_type='TEAMTEMP'): timezone.activate(timezone.utc) if request.method == 'POST': form = CreateSurveyForm(request.POST, error_class=ErrorBox) if form.is_valid(): csf = form.cleaned_data form_id = utils.random_string(8) user, created = get_or_create_user(request) dept_names = csf['dept_names'] region_names = csf['region_names'] site_names = csf['site_names'] survey = TeamTemperature(password=make_password(csf['password']), creator=user, survey_type=survey_type, archive_date=timezone.now(), id=form_id, dept_names=dept_names, region_names=region_names, site_names=site_names, archive_schedule=7, default_tz='UTC' ) survey.save() responses.add_admin_for_survey(request, survey.id) return HttpResponseRedirect('/team/%s' % form_id) else: form = CreateSurveyForm() return render(request, 'index.html', {'form': form, 'survey_type': survey_type})
def super_view(request, survey_id): survey = get_object_or_404(TeamTemperature, pk=survey_id) if not authenticated_user(request, survey): responses.add_admin_for_survey(request, survey.id) redirect_to = request.get_full_path().replace('/super/', '/admin/') return redirect('login', survey_id=survey_id, redirect_to=redirect_to)
def authenticated_user(request, survey): if survey is None: raise Exception('Must supply a survey object') user = get_or_create_user(request) if user and survey.creator.id == user.id: responses.add_admin_for_survey(request, survey.id) return True if responses.is_admin_for_survey(request, survey.id): return True return False
def admin_view(request, survey_id, team_name=''): survey = get_object_or_404(TeamTemperature, pk=survey_id) timezone.activate(pytz.timezone(survey.default_tz or 'UTC')) if request.method == 'POST': form = ResultsPasswordForm(request.POST, error_class=ErrorBox) if form.is_valid(): rpf = form.cleaned_data password = rpf['password'].encode('utf-8') if check_password(password, survey.password): responses.add_admin_for_survey(request, survey.id) return HttpResponseRedirect('/admin/%s' % survey_id) if not authenticated_user(request, survey): return render(request, 'password.html', {'form': ResultsPasswordForm()}) survey_type = survey.survey_type if team_name != '': team_found = survey.teams.filter(team_name=team_name).count() if team_found == 0 and survey_type != 'DEPT-REGION-SITE': team_details = Teams(request=survey, team_name=team_name) team_details.save() results = survey.temperature_responses.filter(team_name=team_name, archived=False) else: results = survey.temperature_responses.filter(archived=False) survey_teams = survey.teams.all() if team_name != '': stats, _ = survey.team_stats(team_name=team_name) else: stats, _ = stats = survey.stats() next_archive_date = timezone.now() if survey.archive_schedule > 0: next_archive_date = timezone.localtime(survey.archive_date) + timedelta(days=survey.archive_schedule) if next_archive_date < timezone.localtime(timezone.now()): next_archive_date = timezone.localtime(timezone.now() + timedelta(days=1)) return render(request, 'results.html', {'id': survey_id, 'stats': stats, 'results': results, 'team_name': team_name, 'pretty_team_name': team_name.replace("_", " "), 'survey_teams': survey_teams, 'archive_schedule': survey.archive_schedule, 'next_archive_date': next_archive_date.strftime("%A %d %B %Y") })
def test_is_admin(self): self.assertEqual(len(responses.get_admin_for_surveys(self.request)), 0) survey_ids = ['test1', 'test2', 'test3'] for survey_id in survey_ids: self.assertFalse( responses.is_admin_for_survey( self.request, survey_id)) responses.add_admin_for_survey(self.request, survey_id) self.assertTrue( responses.is_admin_for_survey( self.request, survey_id)) self.assertEqual( len(responses.get_admin_for_surveys(self.request)), len(survey_ids))
def authenticated_user(request, survey): if survey is None: raise Exception('Must supply a survey object') # Retrieve User Token - if user does not exist return false try: user, _ = get_or_create_user(request) except User.DoesNotExist: return False if survey.creator.id == user.id: responses.add_admin_for_survey(request, survey.id) return True if responses.is_admin_for_survey(request, survey.id): return True return False
def home_view(request, survey_type='TEAMTEMP'): timezone.activate(timezone.utc) if request.method == 'POST': form = CreateSurveyForm(request.POST, error_class=ErrorBox) if form.is_valid(): csf = form.cleaned_data survey_id = utils.random_string(8) user = get_or_create_user(request) survey = TeamTemperature( id=survey_id, password=make_password( csf['new_password']), creator=user, survey_type=survey_type, archive_date=timezone.now(), dept_names=csf['dept_names'], region_names=csf['region_names'], site_names=csf['site_names'], archive_schedule=7, default_tz='UTC') survey.fill_next_archive_date() survey.full_clean() survey.save() responses.add_admin_for_survey(request, survey.id) messages.success(request, 'Survey %s created.' % survey.id) return redirect('team', survey_id=survey_id) else: form = CreateSurveyForm() return render( request, 'index.html', { 'form': form, 'survey_type': survey_type})