Exemplo n.º 1
0
def upload_file(request):
    tags_list = list(Tag.objects.values_list('text', flat=True))
    tags_json = json.dumps(tags_list)
    if request.method == 'POST':
        try:
            form = UploadForm(request.POST, request.FILES)
            if form.is_valid():
                upload_handler(request)
                for filename, file in request.FILES.iteritems():
                    name = request.FILES[filename].name
                n = Log(text='file ' + name + ' upladed successfully',
                        datetime=timezone.now(),
                        logType='noti')
                n.save()
                return HttpResponseRedirect(request.POST['next'])

        except:
            n = Log(text='The was an error when Uploading file',
                    datetime=timezone.now(),
                    logType='err')
            n.save()
    else:
        form = UploadForm()
    try:
        return render(
            request, 'browse/upload.html', {
                'form': form,
                'tags_json': tags_json,
                'categories': category_dictionary()
            })
    except:
        n = Log(text='The was an error when opening the upload page',
                datetime=timezone.now(),
                logType='err')
        n.save()
Exemplo n.º 2
0
def categories(request):
    """
    view for managing categories
    """
    add_category_form = AddCategory()
    edt_category_form = EditCategory()
    del_category_form = DeleteCategory()

    cat_dict = category_dictionary()

    return render(request, 'catalogue/categories.html', {
        'add_category_form': add_category_form,
        'categories': cat_dict,
    })
Exemplo n.º 3
0
def items_edit(request, template='browse/edit.html'):
    """
    supply a form to edit a content item, preloaded with details
    """
    tags_list = list(Tag.objects.values_list('text', flat=True))
    tags_json = json.dumps(tags_list)

    if request.method == 'POST':

        form = UpdateForm(request.POST)

        if form.is_valid():
            i = Importer()
            itemid = request.POST['id']
            item = ContentItem.objects.exclude(uploaded=False).get(pk=itemid)

            item.title = request.POST['title']
            item.description = request.POST['description']

            category = request.POST['c']

            cat_to_ci_map = []
            if category is not None:
                CategoryThroughModel = ContentItem.categories.through
                CategoryThroughModel.objects.filter(contentitem=item).delete()

                # i.e. leave with no categories if c is 0
                if category != '0':
                    cat_to_ci_map.append([item.pk, [category]])
                    i.create_category_relationships(cat_to_ci_map,
                                                    id_list=True)

            tags = request.POST['tags'].split(',')

            tag_to_ci_map = []
            if tags is not None:
                TagThroughModel = ContentItem.tags.through
                TagThroughModel.objects.filter(contentitem=item).delete()
                tag_to_ci_map.append([item.id, tags])
                i.create_tags(tags)
                i.create_tag_relationships(tag_to_ci_map, id_list=False)

            #i.force_update_of_index()

            logger.info("Updating tag scores")
            generate_tag_scores()

            item.save()

            return JsonResponse({
                'result': True,
                'id': itemid,
                'title': item.title
            })
        else:
            return JsonResponse({'result': False})

    else:
        item = ContentItem.objects.exclude(uploaded=False).get(
            pk=request.GET['id'])
        form = UpdateForm(instance=item)

        existing_tags = []
        for tag in item.tags.all():
            existing_tags.append(tag.text)

        existing_tags_string = ','.join(existing_tags)

        existing_categories = []
        for cat in item.categories.all():
            existing_categories.append(cat.pk)

        if len(existing_categories) > 0:
            existing_categories = existing_categories[-1]

        context = {
            'form': form,
            'item_id': item.pk,
            'tags_json': tags_json,
            'categories': category_dictionary(),
            'existing_tags': existing_tags_string,
            'existing_category': existing_categories,  # should only be one
        }

        return render_to_response(template,
                                  context,
                                  context_instance=RequestContext(request))
Exemplo n.º 4
0
def filter_view(request, source=None, template='browse/library.html'):

    # Redirect logged in user to /preloaded/ by default if they try to go to just /library/
    #if request.user.is_authenticated() and source is None:
    #    return HttpResponseRedirect(reverse('library', kwargs={'source': 'preloaded'}))

    #if user is not logged in and tries /library when it is hidden: redirect to home
    hide_lib_setting, created = SiteSetting.objects.get_or_create(
        name="hide_library", defaults={'value': False})
    if 'library.html' in template:
        if request.user.is_authenticated() == False:
            if hide_lib_setting.value == "True":
                #Not teacher & library is hidden return to home
                return HttpResponseRedirect("/")
        else:
            if hide_lib_setting == "True" and request.session[
                    'viewType'] == "student":
                return HttpResponseRedirect("/")

    legit_sources = ['preloaded', 'uploaded']
    if source is not None:
        if source not in legit_sources:
            raise Http404("Sorry, no results on that page.")

    # Pull fields from the GET
    model = request.GET.get('m', 0)  # 0 is for library, 1 for lessons
    query = request.GET.get('q', None)
    category = request.GET.get(
        'c', None)  # only the 'bottom' category will be needed, for now
    tags = request.GET.getlist('t', None)

    if 'lessons.html' in template:
        model = TeacherGroup
    else:
        model = ContentItem

    sort_by = request.GET.get('sort_by', 'date')
    #date : date_added
    #name : title
    sort_by_modelname = 'title' if sort_by == 'name' else 'date_added'

    #if user is student library should display both preloaded and uploaded content together.
    if request.user.is_authenticated(
    ) == False or request.session['viewType'] == "student":
        source = 'both'
        exclude_hidden = True
    else:
        exclude_hidden = False

    #is_teacher = request.user.is_authenticated()
    #if is_teacher:
    #    exclude_hidden = request.session['viewType'] == "student" #if teacher and viewed as student

    paginator = get_results(model, source, query, category, tags,
                            exclude_hidden, sort_by_modelname)
    paginator.sort_method = sort_by
    if not 'library.html' in template:
        paginator.hide_sort = True

    try:
        page = paginator.page(int(request.GET.get('page', 1)))
    except InvalidPage:
        try:
            page = paginator.page(paginator.num_pages)
        except:
            raise Http404("Sorry, no results on any pages.")

    groups = TeacherGroup.objects.all().order_by('title')

    tag_cloud = Tag.objects.exclude(score=0).order_by('-score')[:TAG_CLOUD_MAX]
    tag_cloud_sorted = sorted(tag_cloud, key=lambda o: o.text)

    #top_level_categories = Category.objects.filter(parent__exact=None).order_by('name')

    context = {
        'page': page,
        'paginator': paginator,
        'query': query,
        'suggestion': None,
        'tags': tag_cloud_sorted,
        'groups': groups,
        'categories': category_dictionary(),
        'libhidden': hide_lib_setting.value,
    }

    return render_to_response(template,
                              context,
                              context_instance=RequestContext(request))