Пример #1
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()
Пример #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
    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 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()
Пример #5
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()
Пример #6
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()
Пример #7
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()
Пример #8
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()
Пример #9
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()
Пример #10
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()
Пример #11
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()
Пример #12
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()
Пример #13
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()
Пример #14
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()
Пример #15
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()
Пример #16
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()
Пример #17
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()
Пример #18
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()
Пример #19
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()
Пример #20
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()
Пример #21
0
 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()
Пример #22
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()
Пример #23
0
    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()
Пример #24
0
    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()
Пример #25
0
 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()
Пример #26
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')
Пример #27
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')