예제 #1
0
    def init_with_context(self, context):
        # append an app list module for "Applications"
        from infos.models import MOTDMessage
        from django.template.defaultfilters import linebreaksbr
        self.children.append(
            modules.DashboardModule(
                column=1,
                title="MOTD",
                collapsible=False,
                pre_content='<ul class="grp-listing-small">' + ''.join([
                    '<li class="grp-row"><h5><strong>{}</strong></h5> {}</li>'.
                    format(obj.subject, linebreaksbr(obj.content))
                    for obj in MOTDMessage.objects.filter(
                        display=True).order_by('-modified')
                ]) + "</ul>"))

        self.children.append(
            modules.AppList(
                _('Tools'),
                collapsible=True,
                column=1,
                css_classes=('collapse closed', ),
                exclude=('django.contrib.*', ),
            ))

        # append an app list module for "Administration"
        self.children.append(
            modules.ModelList(
                _('ModelList: Administration'),
                column=1,
                collapsible=False,
                models=('django.contrib.*', ),
            ))

        # append another link list module for "support".
        from infos.models import LinkList
        self.children.append(
            modules.LinkList(
                _('Link List'),
                column=2,
                children=[{
                    'title': obj.name,
                    'url': obj.url,
                    'external': False,
                } for obj in LinkList.objects.filter(
                    display_on_dashboard=True).order_by('-modified')]))

        # append a recent actions module
        self.children.append(
            modules.RecentActions(
                _('Recent Actions'),
                limit=5,
                collapsible=False,
                column=3,
            ))
예제 #2
0
    def init_with_context(self, context):
        # Put database models in  column
        self.children.append(modules.ModelList(
            title='Database Management',
            column=2,
            exclude=('django.contrib.*','opensubmit.models.grading.*'),
        ))

        # Put course action boxes in column
        try:
            courses = context.request.user.profile.tutor_courses().all()
        except:
            courses = []

        for course in courses:
            # Prepare course-related links
            links=[]
            links.append(['Check all submissions',course.grading_url(), False])
            ass_url="%s?course__id__exact=%u"%(
                                reverse('teacher:opensubmit_assignment_changelist'),
                                course.pk
                            )
            links.append(['Check assignments',ass_url, False])
            links.append(['Show current grading table',reverse('gradingtable', args=[course.pk]), False])
            links.append(['eMail to students',reverse('mail2all', args=[course.pk]), False])
            links.append(['Edit course',reverse('teacher:opensubmit_course_change', args=[course.pk]), False])
            links.append(['Download course archive',reverse('coursearchive', args=[course.pk]), False])

            # Add course group box to dashboard
            self.children.append(modules.Group(
                title=course.title,
                column=1,
                children=[
                    modules.LinkList(title="Actions",children=(links)),
                    modules.DashboardModule(title="Info",pre_content=
                        '<table style="border: 0px; margin-left: 17px">'+
                        '<tr><td>Course URL for students       :</td><td>%s/?course=%u</td></tr>' % (settings.MAIN_URL, course.pk) +
                        "<tr><td>Open assignments              :</td><td>%u</td></tr>" % course.open_assignments().count() +
                        "<tr><td>Submissions to be graded      :</td><td>%u</td></tr>" % course.gradable_submissions().count() +
                        "<tr><td>Grading finished, not notified:</td><td>%u</td></tr>" % course.graded_submissions().count() +
                        "<tr><td>Registered students           :</td><td>%u</td></tr>" % course.participants.count() +
                        "<tr><td>Authoring students            :</td><td>%u</td></tr>" % course.authors().count() +
                        "</table>"
                    )
                ]
            ))

        # Put recent actions in third column
        self.children.append(modules.RecentActions(
            title='Recent teacher activities',
            column=3,
        ))
예제 #3
0
    def init_with_context(self, context):
        general = []
        if context.request.user.has_perm('opensubmit.change_course'):
            general.append([
                'Manage courses',
                reverse('teacher:opensubmit_course_changelist'), False
            ])
        if context.request.user.has_perm('opensubmit.change_gradingscheme'):
            general.append([
                'Manage grading schemes',
                reverse('teacher:opensubmit_gradingscheme_changelist'), False
            ])
        if context.request.user.has_perm('opensubmit.change_studyprogram'):
            general.append([
                'Manage study programs',
                reverse('teacher:opensubmit_studyprogram_changelist'), False
            ])
        if context.request.user.has_perm('opensubmit.change_user'):
            general.append(
                ['Manage users',
                 reverse('admin:auth_user_changelist'), False])
        if context.request.user.has_perm('opensubmit.change_user'):
            general.append([
                'Manage user groups',
                reverse('admin:auth_group_changelist'), False
            ])
        if context.request.user.has_perm('opensubmit.change_permission'):
            general.append([
                'Manage permissions',
                reverse('admin:auth_permission_changelist'), False
            ])
        if context.request.user.has_perm('opensubmit.change_testmachine'):
            general.append([
                'Manage test machines',
                reverse('teacher:opensubmit_testmachine_changelist'), False
            ])
        self.children.append(
            modules.Group(
                title="System",
                column=1,
                children=[
                    modules.LinkList(title="Actions", children=(general)),
                    modules.DashboardModule(
                        title="Info",
                        pre_content='<table style="border:0">' +
                        '<tr><td>OpenSubmit release</td><td><a href="https://github.com/troeger/opensubmit/releases/tag/v{0}">v{0}</a></td></tr>'
                        .format(settings.VERSION) +
                        '<tr><td>Administrator</td><td><a href="mailto:%s">%s</a></td></tr>'
                        % (settings.ADMINS[0][1], settings.ADMINS[0][0]) +
                        '<tr><td>Registered users</td><td>%u</td></tr>' %
                        (User.objects.count()) +
                        '<tr><td>Submitted solutions</td><td>%u</td></tr>' %
                        (Submission.objects.count()) +
                        '<tr><td>Test machines</td><td>%u enabled, %u disabled</td></tr>'
                        % (TestMachine.objects.filter(enabled=True).count(),
                           TestMachine.objects.filter(enabled=False).count()) +
                        "</table>")
                ]))

        # Put course action boxes in column
        try:
            courses = context.request.user.profile.tutor_courses().all()
        except:
            courses = []

        column = 2
        for course in courses:
            # Prepare course-related links
            links = []
            links.append(['Manage submissions', course.grading_url(), False])
            ass_url = "%s?course__id__exact=%u" % (
                reverse('teacher:opensubmit_assignment_changelist'), course.pk)
            if context.request.user.has_perm('opensubmit.change_assignment'):
                links.append(['Manage assignments', ass_url, False])
            links.append([
                'Show grading table',
                reverse('gradingtable', args=[course.pk]), False
            ])
            links.append([
                'Create eMail for students',
                reverse('mailcourse', args=[course.pk]), False
            ])
            if context.request.user.has_perm('opensubmit.change_course'):
                links.append([
                    'Edit course details',
                    reverse('teacher:opensubmit_course_change',
                            args=[course.pk]), False
                ])
            links.append([
                'Download course archive',
                reverse('coursearchive', args=[course.pk]), False
            ])

            # Add course group box to dashboard
            self.children.append(
                modules.Group(
                    title="Course '{0}'".format(course.title),
                    column=column,
                    children=[
                        modules.LinkList(title="Actions", children=(links)),
                        modules.DashboardModule(
                            title="Info",
                            pre_content='<table>' +
                            '<tr><td>Course URL for students</td><td>%s/?course=%u</td></tr>'
                            % (settings.MAIN_URL, course.pk) +
                            '<tr><td>Course owner</td><td><a href="mailto:%s">%s</a></td></tr>'
                            %
                            (course.owner.email, course.owner.get_full_name())
                            + "<tr><td>Open assignments</td><td>%u</td></tr>" %
                            course.open_assignments().count() +
                            "<tr><td>Submissions to be graded</td><td>%u</td></tr>"
                            % course.gradable_submissions().count() +
                            "<tr><td>Grading finished, not notified</td><td>%u</td></tr>"
                            % course.graded_submissions().count() +
                            "<tr><td>Registered students</td><td>%u</td></tr>"
                            % course.participants.count() +
                            "<tr><td>Authoring students</td><td>%u</td></tr>" %
                            course.authors().count() + "</table>")
                    ]))
            column += 1
예제 #4
0
    def init_with_context(self, context):
        general = []
        if context.request.user.has_perm('opensubmit.change_course'):
            general.append(['Manage courses', reverse(
                'teacher:opensubmit_course_changelist'), False])
        if context.request.user.has_perm('opensubmit.change_gradingscheme'):
            general.append(['Manage grading schemes', reverse(
                'teacher:opensubmit_gradingscheme_changelist'), False])
        if context.request.user.has_perm('opensubmit.change_studyprogram'):
            general.append(['Manage study programs', reverse(
                'teacher:opensubmit_studyprogram_changelist'), False])
        if context.request.user.has_perm('opensubmit.change_user'):
            general.append(['Manage users', reverse(
                'admin:auth_user_changelist'), False])
        if context.request.user.has_perm('opensubmit.change_user'):
            general.append(['Manage user groups', reverse(
                'admin:auth_group_changelist'), False])
        if context.request.user.has_perm('opensubmit.change_permission'):
            general.append(['Manage permissions', reverse(
                'admin:auth_permission_changelist'), False])
        if context.request.user.has_perm('opensubmit.change_testmachine'):
            general.append(['Manage test machines', reverse(
                'teacher:opensubmit_testmachine_changelist'), False])
        self.children.append(modules.Group(
            title="System",
            column=1,
            children=[
                modules.LinkList(title="Actions", children=(general)),
                modules.DashboardModule(title="Info", pre_content='<table class="teacher_dashboard_info">' +
                                        '<tr><td>OpenSubmit release</td><td><a target="_new" href="http://docs.open-submit.org/en/latest/changelog.html">v{0}</a></td></tr>'.format(settings.VERSION) +
                                        '<tr><td>Administrator</td><td><a href="mailto:%s">%s</a></td></tr>' % (settings.ADMINS[0][1], settings.ADMINS[0][0]) +
                                        '<tr><td>Registered users</td><td>%u</td></tr>' % (User.objects.count()) +
                                        '<tr><td>Submitted solutions</td><td>%u</td></tr>' % (Submission.objects.count()) +
                                        '<tr><td>Test machines</td><td>%u enabled, %u disabled</td></tr>' % (TestMachine.objects.filter(enabled=True).count(), TestMachine.objects.filter(enabled=False).count()) +
                                        "</table>"
                                        )
            ]
        ))

        # Put course action boxes in column
        try:
            courses = context.request.user.profile.tutor_courses().all()
        except Exception:
            courses = []

        column = 2
        for course in courses:
            # Prepare course-related links
            links = []
            links.append(['Manage submissions', course.grading_url(), False])
            ass_url = "%s?course__id__exact=%u" % (
                reverse('teacher:opensubmit_assignment_changelist'),
                course.pk
            )
            if context.request.user.has_perm('opensubmit.change_assignment'):
                links.append(['Manage assignments', ass_url, False])
            links.append(['Show grading table', reverse(
                'gradingtable', args=[course.pk]), False])
            links.append(['Create eMail for students', reverse(
                'mailcourse', args=[course.pk]), False])
            if context.request.user.has_perm('opensubmit.change_course'):
                links.append(['Edit course details', reverse(
                    'teacher:opensubmit_course_change', args=[course.pk]), False])
            links.append(['Download course archive', reverse(
                'coursearchive', args=[course.pk]), False])

            # Determine LTI links for existing assignments
            lti_links = []
            for assignment in course.assignments.all():
                lti_links.append([assignment.title, reverse(
                    'lti', args=[assignment.pk]), False])

            # Add course group box to dashboard
            self.children.append(modules.Group(
                title="Course '{0}'".format(course.title),
                column=column,
                children=[
                    modules.LinkList(title="Actions", children=(links)),
                    modules.DashboardModule(title="Statistics", pre_content='<table class="teacher_dashboard_info">' +
                                            "<tr><td>Open assignments</td><td>%u</td></tr>" % course.open_assignments().count() +
                                            "<tr><td>Submissions to be graded</td><td>%u</td></tr>" % course.gradable_submissions().count() +
                                            "<tr><td>Grading finished, not notified</td><td>%u</td></tr>" % course.graded_submissions().count() +
                                            "<tr><td>Registered students</td><td>%u</td></tr>" % course.participants.count() +
                                            "<tr><td>Authoring students</td><td>%u</td></tr>" % course.authors().count() +
                                            "</table>"
                                            ),
                    modules.LinkList(title="Direct Course Link",  css_classes=["grp-closed"], children=([course.title, context.request.build_absolute_uri(reverse("dashboard")) + "?course=%u" % (course.pk), False],)),
                    modules.LinkList(title="LTI Tool Links", css_classes=["grp-closed"], children=(lti_links)),
                    modules.DashboardModule(title="LTI Credentials", css_classes=["grp-closed"], pre_content='<table class="teacher_dashboard_info">' +
                                            '<tr><td>LTI Key</td><td>%s</td></tr>' % (course.lti_key) +
                                            '<tr><td>LTI Secret</td><td>%s</td></tr>' % (course.lti_secret) +
                                            "</table>"
                                            ),
                ]
            ))
            column += 1