Ejemplo n.º 1
0
 def test_delete_spam_course(self):
     course = course_model.create_course(
         **{
             "title": "A test course",
             "hashtag": "ATC-1",
             "description": "This course is all about ABC",
             "language": "en",
             "organizer_uri": '/uri/user/testuser'
         })
     course_model.delete_spam_course(course['uri'])
     with self.assertRaises(course_model.ResourceDeletedException):
         course_model.get_course(course['uri'])
Ejemplo n.º 2
0
 def test_delete_spam_course(self):
     course = course_model.create_course(
         **{
             "title": "A test course",
             "hashtag": "ATC-1",
             "description": "This course is all about ABC",
             "language": "en",
             "organizer_uri": '/uri/user/testuser'
         }
     )
     course_model.delete_spam_course(course['uri'])
     with self.assertRaises(course_model.ResourceDeletedException):
         course_model.get_course(course['uri'])
Ejemplo n.º 3
0
    def test_spam_course_deletion(self):
        course = course_model.create_course(
            **{
                "title": "A spam course",
                "hashtag": "ASC",
                "description": "This course is all about ABC",
                "language": "en",
                "organizer_uri": '/uri/user/spammer'
            })

        self.assertEqual(course_model.get_course(course['uri']), course)

        spam_model.handle_spam_user('spammer')
        with self.assertRaises(course_model.ResourceDeletedException):
            course_model.get_course(course['uri'])
Ejemplo n.º 4
0
def _get_course_or_404( course_uri ):
    try:
        course = course_model.get_course(course_uri)
    except:
        # TODO: this masks all exceptions that may happen in get_course!
        raise http.Http404
    return course
Ejemplo n.º 5
0
def get_stats():
    course_list = [ 632, 667, 620, 5, 77, 588, 140, 3 ]
    stats = []
    
    for course_id in course_list:
        course = course_model.get_course('/uri/course/{0}'.format(course_id))

        for content in course['content']:
            ident = '{0}-{1}'.format(course_id, content['id'])
            thread = utils.get_thread(ident)
            stats += [ (course['title'], content['title'], thread['response']['posts'] ) ]
            print('https://p2pu.org/en/courses/{0}, "{1}", {2}'.format(course_id, content['title'], thread['response']['posts']))

    old_course_list = [
        'get-cc-savvy',
        'teach-someone-something-with-open-content',
        'teach-someone-something-with-open-content-part-2',
        'open-detective',
        'contributing-to-wikimedia-commons',
        'open-glam',
        'a-look-at-open-video',
        'make-something-with-the-daily-create',
        'dscribe-peer-produced-open-educational-resources',
        'open-access-wikipedia-challenge'
    ]


    for course_slug in old_course_list:
        project = Project.objects.get(slug=course_slug)
        for page in project.pages.filter(deleted=False, listed=True):
            stats += [ ('https://p2pu.org/en/groups/{0}'.format(course_slug), page.title, page.comments.count()) ]
            print('https://p2pu.org/en/groups/{0}, "{1}", {2}'.format(course_slug, page.title, page.comments.count()))

    return stats
Ejemplo n.º 6
0
    def test_spam_course_deletion(self):
        course = course_model.create_course(
            **{
                "title": "A spam course",
                "hashtag": "ASC",
                "description": "This course is all about ABC",
                "language": "en",
                "organizer_uri": "/uri/user/spammer",
            }
        )

        self.assertEqual(course_model.get_course(course["uri"]), course)

        spam_model.handle_spam_user("spammer")
        with self.assertRaises(course_model.ResourceDeletedException):
            course_model.get_course(course["uri"])
Ejemplo n.º 7
0
def _get_course_or_404( course_uri ):
    try:
        course = course_model.get_course(course_uri)
    #except course_model.ResourceDeletedException:
    #    raise http.
    except:
        # TODO: this masks all exceptions that may happen in get_course!
        raise http.Http404
    return course
Ejemplo n.º 8
0
 def test_course_get(self):
     course = course_model.get_course(self.course['uri'])
     self.assertTrue('id' in course)
     self.assertTrue('uri' in course)
     self.assertTrue('title' in course)
     self.assertTrue('hashtag' in course)
     self.assertTrue('slug' in course)
     self.assertTrue('description' in course)
     self.assertTrue('language' in course)
     self.assertTrue('date_created' in course)
     self.assertTrue('author_uri' in course)
     self.assertTrue('status' in course)
     self.assertTrue('about_uri' in course)
     self.assertTrue('content' in course)
Ejemplo n.º 9
0
 def test_course_get(self):
     course = course_model.get_course(self.course["uri"])
     self.assertTrue("id" in course)
     self.assertTrue("uri" in course)
     self.assertTrue("title" in course)
     self.assertTrue("hashtag" in course)
     self.assertTrue("slug" in course)
     self.assertTrue("description" in course)
     self.assertTrue("language" in course)
     self.assertTrue("date_created" in course)
     self.assertTrue("author_uri" in course)
     self.assertTrue("status" in course)
     self.assertTrue("about_uri" in course)
     self.assertTrue("content" in course)
Ejemplo n.º 10
0
 def test_course_get(self):
     course = course_model.get_course(self.course['uri'])
     self.assertTrue('id' in course)
     self.assertTrue('uri' in course)
     self.assertTrue('title' in course)
     self.assertTrue('hashtag' in course)
     self.assertTrue('about_uri' in course)
     self.assertTrue('slug' in course)
     self.assertTrue('description' in course)
     self.assertTrue('language' in course)
     self.assertTrue('draft' in course)
     self.assertTrue('archived' in course)
     self.assertTrue('about_uri' in course)
     self.assertTrue('content' in course)
Ejemplo n.º 11
0
 def test_course_get(self):
     course = course_model.get_course(self.course['uri'])
     self.assertTrue('id' in course)
     self.assertTrue('uri' in course)
     self.assertTrue('title' in course)
     self.assertTrue('hashtag' in course)
     self.assertTrue('slug' in course)
     self.assertTrue('description' in course)
     self.assertTrue('language' in course)
     self.assertTrue('date_created' in course)
     self.assertTrue('author_uri' in course)
     self.assertTrue('status' in course)
     self.assertTrue('about_uri' in course)
     self.assertTrue('content' in course)
Ejemplo n.º 12
0
def _populate_course_context( request, course_id, context ):
    course_uri = course_model.course_id2uri(course_id)
    course = _get_course_or_404(course_uri)
    course['author'] = course['author_uri'].strip('/').split('/')[-1]
    context['course'] = course
    context['course_url'] = reverse('courses_show',
        kwargs={'course_id': course['id'], 'slug': course['slug']}
    )
    if 'image_uri' in course:
        context['course']['image'] = media_model.get_image(course['image_uri'])

    #NOTE if performance becomes a problem dont fetch cohort
    cohort = course_model.get_course_cohort(course_uri)
    context['cohort'] = cohort
    user_uri = u"/uri/user/{0}".format(request.user.username)
    context['organizer'] = course_model.is_cohort_organizer(
        user_uri, cohort['uri']
    )
    context['organizer'] |= request.user.is_superuser
    context['admin'] = request.user.is_superuser
    context['can_edit'] = context['organizer'] and not course['status'] == 'archived'
    context['trusted_user'] = request.user.has_perm('users.trusted_user')
    if course_model.user_in_cohort(user_uri, cohort['uri']):
        if not context['organizer']:
            context['show_leave_course'] = True
        context['learner'] = True
    elif cohort['signup'] == "OPEN":
        context['show_signup'] = True

    try:
        course_lists = learn_model.get_lists_for_course(reverse(
            'courses_slug_redirect',
            kwargs={'course_id': course_id}
        ))
        f = lambda l: l['name'] not in ['drafts', 'listed', 'archived']
        context['lists'] = filter(f, course_lists)
    except:
        log.error("Could not get lists for course!")

    if 'based_on_uri' in course:
        course['based_on'] = course_model.get_course(course['based_on_uri'])

    context['meta_data'] = lrmi_model.get_tags(course_uri)
    if 'educational_alignment' in context['meta_data']:
        context['educational_alignment'] = json.loads(context['meta_data']['educational_alignment'])
        del context['meta_data']['educational_alignment']

    return context
Ejemplo n.º 13
0
def _get_course_or_404( course_uri ):
    try:
        course = course_model.get_course(course_uri)
    except:
        raise http.Http404
    return course
Ejemplo n.º 14
0
def get_stats():
    #course_list = [ 632, 667, 620, 5, 77, 588, 140, 3 ]
    course_list = [1275, 1196, 1283, 3, 2178, 140]
    stats = []

    with open('soo-comments.csv', 'w') as f:
        writer = unicodecsv.writer(f, encoding='utf-8')
        
        for course_id in course_list:
            course = course_model.get_course('/uri/course/{0}'.format(course_id))
 
            for content in course['content']:
                ident = '{0}-{1}'.format(course_id, content['id'])
                thread = utils.get_thread_posts(ident)
                for post in thread['response']:
                    print(u'https://courses.p2pu.org/en/courses/{0}/, "{1}", {2} "{3}"'.format(course_id, content['title'], post['author']['url'], post['message']))
                    writer.writerow([
                        u'https://courses.p2pu.org/en/courses/{0}/'.format(course_id), 
                        content['title'],
                        post['author']['url'], 
                        post['message']
                    ])
                #stats += [ (course_id, content['title'], thread['response']['posts']) ]
                #print('https://courses.p2pu.org/en/courses/{0}, "{1}", {2}'.format(course_id, content['title'], thread['response']['posts']))
 
        #old_course_list = [
        #    'get-cc-savvy',
        #    'teach-someone-something-with-open-content',
        #    'teach-someone-something-with-open-content-part-2',
        #    'open-detective',
        #    'contributing-to-wikimedia-commons',
        #    'open-glam',
        #    'a-look-at-open-video',
        #    'make-something-with-the-daily-create',
        #    'dscribe-peer-produced-open-educational-resources',
        #    'open-access-wikipedia-challenge'
        #]
        old_course_list = [
            'a-look-at-open-video',
            'contributing-to-wikimedia-commons',
            'dscribe-peer-produced-open-educational-resources',
            'get-cc-savvy',
            'open-access-wikipedia-challenge',
            'open-glam',
            'open-detective',
            'make-something-with-the-daily-create',
            'teach-someone-something-with-open-content',
            'teach-someone-something-with-open-content-part-2'
        ]
 
 
        for course_slug in old_course_list:
            project = Project.objects.get(slug=course_slug)
            for page in project.pages.filter(deleted=False, listed=True):
                stats += [ ('https://courses.p2pu.org/en/groups/{0}/'.format(course_slug), page.title, page.comments.count()) ]
                for comment in page.comments.all():
                    print(u'https://courses.p2pu.org/en/groups/{0}/, "{1}", "{2}", "{3}"'.format(course_slug, page.title, comment.author.username, comment.content))
                    writer.writerow([
                        u'https://courses.p2pu.org/en/groups/{0}/'.format(course_slug),
                        page.title,
                        comment.author.username,
                        comment.content
                    ])
                #print('https://courses.p2pu.org/en/groups/{0}/, "{1}", {2}'.format(course_slug, page.title, page.comments.count()))

    return stats
Ejemplo n.º 15
0
def get_stats():
    course_list = [632, 667, 620, 5, 77, 588, 140, 3]
    course_list = []
    stats = []

    with open("soo-comments.csv", "w") as f:
        writer = unicodecsv.writer(f, encoding="utf-8")

        for course_id in course_list:
            course = course_model.get_course("/uri/course/{0}".format(course_id))

            for content in course["content"]:
                ident = "{0}-{1}".format(course_id, content["id"])
                thread = utils.get_thread_posts(ident)
                for post in thread["response"]:
                    print(
                        u'https://p2pu.org/en/courses/{0}/, "{1}", {2} "{3}"'.format(
                            course_id, content["title"], post["author"]["url"], post["message"]
                        )
                    )
                    writer.writerow(
                        [
                            u"https://p2pu.org/en/courses/{0}/".format(course_id),
                            content["title"],
                            post["author"]["url"],
                            post["message"],
                        ]
                    )
                # stats += [ (course_id, content['title'], thread['response']['posts']) ]
                # print('https://p2pu.org/en/courses/{0}, "{1}", {2}'.format(course_id, content['title'], thread['response']['posts']))

        old_course_list = [
            "get-cc-savvy",
            "teach-someone-something-with-open-content",
            "teach-someone-something-with-open-content-part-2",
            "open-detective",
            "contributing-to-wikimedia-commons",
            "open-glam",
            "a-look-at-open-video",
            "make-something-with-the-daily-create",
            "dscribe-peer-produced-open-educational-resources",
            "open-access-wikipedia-challenge",
        ]

        for course_slug in old_course_list:
            project = Project.objects.get(slug=course_slug)
            for page in project.pages.filter(deleted=False, listed=True):
                stats += [("https://p2pu.org/en/groups/{0}/".format(course_slug), page.title, page.comments.count())]
                for comment in page.comments.all():
                    print(
                        u'https://p2pu.org/en/groups/{0}/, "{1}", "{2}", "{3}"'.format(
                            course_slug, page.title, comment.author.username, comment.content
                        )
                    )
                    writer.writerow(
                        [
                            u"https://p2pu.org/en/groups/{0}/".format(course_slug),
                            page.title,
                            comment.author.username,
                            comment.content,
                        ]
                    )
                # print('https://p2pu.org/en/groups/{0}/, "{1}", {2}'.format(course_slug, page.title, page.comments.count()))

    return stats
Ejemplo n.º 16
0
def get_stats():
    #course_list = [ 632, 667, 620, 5, 77, 588, 140, 3 ]
    course_list = [1275, 1196, 1283, 3, 2178, 140]
    stats = []

    with open('soo-comments.csv', 'w') as f:
        writer = unicodecsv.writer(f, encoding='utf-8')

        for course_id in course_list:
            course = course_model.get_course(
                '/uri/course/{0}'.format(course_id))

            for content in course['content']:
                ident = '{0}-{1}'.format(course_id, content['id'])
                thread = utils.get_thread_posts(ident)
                for post in thread['response']:
                    print(
                        u'https://courses.p2pu.org/en/courses/{0}/, "{1}", {2} "{3}"'
                        .format(course_id, content['title'],
                                post['author']['url'], post['message']))
                    writer.writerow([
                        u'https://courses.p2pu.org/en/courses/{0}/'.format(
                            course_id), content['title'],
                        post['author']['url'], post['message']
                    ])
                #stats += [ (course_id, content['title'], thread['response']['posts']) ]
                #print('https://courses.p2pu.org/en/courses/{0}, "{1}", {2}'.format(course_id, content['title'], thread['response']['posts']))

        #old_course_list = [
        #    'get-cc-savvy',
        #    'teach-someone-something-with-open-content',
        #    'teach-someone-something-with-open-content-part-2',
        #    'open-detective',
        #    'contributing-to-wikimedia-commons',
        #    'open-glam',
        #    'a-look-at-open-video',
        #    'make-something-with-the-daily-create',
        #    'dscribe-peer-produced-open-educational-resources',
        #    'open-access-wikipedia-challenge'
        #]
        old_course_list = [
            'a-look-at-open-video', 'contributing-to-wikimedia-commons',
            'dscribe-peer-produced-open-educational-resources', 'get-cc-savvy',
            'open-access-wikipedia-challenge', 'open-glam', 'open-detective',
            'make-something-with-the-daily-create',
            'teach-someone-something-with-open-content',
            'teach-someone-something-with-open-content-part-2'
        ]

        for course_slug in old_course_list:
            project = Project.objects.get(slug=course_slug)
            for page in project.pages.filter(deleted=False, listed=True):
                stats += [('https://courses.p2pu.org/en/groups/{0}/'.format(
                    course_slug), page.title, page.comments.count())]
                for comment in page.comments.all():
                    print(
                        u'https://courses.p2pu.org/en/groups/{0}/, "{1}", "{2}", "{3}"'
                        .format(course_slug, page.title,
                                comment.author.username, comment.content))
                    writer.writerow([
                        u'https://courses.p2pu.org/en/groups/{0}/'.format(
                            course_slug), page.title, comment.author.username,
                        comment.content
                    ])
                #print('https://courses.p2pu.org/en/groups/{0}/, "{1}", {2}'.format(course_slug, page.title, page.comments.count()))

    return stats