Esempio n. 1
0
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)
Esempio n. 2
0
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)        
Esempio n. 3
0
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)