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)
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)
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)
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
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)
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)