예제 #1
0
def main(request, rest_of_address):
	address = Address(rest_of_address)
	#import pdb; pdb.set_trace()
	if not address.folder:
		return render_to_response('documents_folders/error.html', {'error':'no_folder', 'current_folder_path': address.folder_path})
	if address.file_path and not address.file:
		return render_to_response('documents_folders/error.html', {'error':'no_file', 'current_folder': address.folder_path, 'open_file':address.file_path})
	if 'submit_comment' in request.POST: 
		add_comment(request, address)
	#Create new folder
	if 'file' in request.FILES:
		upload_file(request, address.folder.id)
	if 'new_folder_name' in request.POST:
		folder_name = str(request.POST.get('new_folder_name'))
		if folder_name.strip():
			p = Folder(name = folder_name, parent_folder = address.folder.id, folder_path = address.folder_path+'/'+folder_name)
			p.save()
	#Remove folder and all sub-folders of that folder
	for folder_id in [a for a, b in request.POST.iteritems() if b == 'Delete']:
		remove_folder(folder_id)
	sub_folders = Folder.objects.filter(parent_folder=address.folder.id)
	sub_files = File.objects.filter(parent_folder = address.folder.id)
	relevant_comments = Comment.objects.filter(attached_to_type = address.type, attached_to_id = address.id)
	try:
		parent_folder = Folder.objects.get(id = address.folder.parent_folder)
	except:
		parent_folder = None
	return render_to_response('documents_folders/blah.html', {'relevant_comments':relevant_comments, 'sub_folders': sub_folders, 'current_folder_path': address.folder.folder_path, 'parent_folder': parent_folder, 'sub_files':sub_files, 'open_file':address.file_path, 'current_path': '/documents/'+rest_of_address}, context_instance=RequestContext(request))
예제 #2
0
 def test_model_folder(self):
     """Test Folder Model"""
     obj = Folder(name='test')
     obj.save()
     self.assertEquals('test', obj.name)
     self.assertNotEquals(obj.id, None)
     obj.delete()
예제 #3
0
파일: tests.py 프로젝트: monusingh/assign
    def test_get(self):
        """A logged in user ask to move a valid favorite."""
        godzilla = self.user('godzilla')
        self.client.login(username='******', password='******')
        dummy = DummyModel()
        dummy.save()
        favorite = Favorite.objects.create_favorite(dummy, godzilla)
        folders = []
        for i in range(10):
            folder = Folder(name="folder-%s" % i, user=godzilla)
            folder.save()
            folders.append(folder)
        target_url = reverse('favorites:favorite_move',
                             kwargs={
                                 'object_id': favorite.pk,
                             })
        response = self.client.get(target_url)
        self.assertEquals(response.status_code, 200)

        instance = response.context['favorite']
        self.assertEquals(instance.pk, favorite.pk)
        favorite.delete()
        godzilla.delete()
        for folder in folders:
            folder.delete()
        dummy.delete()
예제 #4
0
def folders(request):
    folders = Folder.objects.filter(user=request.user)
    context = {'folders':folders}
    if request.method == 'POST':
        # changing to a different folder
        if "change_folder" in request.POST:
            request.session['notes_folder'] = request.POST['folder']
            # If we are changing folders we don't 
            # want to keep to what page we were on in
            # the other folder.
            if 'page' in request.session:
                del request.session['page']
            return redirect('cloud_notes.views.list')
        if "create_folder" in request.POST:
            form = NewFolderForm(request.POST)
            if form.is_valid():
                folder_name = form.cleaned_data['folder']
                folder = Folder(name = folder_name)
                folder.save()
                return redirect('cloud_notes.views.list')
            else:
                context['form'] = form
                return render(request, 'cloud_notes/folders.html', context)
    else:
        return render(request, 'cloud_notes/folders.html', context)
예제 #5
0
    def test_get(self):
        """A logged in user ask to move a valid favorite."""
        godzilla = self.user('godzilla')
        self.client.login(username='******', password='******')
        dummy = DummyModel()
        dummy.save()
        favorite = Favorite.objects.create_favorite(dummy, godzilla)
        folders = []
        for i in range(10):
            folder = Folder(name="folder-%s" % i, user=godzilla)
            folder.save()
            folders.append(folder)
        target_url = reverse('favorites:favorite_move',
                             kwargs = {
    'object_id': favorite.pk,
})
        response = self.client.get(target_url)
        self.assertEquals(response.status_code, 200)

        instance = response.context['favorite']
        self.assertEquals(instance.pk, favorite.pk)
        favorite.delete()
        godzilla.delete()
        for folder in folders:
            folder.delete()
        dummy.delete()
예제 #6
0
def handle_uploaded_json_file(f, user):
    
    def convert_date(str_date):
        new_str = str_date.replace('+00:00','')
        try:
            new_dt = datetime.strptime(new_str, '%Y-%m-%d %H:%M:%S.%f')
        except ValueError:
            new_dt = datetime.strptime(new_str, '%Y-%m-%d %H:%M:%S')
        return new_dt
    
    with open('notes.json', 'wb+') as destination:
        for chunk in f.chunks():
            destination.write(chunk)
        f.close()
    with open('notes.json', 'r') as fh:
        json_data = json.load(fh)
        fh.close()
    
    version, notes = json_data
    
    # for user in User.objects.all():
        # if not Folder.)objects.filter(user = user, name = "Main").exists():
            # folder = Folder(name="Main", user = user)
            # folder.save()
        # if not Folder.objects.filter(user = user, name = ")Trash").exists():
            # folder = Folder(name="Trash", user = u)ser)
            # folder.save()  
          
    for note in notes:
        created_at = convert_date(note['created_at'])
        title = note['title']
        username = note['user']

        # TODO: If user is blank we need to assign to a default user.  For now just skip.
        # Its technically a database integrity violation anyway.
        if username is None: continue

        user = User.objects.get(username = username)        

        if not Note.objects.filter(title = title, 
                               created_at = created_at).exists():
            new_note = Note()
            new_note.title =  title
            new_note.created_at = created_at
            new_note.modified_at = convert_date(note['modified_at'])
            new_note.note_type = note['post_type'] 
            new_note.note = note['note']
            foldr = note['folder']
            
            
            try:
                folder = Folder.objects.get(name = foldr, user = user)
            except Folder.DoesNotExist:
                folder = Folder(name = foldr, user = user)
                folder.save()
            new_note.folder = folder
            new_note.user = user
            new_note.save()
예제 #7
0
 def test_login_required(self):
     """User should be logged it to delete an object."""
     godzilla = self.user('godzilla')
     folder = Folder(name='japan', user=godzilla)
     folder.save()
     response = self.client.get(reverse('favorites:folder_update', args=(folder.pk,)))
     self.assertEquals(response.status_code, 302)
     folder.delete()
     godzilla.delete()
예제 #8
0
 def test_model_file(self):
     """Test File Model"""
     folder = Folder(name='test')
     folder.save()
     obj = File(name='test', folder=folder)
     obj.save()
     self.assertEquals(folder, obj.folder)
     self.assertNotEquals(obj.id, None)
     obj.delete()
예제 #9
0
 def test_model_document(self):
     """Test Document Model"""
     folder = Folder(name='test')
     folder.save()
     obj = Document(title='test', folder=folder)
     obj.save()
     self.assertEquals(folder, obj.folder)
     self.assertNotEquals(obj.id, None)
     obj.delete()
예제 #10
0
 def test_model_weblink(self):
     """Test WebLink Model"""
     folder = Folder(name='test')
     folder.save()
     obj = WebLink(title='test', folder=folder, url='test')
     obj.save()
     self.assertEquals(folder, obj.folder)
     self.assertNotEquals(obj.id, None)
     obj.delete()
예제 #11
0
    def RPC__Folder__getRoot(self):
        """Return the main folder for the current user ("My folders"). """
        try:
            folder = Folder.objects.get(user=self.user, parent=None)
        except Folder.DoesNotExist:
            folder = Folder(user=self.user, name="My folders")
            folder.save()

        self.return_api_result({'uuid': folder.uuid, 'name': folder.name})
예제 #12
0
 def test_get(self):
     """User want to update an existing folder."""
     godzilla = self.user('godzilla')
     self.client.login(username='******', password='******')
     folder = Folder(name='japan', user=godzilla)
     folder.save()
     response = self.client.get(reverse('favorites:folder_update', args=(folder.pk,)))
     self.assertEquals(response.status_code, 200)
     godzilla.delete()
     folder.delete()
예제 #13
0
 def test_post(self):
     """Submit a delete form with good credentials. Returns a redirect."""
     godzilla = self.user('godzilla')
     folder = Folder(name='japan', user=godzilla)
     folder.save()
     self.client.login(username='******', password='******')
     response = self.client.post(reverse('favorites:folder_delete', args=(folder.pk,)), {'object_id': folder.pk})
     self.assertEquals(response.status_code, 302)
     self.assertEquals(Folder.objects.filter(user=godzilla).count(), 0)
     godzilla.delete()
예제 #14
0
 def test_get(self):
     """Test that the page is reachable with an existing folder."""
     godzilla = self.user('godzilla')
     self.client.login(username='******', password='******')
     folder = Folder(name='japan', user=godzilla)
     folder.save()
     response = self.client.get(reverse('favorites:folder_delete', args=(folder.pk,)))
     self.assertEquals(response.status_code, 200)
     folder.delete()
     godzilla.delete()
예제 #15
0
파일: tests.py 프로젝트: monusingh/assign
 def test_login_required(self):
     """User should be logged it to delete an object."""
     godzilla = self.user('godzilla')
     folder = Folder(name='japan', user=godzilla)
     folder.save()
     response = self.client.get(
         reverse('favorites:folder_update', args=(folder.pk, )))
     self.assertEquals(response.status_code, 302)
     folder.delete()
     godzilla.delete()
예제 #16
0
파일: folders.py 프로젝트: leifos/dragndrop
def create_folder(user, folder_name):
    """
    Args:
        user: django.contrib.auth.models.User
    returns:
        models.Folder
    """
    f = Folder(name=folder_name, user=user, times_used=0)
    f.save()
    return f
예제 #17
0
파일: tests.py 프로젝트: monusingh/assign
 def test_get(self):
     """User want to update an existing folder."""
     godzilla = self.user('godzilla')
     self.client.login(username='******', password='******')
     folder = Folder(name='japan', user=godzilla)
     folder.save()
     response = self.client.get(
         reverse('favorites:folder_update', args=(folder.pk, )))
     self.assertEquals(response.status_code, 200)
     godzilla.delete()
     folder.delete()
예제 #18
0
파일: tests.py 프로젝트: monusingh/assign
 def test_get(self):
     """Test that the page is reachable with an existing folder."""
     godzilla = self.user('godzilla')
     self.client.login(username='******', password='******')
     folder = Folder(name='japan', user=godzilla)
     folder.save()
     response = self.client.get(
         reverse('favorites:folder_delete', args=(folder.pk, )))
     self.assertEquals(response.status_code, 200)
     folder.delete()
     godzilla.delete()
예제 #19
0
def create_folder(request, internal=False):
    folder_form = FolderForm(request.POST or None)
    if folder_form is not None and folder_form.is_valid():
        title = folder_form.cleaned_data['title']
        owner = Searcher.objects.filter(user_profile=request.user)[0]
        new_folder = Folder(title=title, owner=owner)
        new_folder.save()
    else:
        print "error"
    if internal:
        return new_folder
예제 #20
0
 def test_invalid_permission(self):
     """Try to delete a folder owned by someone else. Returns a 403."""
     godzilla = self.user('godzilla')
     folder = Folder(name='japan', user=godzilla)
     folder.save()
     leviathan = self.user('leviathan')
     self.client.login(username='******', password='******')
     response = self.client.post(reverse('favorites:folder_delete', args=(folder.pk,)), {'object_id': folder.pk})
     self.assertEquals(response.status_code, 403)
     godzilla.delete()
     leviathan.delete()
예제 #21
0
 def test_invalid_permission_on_favorite(self):
     """User should own the folder to delete it. Returns a 403."""
     godzilla = self.user('godzilla')
     leviathan = self.user('leviathan')
     self.client.login(username='******', password='******')
     folder = Folder(name='japan', user=leviathan)
     folder.save()
     response = self.client.get(reverse('favorites:folder_update', args=(folder.pk,)))
     self.assertEquals(response.status_code, 403)
     godzilla.delete()
     leviathan.delete()
     folder.delete()
예제 #22
0
파일: tests.py 프로젝트: monusingh/assign
 def test_post(self):
     """Submit a delete form with good credentials. Returns a redirect."""
     godzilla = self.user('godzilla')
     folder = Folder(name='japan', user=godzilla)
     folder.save()
     self.client.login(username='******', password='******')
     response = self.client.post(
         reverse('favorites:folder_delete', args=(folder.pk, )),
         {'object_id': folder.pk})
     self.assertEquals(response.status_code, 302)
     self.assertEquals(Folder.objects.filter(user=godzilla).count(), 0)
     godzilla.delete()
예제 #23
0
    def test_get(self):
        """User request a valid content type / folder combination. Returns 200."""
        godzilla = self.user('godzilla')
        japan = Folder(name='japan', user=godzilla)
        japan.save()
        china = Folder(name='china', user=godzilla)
        china.save()

        def create_favorites(model, folder):
            m = model()
            m.save()
            favorite = Favorite.objects.create_favorite(m, godzilla, folder)
            return m, favorite

        japan_folder_pks = []
        instances = []
        for _ in range(5):
            instance, favorite = create_favorites(DummyModel, japan)
            japan_folder_pks.append(favorite.pk)
            instances.append((instance, favorite))

        for _ in range(5):
            instance, favorite = create_favorites(DummyModel, china)
            instances.append((instance, favorite))

        for _ in range(5):
            instance, favorite = create_favorites(BarModel, japan)
            instances.append((instance, favorite))

        for _ in range(5):
            instance, favorite = create_favorites(BarModel, china)
            instances.append((instance, favorite))

        self.client.login(username='******', password='******')
        target_url = reverse('favorites:favorite_content_type_and_folder_list',
                             kwargs = {
    'app_label': DummyModel._meta.app_label,
    'object_name': DummyModel._meta.module_name,
    'folder_id': japan.pk
})
        response = self.client.get(target_url)
        self.assertEquals(response.status_code, 200)
        self.assertIsNotNone(response.context['favorites'])
        for instance in response.context['favorites']:
            self.assertIn(instance.pk, japan_folder_pks)

        godzilla.delete()
        for instance in instances:
            instance[0].delete()
            instance[1].delete()
        japan.delete()
        china.delete()
예제 #24
0
파일: tests.py 프로젝트: monusingh/assign
    def test_get(self):
        """User request a valid content type / folder combination. Returns 200."""
        godzilla = self.user('godzilla')
        japan = Folder(name='japan', user=godzilla)
        japan.save()
        china = Folder(name='china', user=godzilla)
        china.save()

        def create_favorites(model, folder):
            m = model()
            m.save()
            favorite = Favorite.objects.create_favorite(m, godzilla, folder)
            return m, favorite

        japan_folder_pks = []
        instances = []
        for _ in range(5):
            instance, favorite = create_favorites(DummyModel, japan)
            japan_folder_pks.append(favorite.pk)
            instances.append((instance, favorite))

        for _ in range(5):
            instance, favorite = create_favorites(DummyModel, china)
            instances.append((instance, favorite))

        for _ in range(5):
            instance, favorite = create_favorites(BarModel, japan)
            instances.append((instance, favorite))

        for _ in range(5):
            instance, favorite = create_favorites(BarModel, china)
            instances.append((instance, favorite))

        self.client.login(username='******', password='******')
        target_url = reverse('favorites:favorite_content_type_and_folder_list',
                             kwargs={
                                 'app_label': DummyModel._meta.app_label,
                                 'object_name': DummyModel._meta.module_name,
                                 'folder_id': japan.pk
                             })
        response = self.client.get(target_url)
        self.assertEquals(response.status_code, 200)
        self.assertIsNotNone(response.context['favorites'])
        for instance in response.context['favorites']:
            self.assertIn(instance.pk, japan_folder_pks)

        godzilla.delete()
        for instance in instances:
            instance[0].delete()
            instance[1].delete()
        japan.delete()
        china.delete()
예제 #25
0
 def test_post(self):
     """User submit a valid POST request, updating the folder. Returns a redirect."""
     godzilla = self.user('godzilla')
     self.client.login(username='******', password='******')
     folder = Folder(name='japan', user=godzilla)
     folder.save()
     response = self.client.post(reverse('favorites:folder_update', args=(folder.pk,)),
                                 {'name': 'Nippon-koku'})
     self.assertEquals(response.status_code, 302)
     folder = Folder.objects.get(pk=folder.pk)
     self.assertEquals(folder.name, 'Nippon-koku')
     godzilla.delete()
     folder.delete()
예제 #26
0
파일: tests.py 프로젝트: monusingh/assign
 def test_invalid_permission_on_favorite(self):
     """User should own the folder to delete it. Returns a 403."""
     godzilla = self.user('godzilla')
     leviathan = self.user('leviathan')
     self.client.login(username='******', password='******')
     folder = Folder(name='japan', user=leviathan)
     folder.save()
     response = self.client.get(
         reverse('favorites:folder_update', args=(folder.pk, )))
     self.assertEquals(response.status_code, 403)
     godzilla.delete()
     leviathan.delete()
     folder.delete()
예제 #27
0
파일: tests.py 프로젝트: monusingh/assign
 def test_invalid_permission(self):
     """Try to delete a folder owned by someone else. Returns a 403."""
     godzilla = self.user('godzilla')
     folder = Folder(name='japan', user=godzilla)
     folder.save()
     leviathan = self.user('leviathan')
     self.client.login(username='******', password='******')
     response = self.client.post(
         reverse('favorites:folder_delete', args=(folder.pk, )),
         {'object_id': folder.pk})
     self.assertEquals(response.status_code, 403)
     godzilla.delete()
     leviathan.delete()
예제 #28
0
    def RPC__Folder__create(self, name, uuid=None):
        """Create a new folder and add it to a parent with the given ``uuid``. """
        try:
            if uuid is not None:
                parent = Folder.objects.get(user=self.user, uuid=uuid)
            else:
                parent = None
        except Folder.DoesNotExist:
            self.return_api_error('does-not-exist')
        else:
            folder = Folder(user=self.user, parent=parent, name=name)
            folder.save()

            self.return_api_result({'uuid': folder.uuid})
예제 #29
0
파일: tests.py 프로젝트: monusingh/assign
 def test_post(self):
     """User submit a valid POST request, updating the folder. Returns a redirect."""
     godzilla = self.user('godzilla')
     self.client.login(username='******', password='******')
     folder = Folder(name='japan', user=godzilla)
     folder.save()
     response = self.client.post(
         reverse('favorites:folder_update', args=(folder.pk, )),
         {'name': 'Nippon-koku'})
     self.assertEquals(response.status_code, 302)
     folder = Folder.objects.get(pk=folder.pk)
     self.assertEquals(folder.name, 'Nippon-koku')
     godzilla.delete()
     folder.delete()
예제 #30
0
파일: tests.py 프로젝트: monusingh/assign
    def test_get_owned_favorites_only(self):
        """User should only see her/his favorites."""
        # setup
        godzilla = self.user('godzilla')
        leviathan = self.user('leviathan')
        self.client.login(username='******', password='******')

        def create_object_n_favorite(user, folder=None):
            dummy = DummyModel()
            dummy.save()
            favorite = Favorite.objects.create_favorite(dummy, user, folder)
            return dummy, favorite

        godzilla_instances = []
        godzilla_favorite_pks = []
        for i in range(5):
            instance, favorite = create_object_n_favorite(godzilla)
            godzilla_instances.append((instance, favorite))
            godzilla_favorite_pks.append(favorite.pk)
        japan = Folder(name='japan', user=godzilla)
        japan.save()
        for i in range(5):
            instance, favorite = create_object_n_favorite(godzilla, japan)
            godzilla_instances.append((instance, favorite))
            godzilla_favorite_pks.append(favorite.pk)
        leviathan_instances = []
        for i in range(5):
            leviathan_instances.append(create_object_n_favorite(leviathan))

        # tests
        target_url = reverse('favorites:favorite_content_type_list',
                             kwargs={
                                 'app_label': DummyModel._meta.app_label,
                                 'object_name': DummyModel._meta.module_name
                             })
        response = self.client.get(target_url)
        self.assertEquals(response.status_code, 200)
        self.assertIsNotNone(response.context['favorites'])
        for instance in response.context['favorites']:
            self.assertIn(instance.pk, godzilla_favorite_pks)

        # teardown
        for instances in (leviathan_instances, godzilla_instances):
            for instance, favorite in instances:
                instance.delete()
                favorite.delete()
        godzilla.delete()
        leviathan.delete()
예제 #31
0
    def test_get_owned_favorites_only(self):
        """User should only see her/his favorites."""
        # setup
        godzilla = self.user('godzilla')
        leviathan = self.user('leviathan')
        self.client.login(username='******', password='******')
        def create_object_n_favorite(user, folder=None):
            dummy = DummyModel()
            dummy.save()
            favorite = Favorite.objects.create_favorite(dummy, user, folder)
            return dummy, favorite
        godzilla_instances =  []
        godzilla_favorite_pks = []
        for i in range(5):
            instance, favorite = create_object_n_favorite(godzilla)
            godzilla_instances.append((instance, favorite))
            godzilla_favorite_pks.append(favorite.pk)
        japan = Folder(name='japan', user=godzilla)
        japan.save()
        for i in range(5):
            instance, favorite = create_object_n_favorite(godzilla, japan)
            godzilla_instances.append((instance, favorite))
            godzilla_favorite_pks.append(favorite.pk)
        leviathan_instances = []
        for i in range(5):
            leviathan_instances.append(create_object_n_favorite(leviathan))

        # tests
        target_url = reverse('favorites:favorite_content_type_list',
                             kwargs = {
    'app_label': DummyModel._meta.app_label,
    'object_name': DummyModel._meta.module_name
})
        response = self.client.get(target_url)
        self.assertEquals(response.status_code, 200)
        self.assertIsNotNone(response.context['favorites'])
        for instance in response.context['favorites']:
            self.assertIn(instance.pk, godzilla_favorite_pks)

        # teardown
        for instances in (leviathan_instances, godzilla_instances):
            for instance, favorite in instances:
                instance.delete()
                favorite.delete()
        godzilla.delete()
        leviathan.delete()
def create_root_folder(user_id):
	root = MEDIA_ROOT
	user = User.objects.get(id=user_id)
	directory = root +"/"+ user.username
	print directory
	if not os.path.exists(directory):
		try:
			folder = Folder()
			folder.name = user.username
			folder.path = directory
			folder.user = user
			folder.save()
			os.makedirs(directory)
		except Exception, e:
			return False
		else:
			return True
예제 #33
0
def create_subfolder(request, parent_id):
    parent = Folder.objects.get(pk=parent_id)
    name = request.POST['name']

    logger.info("Creating subfolder {} of {}".format(name, parent.name))

    collection, collection_is_new = Collection.objects.get_or_create(
        name="Dummy collection", disk_path="")

    new_folder = Folder(name=name,
                        collection=collection,
                        disk_path="",
                        parent=parent)
    new_folder.save()

    response = {'id': new_folder.id}
    return JsonResponse(response)
def compile_java(file_id):
    #first traslate
    traslate_java(file_id)

    file = File.objects.get(id=file_id)
    folder = file.folder
    user = folder.user
    galatea_code = GALATEA + "galatea.jar "
    code = "javac -cp "+ galatea_code + folder.path + "/*.java"
    #print code
    value = subprocess.check_output([code], shell=True)
    #print value

    #get all the file in this folder
    for root, dirs, files in os.walk(folder.path):
        root_folder = Folder.objects.get(path=root, name = os.path.basename(root))
        for dir in dirs:
            folders = Folder.objects.filter(father=root_folder.id)
            esta = False
            for folder in folders:
                if folder.name == dir:
                    esta = True
            if not esta:
                folder = Folder()
                folder.name = dir
                folder.path = root_folder.path + "/" + dir
                folder.user = user
                folder.father = root_folder.id
                folder.active = True
                folder.save()
        #print dirs
        for file in files:
            files_folder = File.objects.filter(folder = root_folder.id)
            esta = False
            for f in files_folder:
                if f.name == file:
                    esta = True
            if not esta:
                if (os.path.splitext(file)[1] != ".class"):
                    f = File()
                    f.name = file
                    f.folder = root_folder
                    f.active = True
                    f.save()

    return value
예제 #35
0
파일: tests.py 프로젝트: monusingh/assign
 def test_get(self):
     """User make a valid request, returns a 200"""
     user = User.objects.create(username='******')
     user.set_password('user')
     user.save()
     folder = Folder(user=user, name='name')
     folder.save()
     dummy = DummyModel()
     dummy.save()
     favorite = Favorite.objects.create_favorite(user=user,
                                                 content_object=dummy)
     target_url = reverse('favorites:favorite_move_to_folder',
                          args=(favorite.pk, folder.pk))
     client = Client()
     self.assertTrue(client.login(username='******', password='******'))
     response = client.get(target_url)
     self.assertEqual(response.status_code, 200)
예제 #36
0
    def test_invalid_permission_on_folder(self):
        """User try to list favorites for a folder he or she doesn't own. Returns a 403."""
        godzilla = self.user('godzilla')
        leviathan = self.user('leviathan')
        folder = Folder(name='china', user=leviathan)
        folder.save()
        self.client.login(username='******', password='******')
        target_url = reverse('favorites:favorite_content_type_and_folder_list',
                             kwargs = {
    'app_label': DummyModel._meta.app_label,
    'object_name': DummyModel._meta.module_name,
    'folder_id': folder.pk
})
        response = self.client.get(target_url)
        self.assertEquals(response.status_code, 403)
        godzilla.delete()
        leviathan.delete()
        folder.delete()
예제 #37
0
파일: tests.py 프로젝트: monusingh/assign
 def test_invalid_permission_on_folder(self):
     """User try to list favorites for a folder he or she doesn't own. Returns a 403."""
     godzilla = self.user('godzilla')
     leviathan = self.user('leviathan')
     folder = Folder(name='china', user=leviathan)
     folder.save()
     self.client.login(username='******', password='******')
     target_url = reverse('favorites:favorite_content_type_and_folder_list',
                          kwargs={
                              'app_label': DummyModel._meta.app_label,
                              'object_name': DummyModel._meta.module_name,
                              'folder_id': folder.pk
                          })
     response = self.client.get(target_url)
     self.assertEquals(response.status_code, 403)
     godzilla.delete()
     leviathan.delete()
     folder.delete()
예제 #38
0
 def test_get(self):
     """User make a valid request, returns a 200"""
     user = User.objects.create(username='******')
     user.set_password('user')
     user.save()
     folder = Folder(user=user, name='name')
     folder.save()
     dummy = DummyModel()
     dummy.save()
     favorite = Favorite.objects.create_favorite(user=user,
                                                 content_object=dummy)
     target_url = reverse('favorites:favorite_move_to_folder',
                          args=(favorite.pk,
                                folder.pk))
     client = Client()
     self.assertTrue(client.login(username='******', password='******'))
     response = client.get(target_url)
     self.assertEqual(response.status_code, 200)
예제 #39
0
def create_searcher(request):
    searcher_form = SearcherForm(request.POST or None)
    if searcher_form is not None and searcher_form.is_valid():
        name = searcher_form.cleaned_data['name']
        user = User.custom_objects.get_or_none(username=name)
        if not user:
            user = User(username=name)
            user.save()
            searcher = Searcher(user_profile=user)
            root_folder = Folder(title="Bookmarks", owner=searcher)
            root_folder.save()
            complexity_score = BoozeComplexityScore.objects.create(level=random.randint(0, 4))
            searcher.complexity_score = complexity_score
            print searcher
            searcher.save()
        else:
            return create_account(request)
    return redirect(index)
예제 #40
0
    def test_post(self):
        """User submit a valid form, the favorite is added to his or her favorites."""
        godzilla = self.user('godzilla')
        self.client.login(username='******', password='******')
        folder = Folder(name='japan', user=godzilla)
        folder.save()
        dummy = DummyModel()
        dummy.save()
        target_url = reverse('favorites:favorite_add', kwargs={  # The target model
    'app_label': DummyModel._meta.app_label,            # doesn't have to be valid
    'object_name': DummyModel._meta.module_name,
    'object_id': dummy.pk
})
        response = self.client.post(target_url,
                                    {'folder_id': folder.pk})
        self.assertEquals(response.status_code, 302)
        godzilla.delete()
        folder.delete()
        dummy.delete()
예제 #41
0
 def test_invalid_permission_on_folder(self):
     """User try to move a favorite to a folder he doesn't own. Returns a 403."""
     user = User.objects.create(username='******')
     user.set_password('user')
     user.save()
     user2 = User.objects.create(username='******')
     user2.set_password('user2')
     user2.save()
     folder = Folder(user=user2, name='name')
     folder.save()
     dummy = DummyModel()
     dummy.save()
     favorite = Favorite.objects.create_favorite(user=user,
                                                 content_object=dummy)
     target_url = reverse('favorites:favorite_move_to_folder',
                          kwargs={'favorite_id': favorite.pk, 'folder_id': folder.pk})
     client = Client()
     self.assertTrue(client.login(username='******', password='******'))
     response = client.get(target_url)
     self.assertEqual(response.status_code, 403)
예제 #42
0
파일: tests.py 프로젝트: monusingh/assign
 def test_invalid_permission_on_favorite(self):
     """User try to move a favorite he or she doesn't own. Returns a 403."""
     user = User.objects.create(username='******')
     user.set_password('user')
     user.save()
     user2 = User.objects.create(username='******')
     user2.set_password('user2')
     user2.save()
     folder = Folder(user=user, name='name')
     folder.save()
     dummy = DummyModel()
     dummy.save()
     favorite = Favorite.objects.create_favorite(user=user2,
                                                 content_object=dummy)
     target_url = reverse('favorites:favorite_move_to_folder',
                          args=(favorite.pk, folder.pk))
     client = Client()
     self.assertTrue(client.login(username='******', password='******'))
     response = client.get(target_url)
     self.assertEqual(response.status_code, 403)
예제 #43
0
파일: tests.py 프로젝트: monusingh/assign
 def test_post(self):
     """User submit a valid form, the favorite is added to his or her favorites."""
     godzilla = self.user('godzilla')
     self.client.login(username='******', password='******')
     folder = Folder(name='japan', user=godzilla)
     folder.save()
     dummy = DummyModel()
     dummy.save()
     target_url = reverse(
         'favorites:favorite_add',
         kwargs={  # The target model
             'app_label':
             DummyModel._meta.app_label,  # doesn't have to be valid
             'object_name': DummyModel._meta.module_name,
             'object_id': dummy.pk
         })
     response = self.client.post(target_url, {'folder_id': folder.pk})
     self.assertEquals(response.status_code, 302)
     godzilla.delete()
     folder.delete()
     dummy.delete()
예제 #44
0
    def test_post_invalid_permission_on_folder(self):
        """User try to move a favorite to of folder he or she doesn't own. Returns the form."""
        godzilla = self.user('godzilla')
        leviathan = self.user('leviathan')
        self.client.login(username='******', password='******')
        dummy = DummyModel()
        dummy.save()
        favorite = Favorite.objects.create_favorite(dummy, godzilla)
        folder = Folder(name="china", user=leviathan)
        folder.save()
        target_url = reverse('favorites:favorite_move',
                             kwargs = {
    'object_id': favorite.pk,
})
        post_values = {'object_id': favorite.pk, 'folder_id': folder.pk}
        response = self.client.post(target_url, post_values)
        self.assertEquals(response.status_code, 200)
        folder.delete()
        favorite.delete()
        godzilla.delete()
        leviathan.delete()
        dummy.delete()
예제 #45
0
파일: tests.py 프로젝트: monusingh/assign
 def test_post(self):
     """User submits a valid form, favorites moved, and user redirected."""
     godzilla = self.user('godzilla')
     self.client.login(username='******', password='******')
     dummy = DummyModel()
     dummy.save()
     favorite = Favorite.objects.create_favorite(dummy, godzilla)
     folder = Folder(name="japan", user=godzilla)
     folder.save()
     target_url = reverse('favorites:favorite_move',
                          kwargs={
                              'object_id': favorite.pk,
                          })
     post_values = {'object_id': favorite.pk, 'folder_id': folder.pk}
     response = self.client.post(target_url, post_values)
     self.assertEquals(response.status_code, 302)
     instance = Favorite.objects.get(pk=favorite.pk)
     self.assertEqual(folder.pk, instance.folder.pk)
     folder.delete()
     favorite.delete()
     godzilla.delete()
     dummy.delete()
예제 #46
0
파일: tests.py 프로젝트: monusingh/assign
 def test_post_invalid_permission_on_folder(self):
     """User try to move a favorite to of folder he or she doesn't own. Returns the form."""
     godzilla = self.user('godzilla')
     leviathan = self.user('leviathan')
     self.client.login(username='******', password='******')
     dummy = DummyModel()
     dummy.save()
     favorite = Favorite.objects.create_favorite(dummy, godzilla)
     folder = Folder(name="china", user=leviathan)
     folder.save()
     target_url = reverse('favorites:favorite_move',
                          kwargs={
                              'object_id': favorite.pk,
                          })
     post_values = {'object_id': favorite.pk, 'folder_id': folder.pk}
     response = self.client.post(target_url, post_values)
     self.assertEquals(response.status_code, 200)
     folder.delete()
     favorite.delete()
     godzilla.delete()
     leviathan.delete()
     dummy.delete()
def create_new_folder(user_id,father_id,name):
	root = MEDIA_ROOT
	user = User.objects.get(id=user_id)
	father = Folder.objects.get(id=father_id)
	directory = father.path +"/"+ name
	id_folder = 0
	print directory
	if not os.path.exists(directory):
		try:
			folder = Folder()
			folder.name = name
			folder.path = directory
			folder.user = user
			folder.father = father.id
			folder.active = True
			folder.save()
			id_folder = folder.id
			os.makedirs(directory)
		except Exception, e:
			return id_folder
		else:
			return id_folder
예제 #48
0
파일: tests.py 프로젝트: monusingh/assign
 def test_invalid_permission_on_folder(self):
     """User submits a form with a folder that is not his or her, renders the form."""
     godzilla = self.user('godzilla')
     leviathan = self.user('leviathan')
     self.client.login(username='******', password='******')
     folder = Folder(name='japan', user=leviathan)
     folder.save()
     dummy = DummyModel()
     dummy.save()
     target_url = reverse('favorites:favorite_add',
                          kwargs={
                              'app_label': DummyModel._meta.app_label,
                              'object_name': DummyModel._meta.module_name,
                              'object_id': dummy.pk
                          })
     response = self.client.post(target_url, {'folder_id': folder.pk})
     # form validation makes it impossible for a rogue user
     # to a favorite that i do not own
     self.assertEqual(response.status_code, 200)
     godzilla.delete()
     folder.delete()
     dummy.delete()
     leviathan.delete()
예제 #49
0
def new_folder(request):
    if not request.user.is_authenticated():
        return HttpResponseRedirect(reverse('existing_user'), {
                'logged_in': False,
                'form': forms.LoginForm(),
                })

    if request.method == 'POST':
        form = forms.FolderForm(request.POST)
        filterargs = {'author': request.user, 'name': request.POST['name']}
        if Folder.objects.filter(**filterargs):
            return render(request, 'secure_witness/new_folder.html', {
                'folder_taken': True,
                'user': request.user,
                'form': form,
                'logged_in': request.user.is_authenticated(),
            })
        if form.is_valid():
            folder = Folder(
                author = request.user,
                name = request.POST['name'],
                date_created = datetime.now(),
                date_modified = datetime.now(),
                location = request.POST['location'],
                description = request.POST['description']
                )
            folder.save()
            return HttpResponseRedirect(reverse('home'), {
                    'logged_in': request.user.is_authenticated(),
                    'form': forms.LoginForm(),
                    })
    else:
        form = forms.FolderForm()
    return render(request, 'secure_witness/new_folder.html', {
            'form': form,
            'logged_in': request.user.is_authenticated(),
    })
예제 #50
0
def jsonFolderCrud(request):

    dictData = []
    # GET * SELECT
    if request.is_ajax() and request.method == 'GET':
        action = request.GET.get('action', None)

        if (action == "filter"):
            LessonID = request.GET.get('LessonID', None)
            #dictData = Folder.objects.get(LessonID=LessonID).graders.all().values()   #OK
            dictData = Folder.objects.filter(LessonID=LessonID).values()
            jsonData = json.dumps(list(dictData))
            #print jsonData
            return HttpResponse(jsonData, content_type='application/json')

    # POST INS.UPD.DEL
    if request.is_ajax() and request.method == 'POST':
        action = request.POST.get('action', None)

        #INSERT COMMAND (need related LessonID ) | only add C type folders
        if (action == "add"):  # on LessonID
            LessonID = request.POST.get('LessonID', None)
            no = request.POST.get('no', None)
            books = request.POST.get('books', None)  #.title()
            codeType = request.POST.get('codeType', None)
            #status = request.POST.get('status', None)
            print 'Data:', no, books, codeType
            # Apaitoume oi fakeloi na exoun synexomeh arithmisi
            # akoma kai gia diafortikous typous
            # px fA/fANA. Ayto to allazoume efkola an theloume
            # TO kanoume giati volevei sta reports
            # alliws tha kanoume aali coding ...
            #no = Lesson.objects.get(id=LessonID).getNextFolderNo(codeType)

            try:  #with transaction.atomic():
                lesson = Lesson.objects.get(id=LessonID)
                no = lesson.getNextFolderNo(
                    -1)  # count F(AB) / even for F(ANA)
                print 'Data(new):', no, books, codeType
                record = Folder(LessonID_id=LessonID,
                                no=no,
                                books=books,
                                codeType=codeType)
                record.save()
                record.codeBarcode = '%04d-%010d' % (int(LessonID),
                                                     int(record.id))
                record.save()
                # Need to Update Lesson Data HERE aka mum Books, Folders etc.
                if codeType == '0':  # F(A)
                    print "F(A)"
                    #lesson.update(booksAB=booksAB+books,  booksABFolders=booksABFolders+1)
                    lesson.booksAB = lesson.booksAB + int(books)
                    lesson.booksABFolders = lesson.booksABFolders + 1
                    lesson.save()
                elif codeType == '1':  # F(B)
                    #lesson.booksAB += books
                    #lesson.booksABFolders += 1
                    pass
                elif codeType == '2':  # F(ANA)
                    lesson.booksC = lesson.booksC + int(books)
                    lesson.booksCFolders = lesson.booksCFolders + 1
                    lesson.save()

                msg = "Επιτυχής εισαγωγή εγγραφής!"
                helperMessageLog(request, msg, tag='info')
                #messages.info(request, msg, fail_silently=True)
            except DatabaseError:
                transaction.rollback()
                msg = "Αδυναμία εισαγωγής εγγραφής!"
                helperMessageLog(request, msg, tag='error')
                #messages.error(request, msg, fail_silently=True)

            #dictData = Lesson.objects.filter(id=record.id).values()
            #print dictData
            #jsonData = json.dumps(list(dictData))
            jsonData = json.dumps({'msg': msg})
            return HttpResponse(jsonData, content_type='application/json')

        # UPDATE
        if (action == "update"):
            id = request.POST.get('id', None)
            no = request.POST.get('no', None)
            books = request.POST.get('books', None)
            codeType = request.POST.get('codeType', None)
            #lexType = request.POST.get('lexType', None)
            #CodeStatus = request.POST.get('CodeStatus ', None)
            #CodeLocation = request.POST.get('CodeLocation', None)
            #print "FOLDER-UPDATE %s - %s - codeType:%s lexType:%s" %(no, books, codeType, lexType)

            try:  #with transaction.atomic():
                record = Folder.objects.filter(id=id)
                record.update(
                    no=no,
                    books=books,
                    codeType=codeType,
                )
                msg = "Επιτυχής τροποποίηση εγγραφής!"
                helperMessageLog(request, msg, tag='info')
                #messages.info(request, msg, fail_silently=True)
            except DatabaseError:
                transaction.rollback()
                msg = "Αδυναμία τροποποίησης εγγραφής!"
                helperMessageLog(request, msg, tag='error')
                #messages.error(request, msg, fail_silently=True)

            #Folder.objects.filter(id=id).update(isCoordinator = helperStr2Bool(isCoordinator), isgraderC = helperStr2Bool(isgraderC), status = status, )
            # return Lesson record
            #dictData = record.values()
            #jsonData = json.dumps(list(dictData))
            jsonData = json.dumps({'msg': msg})
            #print jsonData
            return HttpResponse(jsonData, content_type='application/json')

        #DELETE COMMAND
        if (action == "delete"):
            id = request.POST.get('id', None)
            try:
                record = Folder.objects.get(id=id)
                # update related lesson
                lesson = Lesson.objects.get(id=record.LessonID.id)
                print "codeType:%s" % (record.codeType)
                print "lesson:%d" % (lesson.id)
                if record.codeType == 0:  # F(A)
                    print "delete codeType:%s" % (record.codeType)
                    #lesson.update(booksAB=booksAB+books,  booksABFolders=booksABFolders+1)
                    lesson.booksAB = lesson.booksAB - int(record.books)
                    lesson.booksABFolders = lesson.booksABFolders - 1
                    lesson.save()
                elif record.codeType == 1:  # F(B)
                    pass
                elif record.codeType == 2:  # F(ANA)
                    print "delete codeType:%s" % (record.codeType)
                    lesson.booksC = lesson.booksC - int(record.books)
                    lesson.booksCFolders = lesson.booksCFolders - 1
                    lesson.save()

                record.delete()
                msg = "Επιτυχής διαγραφής Φακέλου (%s) !" % (record)
                helperMessageLog(request, msg, tag='info')

                #messages.info(request, msg, fail_silently=True)
            except IntegrityError:
                transaction.rollback()
                msg = "Αδυναμία διαγραφής Φακέλου (%s) !" % (record)
                helperMessageLog(request, msg, tag='error')
                #messages.error(request, msg, fail_silently=True)
            jsonData = json.dumps({'msg': msg})
            return HttpResponse(jsonData, content_type='application/json')

    #"Default SELECT(*) "
    dictData = Folder.objects.all().values()
    #print dictData
    jsonData = json.dumps(list(dictData))
    return HttpResponse(jsonData, content_type='application/json')
예제 #51
0
def jsonLessonCrud(request):

    #Handle Mesages
    #messages.success(request, 'All items on this page have free shipping.',fail_silently=False)
    #messages.warning(request, 'All items on this page have free shipping.',fail_silently=True) #OK

    # Display on GET
    if request.is_ajax() and request.method == 'GET':
        id = request.GET.get('id', None)
        action = request.GET.get('action', None)

        if (action == "filter"):
            dictData = Lesson.objects.filter(id=id).values()
        else:
            dictData = Lesson.objects.all().values()
        #print dictData
        jsonData = json.dumps(list(dictData))
        return HttpResponse(jsonData, content_type='application/json')

    # CRUD on POST
    if request.is_ajax() and request.method == 'POST':
        action = request.POST.get('action', None)
        #dictData = Lesson.objects.all().values()

        #ADD
        if (action == "add"):
            #Fakeloi 1o 2o xeri (AB)
            #booksAB = models.IntegerField(default=0, blank=False)
            #booksABFolders = models.IntegerField(default=0, blank=False)
            #booksC = request.POST.get('booksC', None)
            #booksCFolders = request.POST.get('booksCFolders', None)
            category = request.POST.get('category', None)
            name = request.POST.get('name', None)
            type = request.POST.get('type', None)

            try:
                record = Folder(category=category, name=name, type=type)
                record.save()
                msg = "Επιτυχής εισαγωγή Φακέλου (%s) !" % (record)
                helperMessageLog(request, msg, tag='info')
            except IntegrityError:
                transaction.rollback()
                msg = "Αδυναμία εισαγωγής Φακέλου (%s) !" % (record)
                helperMessageLog(request, msg, tag='error')
            #jsonData = json.dumps({'msg': msg})
            # return record
            dictData = Lesson.objects.filter(id=record.id).values()
            jsonData = json.dumps(dictData)
            return HttpResponse(jsonData, content_type='application/json')

        # UPDATE
        elif (action == "update"):
            id = request.POST.get('id', None)
            #Fakeloi 1o 2o xeri (AB)
            #booksAB booksABFolders
            booksC = request.POST.get('booksC', None)
            booksCFolders = request.POST.get('booksCFolders', None)
            category = request.POST.get('category', None)
            name = request.POST.get('name', None)
            type = request.POST.get('type', None)

            try:
                #'Αδυναμία εισαγωγής | τροποποίησης | διαγραφής | εγγραφής.'
                record = Lesson.objects.filter(id=id)
                record.update(
                    booksC=booksC,
                    booksCFolders=booksCFolders,
                    category=category,
                    name=name,
                    type=type,
                )
                msg = "Επιτυχής τροποποίηση Φακέλου (%s) !" % (record)
                helperMessageLog(request, msg, tag='info')
            except IntegrityError:
                transaction.rollback()
                msg = "Αδυναμία τροποποίησης Φακέλου (%s) !" % (record)
                helperMessageLog(request, msg, tag='error')

            # return Lesson record
            dictData = record.values()
            jsonData = json.dumps(list(dictData))
            #print jsonData
            return HttpResponse(jsonData, content_type='application/json')

        #DELETE
        if (action == "delete"):
            id = request.POST.get('id', None)
            record = Lesson.objects.filter(id=id)
            try:
                #'Αδυναμία εισαγωγής | τροποποίησης | διαγραφής | εγγραφής.'
                record.delete()
                msg = "Επιτυχής διαγραφή Φακέλου (%s) !" % (record)
                helperMessageLog(request, msg, tag='info')
            except IntegrityError:
                transaction.rollback()
                msg = "Αδυναμία διαγραφής Φακέλου (%s) !" % (record)
                helperMessageLog(request, msg, tag='error')
            return HttpResponse(result, content_type='application/json')
        # else: No POST Default

    # DEFAULT
    else:
        dictData = Lesson.objects.all().values()
        jsonData = json.dumps(list(dictData))
        #print jsonData
        return HttpResponse(jsonData, content_type='application/json')
예제 #52
0
def copy_folder(request, folder_id):
    if not request.user.is_authenticated():
        return HttpResponseRedirect(reverse('existing_user'), {
                'logged_in': False,
                'form': forms.LoginForm(),
                })

    if request.method == 'POST':
        form = forms.FolderForm(request.POST)
        filterargs = {'author': request.user, 'name': request.POST['name']}
        if Folder.objects.filter(**filterargs):
            return render(request, 'secure_witness/copy_folder.html', {
                'folder_taken': True,
                'folder': Folder.objects.get(pk = folder_id),
                'folder_id': folder_id,
                'user': request.user,
                'form': form,
                'logged_in': request.user.is_authenticated(),
            })
        if form.is_valid():
            original_folder = Folder.objects.get(pk = folder_id)
            folder = Folder(
                author = original_folder.author,
                name = request.POST['name'],
                date_created = original_folder.date_created,
                date_modified = original_folder.date_modified,
                location = request.POST['location'],
                description = request.POST['description']
                )
            folder.save()
            for original_bulletin in Bulletin.objects.filter(folder = original_folder):
                bulletin = Bulletin(
                    author = original_bulletin.author,
                    name = original_bulletin.name,
                    folder = folder,
                    date_created = original_bulletin.date_created,
                    date_modified = original_bulletin.date_modified,
                    location = original_bulletin.location,
                    description = original_bulletin.description
                    )
                bulletin.save()
                for original_file in File.objects.filter(bulletin = original_bulletin):
                    newFile = File(
                        author = original_file.author,
                        bulletin = bulletin,
                        content = original_file.content,
                        name = original_file.name,
                        rand = original_file.rand,
                        check = original_file.check,
                        encryption_params = original_file.encryption_params,
                        date_created = original_file.date_created,
                        date_modified = original_file.date_modified
                        )
                    newFile.save()
            return HttpResponseRedirect(reverse('home'), {
                    'logged_in': request.user.is_authenticated(),
                    'form': forms.LoginForm(),
                    })
    else:
        f = get_object_or_404(Folder, pk = folder_id)
        form = forms.FolderForm(instance = f)
    return render(request, 'secure_witness/copy_folder.html', {
            'folder_id': folder_id,
            'form': form,
            'folder': Folder.objects.get(pk = folder_id),
            'logged_in': request.user.is_authenticated(),
    })
예제 #53
0
class DocumentsViewsTest(TestCase):
    username = "******"
    password = "******"

    def setUp(self):
        self.group, created = Group.objects.get_or_create(name='test')
        self.user, created = DjangoUser.objects.get_or_create(username=self.username)
        self.user.set_password(self.password)
        self.user.save()
        perspective, created = Perspective.objects.get_or_create(
            name='default')
        perspective.set_default_user()
        perspective.save()

        ModuleSetting.set('default_perspective', perspective.id)

        self.folder = Folder(name='test')
        self.folder.set_default_user()
        self.folder.save()

        self.document = Document(title='test_document', folder=self.folder)
        self.document.set_default_user()
        self.document.save()

        self.file = File(name='test_file', folder=self.folder)
        self.file.set_default_user()
        self.file.save()

        self.link = WebLink(title='test', folder=self.folder, url='test')
        self.link.set_default_user()
        self.link.save()

    ######################################
    # Testing views when user is logged in
    ######################################
    def test_index_login(self):
        "Test index page with login at /documents/"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(reverse('document_index'))
        self.assertEquals(response.status_code, 200)

    def test_index_documents_login(self):
        "Test index page with login at /documents/documents/"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(reverse('index_documents'))
        self.assertEquals(response.status_code, 200)

    def test_index_files_login(self):
        "Test index page with login at /documents/files/"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(reverse('index_files'))
        self.assertEquals(response.status_code, 200)

    def test_index_weblinks_login(self):
        "Test index page with login at /documents/weblinks/"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(reverse('index_weblinks'))
        self.assertEquals(response.status_code, 200)

    # Folders

    def test_folder_add(self):
        "Test index page with login at /documents/folder/add/"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(reverse('documents_folder_add'))
        self.assertEquals(response.status_code, 200)
        # form
        self.assertEqual(Folder.objects.count(), 1)
        post_data = {'name': 'test'}
        response = self.client.post(reverse('documents_folder_add'), post_data)
        self.assertEquals(response.status_code, 302)  # redirect somewhere
        self.assertEquals(Folder.objects.count(), 2)

    def test_folder_view_login(self):
        "Test index page with login at /documents/folder/view/<folder_id>"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('documents_folder_view', args=[self.folder.id]))
        self.assertEquals(response.status_code, 200)

    def test_folder_edit_login(self):
        "Test index page with login at /documents/folder/edit/<folder_id>"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('documents_folder_edit', args=[self.folder.id]))
        self.assertEquals(response.status_code, 200)

    def test_folder_delete_login(self):
        "Test index page with login at /documents/folder/delete/<folder_id>"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('documents_folder_delete', args=[self.folder.id]))
        self.assertEquals(response.status_code, 200)

    # Documents

    def test_document_add(self):
        "Test index page with login at /documents/add"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(reverse('documents_document_add'))
        self.assertEquals(response.status_code, 200)
        # form
        self.assertEqual(Document.objects.count(), 1)
        response = self.client.get(reverse('documents_document_add'))
        post_data = {'title': 'test',
                     'folder': self.folder,
                     }
        response = self.client.post(
            reverse('documents_document_add'), post_data)
        #self.assertEqual(Document.objects.count(), 2)

    def test_document_add_typed(self):
        "Test index page with login at /documents/add/folder/<folder_id>"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('documents_document_add_typed', args=[self.folder.id]))
        self.assertEquals(response.status_code, 200)

    def test_document_view_login(self):
        "Test index page with login at /documents/view/<document_id>"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('documents_document_view', args=[self.document.id]))
        self.assertEquals(response.status_code, 200)

    def test_document_edit_login(self):
        "Test index page with login at /documents/edit/<document_id>"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('documents_document_edit', args=[self.document.id]))
        self.assertEquals(response.status_code, 200)

    def test_document_delete_login(self):
        "Test index page with login at /documents/delete/<document_id>"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('documents_document_delete', args=[self.document.id]))
        self.assertEquals(response.status_code, 200)

    # Files

    def test_file_view_login(self):
        "Test index page with login at /file/view/<file_id>"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('documents_file_view', args=[self.file.id]))
        self.assertEquals(response.status_code, 200)

    def test_file_edit_login(self):
        "Test index page with login at /file/edit/<file_id>"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('documents_file_edit', args=[self.file.id]))
        self.assertEquals(response.status_code, 200)

    def test_file_delete_login(self):
        "Test index page with login at /file/view/<file_id>"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('documents_file_delete', args=[self.file.id]))
        self.assertEquals(response.status_code, 200)

    # Web Links
    def test_weblink_add_typed(self):
        "Test index page with login at /documents/weblink/add/<folder_id>"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('documents_weblink_add_typed', args=[self.folder.id]))
        self.assertEquals(response.status_code, 200)

    def test_weblink_add(self):
        "Test index page with login at /documents/weblink/add/"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(reverse('documents_weblink_add'))
        self.assertEquals(response.status_code, 200)
        # form
        self.assertEqual(WebLink.objects.count(), 1)
        response = self.client.get(reverse('documents_weblink_add'))
        post_data = {'title': 'test',
                     'folder': self.folder,
                     'url': 'test',
                     }
        response = self.client.post(
            reverse('documents_weblink_add'), post_data)
        # self.assertEqual(WebLink.objects.count(), 2)

    def test_weblink_view_login(self):
        "Test index page with login at /documents/view/<weblink_id>"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('documents_weblink_view', args=[self.link.id]))
        self.assertEquals(response.status_code, 200)

    def test_weblink_edit_login(self):
        "Test index page with login at /documents/edit/<weblink_id>"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('documents_weblink_edit', args=[self.link.id]))
        self.assertEquals(response.status_code, 200)

    def test_weblink_delete_login(self):
        "Test index page with login at /documents/delete/<weblink_id>"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('documents_weblink_delete', args=[self.link.id]))
        self.assertEquals(response.status_code, 200)

    ######################################
    # Testing views when user is not logged in
    ######################################
    def test_index(self):
        "Test index page at /documents/"
        response = self.client.get('/documents/')
        # Redirects as unauthenticated
        self.assertRedirects(response, reverse('user_login'))

    def test_index_documents_out(self):
        "Testing /documents/documents/"
        response = self.client.get(reverse('index_documents'))
        self.assertRedirects(response, reverse('user_login'))

    def test_index_files_out(self):
        "Testing /documents/files/"
        response = self.client.get(reverse('index_files'))
        self.assertRedirects(response, reverse('user_login'))

    def test_index_weblinks_out(self):
        "Testing /documents/weblinks/"
        response = self.client.get(reverse('index_weblinks'))
        self.assertRedirects(response, reverse('user_login'))

    # Folders

    def test_folder_add_out(self):
        "Testing /documents/folder/add/"
        response = self.client.get(reverse('documents_folder_add'))
        self.assertRedirects(response, reverse('user_login'))

    def test_folder_view_out(self):
        "Testing /documents/folder/view/<folder_id>"
        response = self.client.get(
            reverse('documents_folder_view', args=[self.folder.id]))
        self.assertRedirects(response, reverse('user_login'))

    def test_folder_edit_out(self):
        "Testing /documents/folder/edit/<folder_id>"
        response = self.client.get(
            reverse('documents_folder_edit', args=[self.folder.id]))
        self.assertRedirects(response, reverse('user_login'))

    def test_folder_delete_out(self):
        "Testing /documents/folder/delete/<folder_id>"
        response = self.client.get(
            reverse('documents_folder_delete', args=[self.folder.id]))
        self.assertRedirects(response, reverse('user_login'))

    # Documents

    def test_document_add_out(self):
        "Testing /documents/add"
        response = self.client.get(reverse('documents_document_add'))
        self.assertRedirects(response, reverse('user_login'))

    def test_document_add_typed_out(self):
        "Testing /documents/add/folder/<folder_id>"
        response = self.client.get(
            reverse('documents_document_add_typed', args=[self.folder.id]))
        self.assertRedirects(response, reverse('user_login'))

    def test_document_view_out(self):
        "Testing /documents/view/<document_id>"
        response = self.client.get(
            reverse('documents_document_view', args=[self.document.id]))
        self.assertRedirects(response, reverse('user_login'))

    def test_document_edit_out(self):
        "Testing /documents/edit/<document_id>"
        response = self.client.get(
            reverse('documents_document_edit', args=[self.document.id]))
        self.assertRedirects(response, reverse('user_login'))

    def test_document_delete_out(self):
        "Testing /documents/delete/<document_id>"
        response = self.client.get(
            reverse('documents_document_delete', args=[self.document.id]))
        self.assertRedirects(response, reverse('user_login'))

    # Files

    def test_file_view_out(self):
        "Testing /file/view/<file_id>"
        response = self.client.get(
            reverse('documents_file_view', args=[self.file.id]))
        self.assertRedirects(response, reverse('user_login'))

    def test_file_edit_out(self):
        "Testing /file/edit/<file_id>"
        response = self.client.get(
            reverse('documents_file_edit', args=[self.file.id]))
        self.assertRedirects(response, reverse('user_login'))

    def test_file_delete_out(self):
        "Testing /file/view/<file_id>"
        response = self.client.get(
            reverse('documents_file_delete', args=[self.file.id]))
        self.assertRedirects(response, reverse('user_login'))

    # Web Links

    def test_weblink_add_typed_out(self):
        "Testing /documents/weblink/add/<folder_id>"
        response = self.client.get(
            reverse('documents_weblink_add_typed', args=[self.folder.id]))
        self.assertRedirects(response, reverse('user_login'))

    def test_weblink_add_out(self):
        "Testing /documents/weblink/add/"
        response = self.client.get(reverse('documents_weblink_add'))
        self.assertRedirects(response, reverse('user_login'))

    def test_weblink_view_out(self):
        "Testing /documents/view/<weblink_id>"
        response = self.client.get(
            reverse('documents_weblink_view', args=[self.link.id]))
        self.assertRedirects(response, reverse('user_login'))

    def test_weblink_edit_out(self):
        "Testing /documents/edit/<weblink_id>"
        response = self.client.get(
            reverse('documents_weblink_edit', args=[self.link.id]))
        self.assertRedirects(response, reverse('user_login'))

    def test_weblink_delete_out(self):
        "Testing /documents/delete/<weblink_id>"
        response = self.client.get(
            reverse('documents_weblink_delete', args=[self.link.id]))
        self.assertRedirects(response, reverse('user_login'))