def teacher_lookup(request, limit=10): # FIXME: REQUIRE PERMISSIONS! # Initialize anchors for identifying teachers q = GetNode('Q') v = GetNode('V/Flags/UserRole/Teacher') # Select teachers queryset = UserBit.bits_get_users(q, v) # Search for teachers with names that start with search string startswith = request.GET['q'] parts = startswith.split(', ') Q_name = Q(user__last_name__istartswith=parts[0]) if len(parts) > 1: Q_name = Q_name & Q(user__first_name__istartswith=parts[1]) # Isolate user objects queryset = queryset.filter(Q_name)[:(limit * 10)] users = [ub.user for ub in queryset] user_dict = {} for user in users: user_dict[user.id] = user users = user_dict.values() # Construct combo-box items obj_list = [[user.last_name + ', ' + user.first_name, user.id] for user in users] # Operation Complete! return JsonResponse(obj_list)
def send_event_notice(event_start, event_end): """ Send event reminders for all events, if any fraction of an event occurs in the given time range. Send to all users who are subscribed to each event. """ messages = [] for e in Event.objects.filter(start__lte=event_end, end__gte=event_start): m = event_to_message(e) messages.append(m) for u in UserBit.bits_get_users(e.anchor, GetNode('V/Subscribe'), now = e.start, end_of_now = e.end).filter(startdate__lt=e.end, enddate__gt=e.start): user_to_email(m, u) EmailController().run(messages)
def send_miniblog_messages(): entries = Entry.objects.filter(email = True, sent = False) for entry in entries: entry.sent = True entry.save() verb = GetNode('V/Subscribe') if hasattr(settings, 'EMAILTIMEOUT') and settings.EMAILTIMEOUT is not None: wait = settings.EMAILTIMEOUT else: wait = 1.5 for entry in entries: if entry.fromemail is None or len(entry.fromemail.strip()) == 0: if entry.fromuser is None or type(entry.fromuser) == AnonymousUser: fromemail = '*****@*****.**' else: fromemail = '%s <%s>' % (ESPUser(entry.fromuser).name(), entry.fromuser.email) else: fromemail = entry.fromemail emails = {} bits = UserBit.bits_get_users(qsc = entry.anchor, verb = verb) for bit in bits: if bit.user is None or type(bit.user) == AnonymousUser: # print "Error with %s (%s)" % (str(entry), str(bit.user)) pass else: emails[bit.user.email] = ESPUser(bit.user).name() for email,name in emails.items(): send_mail(entry.title, entry.content, fromemail, ['%s <%s>' % (name, email)], True) print "Sent mail to %s" % (name) time.sleep(wait)