Beispiel #1
0
def create(request):
    person = get_person(request.user)
    if request.method == 'POST':
        form = ReminderForm(data=request.POST, person=person)
        if form.is_valid():
            reminder = form.save(commit=False)
            reminder.person = person
            reminder.save()
            l = LogEntry(userid=request.user.username,
                         description="created reminder %s" % (reminder.slug, ),
                         related_object=reminder)
            l.save()
            messages.add_message(request, messages.SUCCESS,
                                 'Reminder created.')
            return HttpResponseRedirect(
                reverse('reminders:view',
                        kwargs={'reminder_slug': reminder.slug}))

    else:
        form = ReminderForm(person=person)

    context = {
        'form': form,
    }
    return render(request, 'reminders/create.html', context)
Beispiel #2
0
def needs_2fa(request, user):
    '''
    Do we require 2FA for this user+request?

    Here: default is False, unless it's set for the user.
    '''
    person = get_person(user)
    return bool(person) and person.config.get('2fa', False)
Beispiel #3
0
def needs_2fa(request, user):
    '''
    Do we require 2FA for this user+request?

    Here: default is False, unless it's set for the user.
    '''
    person = get_person(user)
    return bool(person) and person.config.get('2fa', False)
Beispiel #4
0
def _get_reminder_or_404(request, reminder_slug):
    """
    Get the reminder *if* the logged-in user is allowed to view/edit it. Else raise 404.
    """
    reminder = get_object_or_404(Reminder, slug=reminder_slug)
    person = get_person(request.user)
    if not reminder.can_be_accessed_by(person):
        get_object_or_404(Reminder, reminder_type='FOO', person=None) # make error same as above
        raise ValueError() # shouldn't happen, but definitely don't continue error-free from here.
    return reminder, person
Beispiel #5
0
def _get_reminder_or_404(request, reminder_slug):
    """
    Get the reminder *if* the logged-in user is allowed to view/edit it. Else raise 404.
    """
    reminder = get_object_or_404(Reminder, slug=reminder_slug)
    person = get_person(request.user)
    if not reminder.can_be_accessed_by(person):
        get_object_or_404(Reminder, reminder_type='FOO',
                          person=None)  # make error same as above
        raise ValueError(
        )  # shouldn't happen, but definitely don't continue error-free from here.
    return reminder, person
Beispiel #6
0
def index(request):
    person = get_person(request.user)

    # PERS, INST reminders for this person
    personal_reminders = Reminder.objects.filter(reminder_type__in=['PERS','INST'], person=person).select_related('course')

    # ROLE reminders for this person's current roles
    user_roles = Role.objects_fresh.filter(person=person)
    role_query = reduce(
        operator.or_,
        (Q(role=r.role) & Q(unit=r.unit) for r in user_roles)
        )
    role_reminders = Reminder.objects.filter(role_query, reminder_type='ROLE').select_related('unit')

    reminders = set(personal_reminders) | set(role_reminders)
    context = {
        'reminders': reminders,
    }
    return render(request, 'reminders/index.html', context)
Beispiel #7
0
def index(request):
    person = get_person(request.user)

    # PERS, INST reminders for this person
    personal_reminders = Reminder.objects.filter(
        reminder_type__in=['PERS',
                           'INST'], person=person).select_related('course')

    # ROLE reminders for this person's current roles
    user_roles = Role.objects_fresh.filter(person=person)
    role_query = reduce(operator.or_,
                        (Q(role=r.role) & Q(unit=r.unit) for r in user_roles))
    role_reminders = Reminder.objects.filter(
        role_query, reminder_type='ROLE').select_related('unit')

    reminders = set(personal_reminders) | set(role_reminders)
    context = {
        'reminders': reminders,
    }
    return render(request, 'reminders/index.html', context)
Beispiel #8
0
def create(request):
    person = get_person(request.user)
    if request.method == 'POST':
        form = ReminderForm(data=request.POST, person=person)
        if form.is_valid():
            reminder = form.save(commit=False)
            reminder.person = person
            reminder.save()
            l = LogEntry(userid=request.user.username,
                         description="created reminder %s" % (reminder.slug,),
                         related_object=reminder
                         )
            l.save()
            messages.add_message(request, messages.SUCCESS, 'Reminder created.')
            return HttpResponseRedirect(reverse('reminders:view', kwargs={'reminder_slug': reminder.slug}))

    else:
        form = ReminderForm(person=person)

    context = {
        'form': form,
    }
    return render(request, 'reminders/create.html', context)
Beispiel #9
0
def site_search(request):
    # Things that would be nice:
    # activities in your courses
    # grad students you admin/supervise
    # advisors: students/advisornote content
    # marking comments
    person = get_person(request.user)

    query = request.GET.get('q', '')
    if 'search-scope' in request.GET and request.GET['search-scope'] == 'sfu':
        # redirect to SFU-wide search if appropriate
        url = SEARCH_URL + urlencode({'q': query, 'search-scope': 'sfu'})
        return HttpResponseRedirect(url)

    results = _query_results(query, person)
    if results:
        maxscore = max(r.score for r in results)
    else:
        maxscore = 1
    # strip out the really bad results: elasticsearch is pretty liberal
    results = (r for r in results if r.score >= maxscore / 10)

    if request.user.is_authenticated:
        # record authenticated searches for A/B testing
        l = LogEntry(userid=request.user.username,
                     description='User %i searched for %r' %
                     (request.user.id, query),
                     related_object=request.user)
        l.save()

    context = {
        "query": query,
        "results": results,
        "maxscore": maxscore,
    }

    return render(request, "dashboard/site_search.html", context)
Beispiel #10
0
def site_search(request):
    # Things that would be nice:
    # activities in your courses
    # grad students you admin/supervise
    # advisors: students/advisornote content
    # marking comments
    person = get_person(request.user)

    query = request.GET.get('q', '')
    if 'search-scope' in request.GET and request.GET['search-scope'] == 'sfu':
        # redirect to SFU-wide search if appropriate
        url = SEARCH_URL + urlencode({'q': query, 'search-scope': 'sfu'})
        return HttpResponseRedirect(url)

    results = _query_results(query, person)
    if results:
        maxscore = max(r.score for r in results)
    else:
        maxscore = 1
    # strip out the really bad results: elasticsearch is pretty liberal
    results = (r for r in results if r.score >= maxscore/10)

    if request.user.is_authenticated:
        # record authenticated searches for A/B testing
        l = LogEntry(userid=request.user.username,
                 description='User %i searched for %r' % (request.user.id, query),
                 related_object=request.user)
        l.save()

    context = {
        "query": query,
        "results": results,
        "maxscore": maxscore,
    }

    return render(request, "dashboard/site_search.html", context)