Esempio n. 1
0
def makeManager(app, schoolyear, person):
    groups = IGroupContainer(schoolyear)

    default_admin_names = ('manager', 'clerks')
    admin_groups = [groups.get(name)
                    for name in default_admin_names
                    if name in groups]

    person_groups = [group for group in Membership.query(member=person)
                     if group.__parent__.__name__ == groups.__name__]

    for group in admin_groups:
        if group not in person_groups:
            Membership(group=group, member=person)
Esempio n. 2
0
 def update(self):
     self.collator = ICollator(self.request.locale)
     relationships = Membership.bind(member=self.context).all().relationships
     group_states = self.app_states('group-membership')
     student_states = self.app_states('student-enrollment')
     schoolyears_data = {}
     for link_info in relationships:
         group = removeSecurityProxy(link_info.target)
         if ISection.providedBy(group) or not canAccess(group, 'title'):
             continue
         sy = ISchoolYear(group.__parent__)
         if sy not in schoolyears_data:
             schoolyears_data[sy] = []
         schoolyears_data[sy].append((group, link_info))
     self.schoolyears = []
     for sy in sorted(schoolyears_data, key=lambda x:x.first, reverse=True):
         sy_info = {
             'obj': sy,
             'css_class': 'active' if sy is self.schoolyear else 'inactive',
             'groups': [],
             }
         for group, link_info in sorted(schoolyears_data[sy],
                                        key=lambda x:self.collator.key(
                                            x[0].title)):
             is_students = group.__name__ == 'students'
             app_states = student_states if is_students else group_states
             states = self.group_current_states(link_info, app_states)
             group_info = {
                 'obj': group,
                 'title': group.title,
                 'states': states,
                 }
             sy_info['groups'].append(group_info)
         self.schoolyears.append(sy_info)
Esempio n. 3
0
def evolvePerson(app, schoolyear, person):
    groups = IGroupContainer(schoolyear)
    admin_names = ('manager', 'administrators', 'clerks')
    admin_groups = [groups.get(name)
                    for name in admin_names
                    if name in groups]

    person_groups = [group for group in Membership.query(member=person)
                     if group.__parent__.__name__ == groups.__name__]

    if any([group in admin_groups for group in person_groups]):
        for group in admin_groups:
            if group not in person_groups:
                Membership(group=group, member=person)
Esempio n. 4
0
 def collectCourses(self):
     today = self.request.util.today
     student=removeSecurityProxy(self.context)
     codes = self.completed_state_codes
     completed_sections = [
         relationship.target
         for relationship in Membership.relationships(member=student)
         if relationship.state.has(today, codes)
         ]
     schoolyears_data = {}
     for section in completed_sections:
         section = removeSecurityProxy(section)
         sy = ISchoolYear(section)
         if sy not in schoolyears_data:
             schoolyears_data[sy] = {}
         term = ITerm(section)
         if term not in schoolyears_data[sy]:
             schoolyears_data[sy][term] = []
         schoolyears_data[sy][term].extend(section.courses)
     result = []
     sortingKey = lambda course: self.collator.key(course.title)
     for sy in sorted(schoolyears_data, key=lambda x:x.first, reverse=True):
         sy_info = {
             'obj': sy,
             'css_class': 'active' if sy is self.schoolyear else 'inactive',
             'terms': [],
             }
         for term in sorted(schoolyears_data[sy],
                            key=lambda x:x.first,
                            reverse=True):
             term_info = {'obj': term, 'courses': []}
             for course in sorted(schoolyears_data[sy][term],
                                  key=sortingKey):
                 course_info = {
                     'obj': course,
                     'title': course.title,
                     }
                 term_info['courses'].append(course_info)
             sy_info['terms'].append(term_info)
         result.append(sy_info)
     return result
Esempio n. 5
0
 def update(self):
     self.collator = ICollator(self.request.locale)
     relationships = Membership.bind(
         member=self.context).all().relationships
     group_states = self.app_states('group-membership')
     student_states = self.app_states('student-enrollment')
     schoolyears_data = {}
     for link_info in relationships:
         group = removeSecurityProxy(link_info.target)
         if ISection.providedBy(group) or not canAccess(group, 'title'):
             continue
         sy = ISchoolYear(group.__parent__)
         if sy not in schoolyears_data:
             schoolyears_data[sy] = []
         schoolyears_data[sy].append((group, link_info))
     self.schoolyears = []
     for sy in sorted(schoolyears_data, key=lambda x: x.first,
                      reverse=True):
         sy_info = {
             'obj': sy,
             'css_class': 'active' if sy is self.schoolyear else 'inactive',
             'groups': [],
         }
         for group, link_info in sorted(
                 schoolyears_data[sy],
                 key=lambda x: self.collator.key(x[0].title)):
             is_students = group.__name__ == 'students'
             app_states = student_states if is_students else group_states
             states = self.group_current_states(link_info, app_states)
             group_info = {
                 'obj': group,
                 'title': group.title,
                 'states': states,
             }
             sy_info['groups'].append(group_info)
         self.schoolyears.append(sy_info)
Esempio n. 6
0
 def sectionsAsLearner(self):
     """Get the sections the person is a member of."""
     app_states = self.app_states('section-membership')
     relationships = Membership.bind(member=self.context).all().relationships
     return self.sectionsAs(app_states, relationships)