Ejemplo n.º 1
0
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})
Ejemplo n.º 2
0
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})
Ejemplo n.º 3
0
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)
Ejemplo n.º 4
0
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
Ejemplo n.º 5
0
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")
                   })
Ejemplo n.º 6
0
    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))
Ejemplo n.º 7
0
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
Ejemplo n.º 8
0
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})