コード例 #1
0
def accept_invitation(invite):
    """ Accept an invitation """
    if invite.rsvp_referrer != None:
        if invite.rsvp_type != 'Accepted':
            if invite.rsvp_event.deadlineOkay():
                if invite.rsvp_event.moreOkay():
                    invite.rsvp_type = 'Accepted'
                    invite.rsvp_reminder_enabled = True
                    invite.rsvp_event.event_attendee_count = invite.rsvp_event.event_attendee_count + 1
                    invite.rsvp_event.save()
                    invite.save()
                    MsgMgr.sendmsg(
                        invite.rsvp_referrer,
                        '%s has accepted your invitation to \'%s.\'' %
                        (invite.rsvp_user.full_name(),
                         invite.rsvp_event.displayname()))
                    return Msg(
                        'You\'ve accepted %s\'s invitation.' %
                        (invite.rsvp_referrer.casual_name()), 1)
                else:
                    return Msg(
                        'We\'re sorry, but the maximum attendance for this event has been reached.',
                        0)
            else:
                return Msg(
                    'We\'re sorry, but the deadline for confirming attendance to this event has passed.',
                    0)
        else:
            return Msg(
                'You\'ve already accepted %s\'s invitation.' %
                (invite.rsvp_referrer.casual_name()), 2)
    else:
        return Msg('You can\'t accept an invitation without a sender.', 0)
コード例 #2
0
def unconfirm_attendance(user, event):
    """ Remove an event from the user's calendar """
    try:
        confirmation = RSVP.objects.get(rsvp_user=user, rsvp_event=event)
        if confirmation.rsvp_referrer == None:
            confirmation.delete()
            event.event_attendee_count = event.event_attendee_count - 1
            event.save()
            return Msg(
                ''''%s' has been removed from <a href="/user/events">your calendar</a>.'''
                % (event.displayname()), 2)
        else:
            if confirmation.rsvp_type == 'Accepted':
                confirmation.rsvp_type = 'Declined'
                confirmation.save()
                event.event_attendee_count = event.event_attendee_count - 1
                event.save()
                return Msg(
                    ''''%s' has been removed from <a href="/user/events">your calendar</a>. The invitation from %s has been changed to 'declined.' '''
                    % (event.displayname(),
                       confirmation.rsvp_referrer.full_name()), 2)
            elif confirmation.rsvp_type == 'Declined':
                return Msg(
                    'It seems that you have already declined an invitation to this event.',
                    0)
            elif confirmation.rsvp_type == 'Pending':
                return decline_invitation(confirmation)
            else:
                return Msg(
                    '''There was a problem processing this request. The status of your invitation to this event could not be determined.''',
                    0)
    except:
        return Msg('''There was a problem processing this request.''', 0)
コード例 #3
0
def decline_invitation(invite):
    """ Decline an invitation """
    if invite.rsvp_type != 'Declined' and invite.rsvp_referrer != None:
        invite.rsvp_type = 'Declined'
        invite.save()
        return Msg(
            'You\'ve declined %s\'s invitation.' %
            (invite.rsvp_referrer.casual_name()), 1)
    else:
        return Msg(
            'That invitation cannot be declined. You may have already declined it.',
            1)
コード例 #4
0
def email_event_attendees(request, event, sender, message_title, message_body):
    """ Email all attendees of an event with a message """
    if not event:
        return go_back(request, 'No event found.', 0)
    if not event.isAuthorizedModifier(sender):
        return go_back(request,
                       'Only an event administrator can send these messages.',
                       0)

    confirmations = RSVP.objects.filter(rsvp_event=event, rsvp_type='Accepted')
    eventurl = event.get_absolute_url()

    for confirm in confirmations:
        person = confirm.rsvp_user
        message = render_to_string(
            'cal/email_attendeemsg.html', {
                'site': our_site,
                'user': person,
                'sender': sender,
                'msg': message_body,
                'event': event,
                'eventurl': eventurl
            })
        sendAdvanced(format_address(sender), format_address(person),
                     message_title, message, message_body)

    Msg('Your message was successfully sent to the event attendees.',
        1).push(request)
    return HttpResponseRedirect('/events/%s' % event.pk)
コード例 #5
0
ファイル: render.py プロジェクト: bnprks/USG-srv-dev
def go_back(request, error_msg=None, type=0):
    if error_msg:
        Msg(error_msg, type).push(request)
    ref = request.META.get('HTTP_REFERER', None)
    if ref and ref.find(our_site) == 0:
        ref = ref.replace(our_site, '/', 1)
    else:
        ref = '/'
    return HttpResponseRedirect(ref)
コード例 #6
0
def send_message(sender, cluster, title, body):
    """ Post a board message """
    if sender and cluster and title and body:
        message = BoardMessage(boardmessage_eventcluster=cluster,
                               boardmessage_title=title,
                               boardmessage_poster=sender,
                               boardmessage_text=body)
        message.save()
        notify_other_posters(message)
        return Msg(
            'You\'ve successfully posted a message to the discussion board.')
コード例 #7
0
def confirm_attendance(user, referrer, event, reminder):
    """ Add an event to the user's calendar """
    try:
        rsvpdup = RSVP.objects.get(rsvp_user=user, rsvp_event=event)
        if rsvpdup.rsvp_type == 'Accepted':
            return Msg(
                '''This event is already on your personal calendar! You can't add it twice.'''
                % (), 0)
        elif (rsvpdup.rsvp_type == 'Pending'
              or rsvpdup.rsvp_type == 'Declined') and rsvpdup.rsvp_referrer:
            return accept_invitation(rsvpdup)
        else:
            return Msg(
                '''You cannot add this event at this time; there was an internal error.'''
                % (), 0)
    except:
        if event.deadlineOkay():
            if event.moreOkay():
                confirm = RSVP(rsvp_user=user,
                               rsvp_event=event,
                               rsvp_referrer=referrer,
                               rsvp_reminder_enabled=reminder,
                               rsvp_type='Accepted')
                event.event_attendee_count = event.event_attendee_count + 1
                event.save()
                confirm.save()
                return Msg(
                    '''You've added '%s' to <a href="/user/events">your calendar</a>.'''
                    % (event.displayname()), 1)
            else:
                return Msg(
                    'We\'re sorry, but the maximum attendance for this event has been reached.',
                    0)
        else:
            return Msg(
                'We\'re sorry, but the deadline for confirming attendance to this event has passed.',
                0)
コード例 #8
0
def email_custom_invitation(request, event, message_from, message_to,
                            message_title, message_body):
    #event = Event.objects.get(pk=event_id)
    user = current_user(request)
    eventurl = event.get_absolute_url()
    message = render_to_string(
        'cal/email_custom_invite.html', {
            'site': our_site,
            'body': message_body,
            'recipient': message_to,
            'sender': message_from,
            'event': event,
            'eventurl': eventurl,
            'user': user
        })
    sendAdvanced(message_from, message_to, message_title, message,
                 'I have invited you to this event: %s' % eventurl)
    sendAdvanced(message_from, message_from,
                 'Confirmation: %s' % (message_title), message,
                 'I have invited you to this event: %s' % eventurl)
    Msg(
        'Your message was successfully sent to %s, and a confirmation copy was sent to %s.'
        % (message_to, message_from), 1).push(request)
    return HttpResponseRedirect('/events/%s' % event.pk)
コード例 #9
0
def send_invite(sender, recipient, event):
    """ Send an invitation to a user """
    if sender and recipient and event:
        try:
            dup = RSVP.objects.get(rsvp_user=recipient, rsvp_event=event)
        except:
            dup = None
        if dup == None:
            invite = RSVP(rsvp_user=recipient,
                          rsvp_event=event,
                          rsvp_referrer=sender,
                          rsvp_reminder_enabled=False,
                          rsvp_type='Pending')
            invite.save()
            email_invite(recipient, sender, event, invite)
            MsgMgr.sendmsg(
                recipient, '%s just invited you to %s' %
                (sender.full_name(), event.displayname()))
            if sender == recipient:
                return Msg(
                    'You\'ve successfully sent an invitation to yourself. Lonely, huh?',
                    1)
            else:
                return Msg(
                    'You\'ve successfully sent an invitation to %s.' %
                    (recipient.casual_name()), 1)
        elif dup.rsvp_referrer == sender:
            return Msg(
                '''You have already sent an identical invitation to %s.''' %
                (recipient.casual_name()), 0)
        elif dup.rsvp_referrer != sender:
            if dup.rsvp_type == 'Accepted':
                return Msg(
                    '''%s is already going to this event. No new invitation was sent.'''
                    % (recipient.casual_name()), 0)
            else:
                return Msg(
                    '''Someone else has already invited %s to this event. No new invitation was sent.'''
                    % (recipient.casual_name()), 0)

    else:
        return Msg('Malformed invitation.', 0)