Пример #1
0
def create_contest_wiki_page (contest, request):
    user = user_auth(request)
    
    w = WikiPage()
    w.url = reverse('webEval.web_eval__core.grader__controller.display_contest',
                    kwargs = {'contest_code' : contest.code }).rstrip('/').lstrip('/')
    w.author = user
    w.save()
    
    r = WikiRevision()
    r.revision_id = 1
    r.content = """ 
=== Contest %s ==
Write here about contest %s...
                """ % (contest.code, contest.code)
    r.date = datetime.datetime.now()
    r.ip = get_ip_from_request(request)
    r.wiki_page = w
    r.title = "Contest %s" % contest.code
    r.markup_type = 'C'
    r.security = 'Private'
    r.author = user
    r.save()
    
    w.last_revision = r
    w.save()
    
    return w
Пример #2
0
def create_user_wiki_page (user, request):
    w = WikiPage()
    w.url = reverse('webEval.web_eval__core.user__controller.display_user',
                    kwargs = { 'user_name' : user.username }).rstrip('/').lstrip('/')
    w.author = user
    w.save()
    
    r = WikiRevision()
    r.revision_id = 1
    r.content = """
== About me ==
Write here about you...                 
                """
    r.date = datetime.datetime.now()
    r.ip = get_ip_from_request(request)
    r.wiki_page = w
    r.title = "Profile: %s" % user.username
    r.markup_type = 'C'
    r.security = 'Protected'
    r.author = user
    r.save()
    
    w.last_revision = r
    w.save()
    
    return w
Пример #3
0
def edit_page (request, page_url, widgets = {}):
    user = user_auth(request)
    page = get_object_or_404(WikiPage, url=page_url)    
    revisions_list = WikiRevision.objects.filter(wiki_page=page)

    if not page.last_revision.can_edit(user):
        return redirect_to_index("You don't have enough rights to edit this page, i will redirect you...")
    
    if request.method == 'POST':    # we have some POST data.
        form = WikiRevisionEditForm(request.POST)
        if form.is_valid():
            revision = form.save(commit = False)
            revision.revision_id = page.last_revision.revision_id + 1
            revision.date = datetime.datetime.now()
            revision.ip = get_ip_from_request(request)
            revision.wiki_page = page
            revision.author = user
            revision.save()
            
            page.last_revision = revision
            page.save()
            if 'is_problem' in widgets:
                return HttpResponseRedirect(reverse('webEval.web_eval__core.grader__controller.display_problem',
                                                    kwargs = {'problem_code' : widgets['problem'].code }))
                
            return HttpResponseRedirect(reverse('webEval.web_eval__core.wiki__controller.display_page',
                                                    kwargs = {'page_url' : page.url }))
        else:
            print form.errors
    else:    
        form = WikiRevisionEditForm(page.last_revision)
        
    can_attach = page.last_revision.wiki_page.can_attach_files(user)
    can_edit = page.last_revision.can_edit(user)
    can_view = page.last_revision.can_view(user)
    
    return render_to_response('wiki_edit_revision.html', 
                              {'revision' : page.last_revision,
                               'page' : page,
                               'form' : form,
                               'edit' : True,
                               'widgets' : widgets,
                               'can_view' : can_view,
                               'can_edit' : can_edit,
                               'can_attach' : can_attach,
                               'navigation' : {
                                    'main' : 'wiki',
                                    'other' : 'edit-page',
                               }
                              },
                              context_instance = RequestContext(request)
                             )
Пример #4
0
def attach (request, page_url):
    user = user_auth(request)
    page = get_object_or_404(WikiPage, url = page_url)
    
    if page.can_attach_files(user) is False:
        return redirect_to_index("You don't have permissions to attach files to this page.")
    
    message = None

    if request.method == 'POST':
        if 'file_name' in request.FILES:
            attachment = WikiAttachment()
            attachment.name = request.FILES['file_name'].name
            attachment.wiki_page = page
            attachment.ip = get_ip_from_request(request)
            attachment.size = request.FILES['file_name'].size
            attachment.date = datetime.datetime.now()
            attachment.author = user
            attachment.security = 'Public'
            attachment.hash = ''
            attachment.save()
            
            attachment.hash = hashlib.md5(str(attachment.id)).hexdigest()
            attachment.save()
            
            save_file(dest = os.path.join(ATTACHMENTS_DIR, "attachment%d-%s" % (attachment.id, attachment.name)), file = request.FILES['file_name'])
            
            message = 'File uploaded successfully.'
        
    can_attach = page.last_revision.wiki_page.can_attach_files(user)
    can_edit = page.last_revision.can_edit(user)
    can_view = page.last_revision.can_view(user)
        
    return render_to_response('wiki/attach.html',
                              {
                               'page' : page,
                               'message' : message if message is not None else '',
                               'can_view' : can_view,
                               'can_edit' : can_edit,
                               'can_attach' : can_attach,
                               'navigation' : {
                                    'main' : 'wiki',
                                    'other' : 'attach',
                               }
                              },
                              context_instance = RequestContext(request),
                             )
Пример #5
0
def create_wiki_page (request, page_url = None):  
    user = user_auth(request)
    
    if user.has_perm('web_eval__core.add_wikipage') is False:
        return redirect_to_index("You don't have permission to add wiki pages.")
    
    if WikiPage.objects.filter(url = page_url):
        return redirect_to_index("Page already exists...")
    
    if request.method == 'POST':
        form = WikiRevisionEditForm(request.POST)
        
        if form.is_valid():
            page_url = request.POST['url']
            page = WikiPage()
            page.url = page_url
            page.author = user
            page.save()
            
            revision = form.save(commit = False)
            revision.revision_id = 1
            revision.date = datetime.datetime.now()
            revision.ip = get_ip_from_request(request)
            revision.wiki_page = page
            revision.author = user
            revision.save()
            
            page.last_revision = revision
            page.save()
            
            return HttpResponseRedirect(reverse('webEval.web_eval__core.wiki__controller.display_page',
                                            kwargs={'page_url' : page_url }))
    else:
        form = WikiRevisionEditForm()
    
    return render_to_response('wiki_edit_revision.html', 
                              {'revision' : 1,
                               'form' : form,
                               'edit' : False,
                               'page_url' : page_url,
                              },
                              context_instance = RequestContext(request)
                             )
Пример #6
0
def create_problem_wiki_page (problem, request):
    user = user_auth(request)
    
    w = WikiPage()
    w.url = reverse('webEval.web_eval__core.grader__controller.display_problem',
                    kwargs = { 'problem_code' : problem.code }).rstrip('/').lstrip('/')
    w.author = user
    w.save()
    
    r = WikiRevision()
    r.revision_id = 1
    r.content = """
== %s ==
Problem body...
=== Input file ===
From input file //%s.in// ...
=== Output file ===
Write ... to output file //%s.out//.
=== Restrictions and specifications
*0 < //N// < 1000

|=%s.in |=%s.out |
|some input |some output |
                """ % (problem.code, problem.code, problem.code, problem.code, problem.code)
    
    r.date = datetime.datetime.now()
    r.ip = get_ip_from_request(request)
    r.wiki_page = w
    r.title = problem.code
    r.markup_type = 'C'
    r.security = 'Private'
    r.author = user
    r.save()
    
    w.last_revision = r
    w.save()
    
    return w