Example #1
0
def index(request):
    if not Folder.objects.filter(folder_name="Archive", user=request.user.id):
        f = Folder(folder_name="Archive", parent=None, user=request.user)
        f.save()
    q_auth_set = (
        Q(user__id__exact=request.user.id)
    )
    if request.method == 'POST':
        if 'search' in request.POST:
            query = request.GET.get('q', '')
            if query:
                qset = (
                    Q(title__icontains=query) | Q(description__icontains=query) | Q(url__icontains=query)
                )
                results = Bookmark.objects.filter(qset).distinct()
            else:
                results = []
            return render_to_response("marnie/search.html", {
                "results": results,
                "query": query
            })
        bookmark_list = Bookmark.objects.filter(q_auth_set).order_by('-date')

        page = request.GET.get('page')
        paginator = Paginator(bookmark_list, 10)
        try:
            bookmarks = paginator.page(page)
        except PageNotAnInteger:
            bookmarks = paginator.page(1)
        except EmptyPage:
            bookmarks = paginator.page(paginator.num_pages)

        tag_list = Tag.objects.filter(q_auth_set).order_by('tag_name')
        author_list = Author.objects.filter(q_auth_set).order_by('author_name')
        folder_list = Folder.objects.filter(q_auth_set)
    else:
        bookmark_list = Bookmark.objects.filter(q_auth_set).order_by('-date')
        page = request.GET.get('page')
        paginator = Paginator(bookmark_list, 10)
        try:
            bookmarks = paginator.page(page)
        except PageNotAnInteger:
            bookmarks = paginator.page(1)
        except EmptyPage:
            bookmarks = paginator.page(paginator.num_pages)
        tag_list = Tag.objects.filter(q_auth_set).order_by('tag_name')
        author_list = Author.objects.filter(q_auth_set).order_by('author_name')
        folder_list = Folder.objects.filter(q_auth_set)
    return render_to_response('marnie/index.html', 
    {
        'bookmark_list': bookmarks, 
        'tag_list': tag_list,
        'author_list': author_list, 
        'folders': folder_list,
        'headline': "My Library",
    }, RequestContext(request))
Example #2
0
def add(request):
    c = {}
    c.update(csrf(request))

    bookmarkForm = BookmarkForm(user=request.user.id)
    TagFormSet = formset_factory(TagForm)
    AuthorFormSet = formset_factory(AuthorForm)
    folderForm = FolderForm(user=request.user.id)

    if request.method == 'POST':
        bookmarkForm = BookmarkForm(request.POST, user=request.user.id)
        tagFormSet = TagFormSet(request.POST)
        authorFormSet = AuthorFormSet(request.POST)
        folderForm = FolderForm(request.POST, user=request.user.id)

        if 'add_bookmark' in request.POST:
                form = bookmarkForm
                if form.is_valid() and form.has_changed():
                    internal_id = uuid.uuid4()
                    type = "B"
		    title = form.cleaned_data["title"]
		    urls = form.cleaned_data["urls"]
                    user = request.user
                    description = form.cleaned_data["description"]
                    date = datetime.datetime.now()
                    publication_date = form.cleaned_data["pub_date"]                     
                    folder = form.cleaned_data["folder"]
                    notes = form.cleaned_data["notes"]
                    
                    bookmark = Bookmark(type=type, 
                        internal_id=internal_id, 
                        title=title, 
                        description=description, 
                        date=date, 
                        pub_date=publication_date,
                        folder=folder,
                        notes=notes,
                        user=user)
                    bookmark.save()                     
                   
                    for url in urls.split():
                        path = handle_snapshot(url, internal_id)
                        t = BookmarkItem(external_url=url, internal_url=path)
                        t.user = request.user
                        t.save()
                        bookmark.items.add(t) 
                   
                    tags = form.cleaned_data['tags']
                    for tag in tags:
                        bookmark.tags.add(tag)   
                   
                    authors = form.cleaned_data['authors']
                    for author in authors:
                        bookmark.authors.add(author)

                    return HttpResponseRedirect(settings.BASE_URL + "dashboard")
        if 'add_tag' in request.POST:
            if tagFormSet.is_valid():
                for form in tagFormSet.forms:
                    if not form['tag_name'].data == '':
                        t = Tag(tag_name=form['tag_name'].data)
                        t.user = request.user
                        t.save()
        if 'add_author' in request.POST:
            if authorFormSet.is_valid():
                for form in authorFormSet.forms:
                    if not form['author_name'].data == '':
                        a = Author(author_name=form['author_name'].data)
                        a.user = request.user
                        a.save()
        if 'add_folder' in request.POST:
            if folderForm.is_valid():
                if not folderForm['folder_name'].data == '':
                    folderList = folderForm['parent_folder'].data
                    for folderId in folderList:
                        parent = Folder.objects.get(id=folderId)
                        f = Folder(folder_name=folderForm['folder_name'].data, parent=parent)
                        f.user = request.user
                        f.save()
                    return HttpResponseRedirect(settings.BASE_URL + "dashboard")
    else:
        bookmarkForm = BookmarkForm(user=request.user.id)
        tagFormSet = TagFormSet()
        authorFormSet = AuthorFormSet()
        folderForm = FolderForm(user=request.user.id)

    return render_to_response('marnie/add.html', {
        "bookmarkForm": bookmarkForm, 
        "tagFormSet": tagFormSet, 
        "authorFormSet": authorFormSet, 
        "folderForm": folderForm,
    }, RequestContext(request))
Example #3
0
def add_file(request):
    fileFormSets = formset_factory(FileForm)
    tagFormSets = formset_factory(TagForm)
    authorFormSets = formset_factory(AuthorForm)
    folderFormSets = formset_factory(FolderForm)
    if request.method == 'POST':
        fileFormSet = fileFormSets(request.POST)
        tagFormSet = tagFormSets(request.POST)
        authorFormSet = authorFormSets(request.POST)
        folderFormSet = folderFormSets(request.POST)
        if 'add_file' in request.POST:
#            if fileFormSet.is_valid():
               for form in fileFormSet.forms:
                   internal_id = uuid.uuid4()
                   b = Bookmark(
                       type='F',
                       title=form['title'].data,
                       #url=form['url'].data,
                       description=form['description'].data,
                       date=datetime.datetime.now(),
                       pub_date=form['pub_date'].data,
                       notes=form['notes'].data,
                       folder=Folder.objects.get(id=form['folder'].data),
                       internal_id=internal_id
                   )
                   #path = handle_uploaded_file(request.FILES['form-0-internal_url'])
                   #b.internal_url = path
                   #file_list = form['files']
                   b.save()
                   files = request.FILES.getlist('form-0-files[]')             
                   for f in files:
                       path = handle_uploaded_file(f, internal_id)
                       t = BookmarkItem(external_url=form['url'].data, internal_url=path)
                       t.save()
                       b.items.add(t)
                   
                   tag_list = form['tags'].data
                   for tag in tag_list:
                       b.tags.add(tag)
                   author_list =form['authors'].data
                   for author in author_list:
                       b.authors.add(author)
                   return HttpResponseRedirect(settings.BASE_URL)
        if 'add_tag' in request.POST:
            if tagFormSet.is_valid():
                for form in tagFormSet.forms:
                    if not form['tag_name'].data == '':
                        t = Tag(tag_name=form['tag_name'].data)
                        t.save()
        if 'add_author' in request.POST:
            if authorFormSet.is_valid():
                for form in authorFormSet.forms:
                    if not form['author_name'].data == '':
                        a = Author(author_name=form['author_name'].data)
                        a.save()
        if 'add_folder' in request.POST:
            if folderFormSet.is_valid():
                for form in folderFormSet.forms:
                    if not form['folder_name'].data == '':
                        folderList = form['parent'].data
                        for folderId in folderList:
                            parent = Folder.objects.get(id=folderId)
                            f = Folder(folder_name=form['folder_name'].data, parent=parent)
                            f.save()
    else:
        fileFormSet = fileFormSets()
        tagFormSet = tagFormSets()
        authorFormSet = authorFormSets()
        folderFormSet = folderFormSets()
    return render_to_response('marnie/add_file.html', {
        "fileFormSet": fileFormSet,
        "tagFormSet": tagFormSet,
        "authorFormSet": authorFormSet,
        "folderFormSet": folderFormSet,
    }, RequestContext(request))
Example #4
0
 def test_folder_creation(self):
     f = Folder(id=1, folder_name="Test", parent=None)
     f.save()
     self.assertEqual(len(Folder.objects.all()), 1)