Example #1
0
    def get(self, urlsafe_key=None):
        if urlsafe_key:
            ndb_key = ndb.Key(urlsafe=urlsafe_key)
            if ndb_key.kind() != "HousingApplication":
                self.abort(404, "Invalid key")

            self.template_vars['user_email'] = self.current_user.email()
            self.template_vars['applicant_name'] = ndb_key.get().FullName
            self.template_vars['noteForm'] = self.generate_form(HousingApplicationNote_Form)
        else:
            query = HousingApplication.query()
            query = query.filter(HousingApplication.Archived == False)
            query = query.filter(HousingApplication.SemesterToBeginIndex >= get_current_semester_index())
            mens_applicants = []
            womens_applicants = []
            for housing_application in query:
                data = (housing_application.FullName.title(), housing_application.key.urlsafe())
                if housing_application.House == "Men's Christian Campus House":
                    mens_applicants.append(data)
                else:
                    womens_applicants.append(data)

            self.template_vars['mens_applicants'] = sorted(mens_applicants, key=lambda x: x[0])
            self.template_vars['womens_applicants'] = sorted(womens_applicants, key=lambda x: x[0])
        self.render_template("housing/application_comments.html")
Example #2
0
    def get(self, urlsafe_key=None):
        if urlsafe_key:
            ndb_key = ndb.Key(urlsafe=urlsafe_key)
            if ndb_key.kind() != "HousingApplication":
                self.abort(404, "Invalid key")

            self.template_vars['user_email'] = self.current_user.email()
            self.template_vars['applicant_name'] = ndb_key.get().FullName
            self.template_vars['noteForm'] = self.generate_form(
                HousingApplicationNote_Form)
        else:
            query = HousingApplication.query()
            query = query.filter(HousingApplication.Archived == False)
            query = query.filter(HousingApplication.SemesterToBeginIndex >=
                                 get_current_semester_index())
            mens_applicants = []
            womens_applicants = []
            for housing_application in query:
                data = (housing_application.FullName.title(),
                        housing_application.key.urlsafe())
                if housing_application.House == "Men's Christian Campus House":
                    mens_applicants.append(data)
                else:
                    womens_applicants.append(data)

            self.template_vars['mens_applicants'] = sorted(mens_applicants,
                                                           key=lambda x: x[0])
            self.template_vars['womens_applicants'] = sorted(
                womens_applicants, key=lambda x: x[0])
        self.render_template("housing/application_comments.html")
    def _build_ndb_query(self):
        filterFormQuery = HousingApplication.query()

        houses = True
        if self.DisplayCchHouse.data and not self.DisplayWcchHouse.data:
            filterFormQuery = filterFormQuery.filter(HousingApplication.House == "Men's Christian Campus House")
        elif self.DisplayWcchHouse.data and not self.DisplayCchHouse.data:
            filterFormQuery = filterFormQuery.filter(HousingApplication.House == "Women's Christian Campus House")
        elif not self.DisplayCchHouse.data and not self.DisplayWcchHouse.data:
            houses = False

        semesters = []
        if not self.ShowAllSemesters.data:
            current_semester_index = get_current_semester_index()
            # simplifies 4 if statements into a single for loop
            for semester_num in (0, 1, 2, 3, 4, 5, 11, 12):
                if getattr(self, "Semester{}".format(semester_num)).data:
                    if semester_num < 5:
                        semesters.append(current_semester_index + semester_num)
                    elif semester_num == 5:
                        semesters.append(current_semester_index)
                    elif semester_num == 11:
                        semesters.append(current_semester_index - 1)
                    elif semester_num == 12:
                        semesters.append(current_semester_index - 2)
            filterFormQuery = filterFormQuery.filter(HousingApplication.SemesterToBeginIndex.IN(semesters))

        if not self.IncludeArchived.data:
            filterFormQuery = filterFormQuery.filter(HousingApplication.Archived == False)

        if self.SortBy.data[0] == '-':
            reverse = True
            prop_name = self.SortBy.data[1:]
        else:
            reverse = False
            prop_name = self.SortBy.data
        if (self.SortBy.data == "LastName"):
            prop = getattr(HousingApplication, "FirstName")
        else:
            prop = getattr(HousingApplication, prop_name)

        if reverse:
            filterFormQuery = filterFormQuery.order(-prop)
        else:
            filterFormQuery = filterFormQuery.order(prop)

        self._ndb_query = filterFormQuery
        self._can_have_results = houses and (semesters or self.ShowAllSemesters.data)
Example #4
0
    def _build_ndb_query(self):
        filterFormQuery = HousingApplication.query()

        houses = True
        if self.DisplayCchHouse.data and not self.DisplayWcchHouse.data:
            filterFormQuery = filterFormQuery.filter(
                HousingApplication.House == "Men's Christian Campus House")
        elif self.DisplayWcchHouse.data and not self.DisplayCchHouse.data:
            filterFormQuery = filterFormQuery.filter(
                HousingApplication.House == "Women's Christian Campus House")
        elif not self.DisplayCchHouse.data and not self.DisplayWcchHouse.data:
            houses = False

        semesters = []
        if not self.ShowAllSemesters.data:
            current_semester_index = get_current_semester_index()
            # simplifies 4 if statements into a single for loop
            for semester_num in (1, 2, 3, 4):
                if getattr(self, "Semester{}".format(semester_num)).data:
                    semesters.append(current_semester_index + semester_num)
            filterFormQuery = filterFormQuery.filter(
                HousingApplication.SemesterToBeginIndex.IN(semesters))

        if not self.IncludeArchived.data:
            filterFormQuery = filterFormQuery.filter(
                HousingApplication.Archived == False)

        if self.SortBy.data[0] == '-':
            reverse = True
            prop_name = self.SortBy.data[1:]
        else:
            reverse = False
            prop_name = self.SortBy.data
        prop = getattr(HousingApplication, prop_name)
        if reverse:
            filterFormQuery = filterFormQuery.order(-prop)
        else:
            filterFormQuery = filterFormQuery.order(prop)

        self._ndb_query = filterFormQuery
        self._can_have_results = houses and (semesters
                                             or self.ShowAllSemesters.data)
    def get(self):
        time_delay = datetime.timedelta(days=self.settings.HousingApplication_ReminderEmailDelayDays)
        time_offset = datetime.datetime.utcnow() - time_delay
        unacknowledged_apps = HousingApplication.query(
            HousingApplication.Stage == 0,
            HousingApplication.TimeSubmitted < time_offset
        ).fetch(20)

        message_html = self.generate_html(unacknowledged_apps)
        self.response.out.write(message_html)

        if len(unacknowledged_apps) > 0:
            message = EmailMessage()
            message.sender = "CCF Housing Application Reminder <*****@*****.**>"
            message.to = [self.settings.HousingApplicationCch_CompletionEmail,
                          self.settings.HousingApplicationWcch_CompletionEmail]
            message.subject = "CCF Housing Application Reminder ({date})".format(
                date=datetime.datetime.now(tz=Central).strftime('%b-%d-%Y'),
            )
            message.html = message_html
            message.send()
Example #6
0
    def get(self):
        time_delay = datetime.timedelta(
            days=self.settings.HousingApplication_ReminderEmailDelayDays)
        time_offset = datetime.datetime.utcnow() - time_delay
        unacknowledged_apps = HousingApplication.query(
            HousingApplication.Stage == 0,
            HousingApplication.TimeSubmitted < time_offset).fetch(20)

        message_html = self.generate_html(unacknowledged_apps)
        self.response.out.write(message_html)

        if len(unacknowledged_apps) > 0:
            message = EmailMessage()
            message.sender = "CCF Housing Application Reminder <*****@*****.**>"
            message.to = [
                self.settings.HousingApplicationCch_CompletionEmail,
                self.settings.HousingApplicationWcch_CompletionEmail
            ]
            message.subject = "CCF Housing Application Reminder ({date})".format(
                date=datetime.datetime.now(tz=Central).strftime('%b-%d-%Y'), )
            message.html = message_html
            message.send()