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()
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()
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()
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()
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()
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()
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()
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()
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()
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()
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()
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()
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()
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()
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()
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()
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()
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()
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()
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 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()
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 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()
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()
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')
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')