Beispiel #1
0
    def get(self):
        quarter = SettingModel.quarter()
        year = SettingModel.year()
        user = users.get_current_user()

        invitation = ndb.Key(urlsafe=self.request.get('confirmed')).get()
        confirming = StudentModel.get_student_by_email(quarter, year,
                                                       user.email())
        being_confirmed = invitation.invitor.get()
        for_assign = invitation.assignment_number

        partnership = None
        if not confirming and PartnershipModel.student_has_partner_for_assign(
                being_confirmed, for_assign):
            message = MessageModel.already_has_partner(False)
        elif PartnershipModel.student_has_partner_for_assign(
                being_confirmed, for_assign):
            message = MessageModel.already_has_partner(False)
        elif PartnershipModel.student_has_partner_for_assign(
                confirming, for_assign):
            message = MessageModel.already_has_partner(False)
        else:
            message = MessageModel.confirm_partnership(
                [being_confirmed, confirming], False, being_confirmed)
            partnership = PartnershipModel.create_partnership(
                [being_confirmed, confirming], for_assign)

        # set invitations between invitor and invitee (for current assignment) to inactive
        if partnership:
            InvitationModel.deactivate_invitations_for_students_and_assign(
                confirming, being_confirmed, for_assign)
            # SendMail(partnership, 'partner_confirm')
        time.sleep(0.1)
        return self.redirect('/partner?message=' + message)
Beispiel #2
0
    def post(self):
        quarter = SettingModel.quarter()
        year = SettingModel.year()

        user = users.get_current_user()
        selector = StudentModel.get_student_by_email(quarter, year,
                                                     user.email())
        selected = StudentModel.get_student_by_student_id(
            quarter, year, self.request.get('selected_partner'))
        try:
            selected_assign = int(self.request.get('selected_assign'))
            time.sleep(0.1)
        except ValueError:
            return self.redirect(
                '/partner/selection?error=You must choose an assignment number'
            )

        # redirect with errors...
        if PartnershipModel.were_partners_previously(
            [selector, selected]) and not SettingModel.repeat_partners():
            return self.redirect('/partner?message=' +
                                 MessageModel.worked_previously(selected))
        elif InvitationModel.have_open_invitations(selector, selected,
                                                   selected_assign):
            return self.redirect('/partner?message=' +
                                 MessageModel.have_open_invitations(selected))
        elif PartnershipModel.student_has_partner_for_assign(
                selector, selected_assign):
            return self.redirect(
                '/partner?message=' +
                MessageModel.already_has_partner(False, False))
        else:
            InvitationModel.create_invitation(selector, selected,
                                              selected_assign)
            return self.redirect('/partner?message=' +
                                 MessageModel.sent_invitation(selected))
Beispiel #3
0
    def post(self):
        quarter = SettingModel.quarter()
        year = SettingModel.year()
        user = users.get_current_user()

        # these will only have values if this request is coming from an admin
        confirming_key = self.request.get('admin_confirming')
        being_confirmed_key = self.request.get('admin_being_confirmed')

        if confirming_key == '':
            confirming_key = 'None'

        # if not admin...
        if not confirming_key or not being_confirmed_key:
            invitation = ndb.Key(urlsafe=self.request.get('confirmed')).get()
            confirming = StudentModel.get_student_by_email(
                quarter, year, user.email())
            being_confirmed = invitation.invitor.get()
            for_assign = invitation.assignment_number
            admin = False
        else:
            for_assign = int(self.request.get('assign_num'))
            being_confirmed = ndb.Key(urlsafe=being_confirmed_key).get()
            confirming = ndb.Key(urlsafe=confirming_key).get(
            ) if confirming_key != 'None' else None
            admin = True

        partnership = None
        if not confirming and PartnershipModel.student_has_partner_for_assign(
                being_confirmed, for_assign):
            message = MessageModel.already_has_partner(admin)
        elif not confirming:
            message = MessageModel.confirm_solo_partnership(being_confirmed)
            partnership = PartnershipModel.create_partnership(
                [being_confirmed], for_assign)
        elif PartnershipModel.student_has_partner_for_assign(
                being_confirmed, for_assign):
            message = MessageModel.already_has_partner(admin)


#            message = ''
#            partnership = PartnershipModel.get_partnerships_for_students_by_assign([being_confirmed], for_assign)
#            partnership = PartnershipModel.add_members_to_partnership([confirming], partnership[0])
        elif PartnershipModel.student_has_partner_for_assign(
                confirming, for_assign):
            message = MessageModel.already_has_partner(admin)
        else:
            message = MessageModel.confirm_partnership(
                [being_confirmed, confirming], admin, confirming)
            partnership = PartnershipModel.create_partnership(
                [being_confirmed, confirming], for_assign)

        # set invitations between invitor and invitee (for current assignment) to inactive
        if partnership:
            InvitationModel.deactivate_invitations_for_students_and_assign(
                confirming, being_confirmed, for_assign)
            # SendMail(partnership, 'partner_confirm')

        if not admin:
            time.sleep(0.1)
            return self.redirect('/partner?message=' + message)
        else:
            time.sleep(0.1)
            return self.redirect('/admin/partners/add?message=' + message)