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)
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)
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)
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
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
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)
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)
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)
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)
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)