def test_fileNameCheckInsert_4(self): fileName = 'gama.txt' expected = 'gama (3).txt' self.assertEqual(fileNameCheckInsert(fileName, self.fileNameList), expected)
def test_fileNameCheckInsert_2(self): fileName = 'alfa.txt' expected = 'alfa (1).txt' self.assertEqual(fileNameCheckInsert(fileName, self.fileNameList), expected)
def test_fileNameCheckInsert_3(self): fileName = 'beta.txt' expected = 'beta (2).txt' self.assertEqual(fileNameCheckInsert(fileName, self.fileNameList), expected)
def processing(self, request, report, rqst, msg): maxFileSize = MAX_FILE_SIZE report_name_list = [f.filename for f in Report.objects.filter(parent_id=rqst.parent_id)] # Умови при яких зміни не відбудуться: if not rqst.fileName or rqst.fileName == "": msg.title = "Заладування файла" msg.type = msgType.IncorrectData msg.message = "Ви не вказали назву файла!" elif int(rqst.fileSize) > maxFileSize: msg.title = "Заладування файла" msg.type = msgType.Forbidden msg.message = "Розмір файла %s перевищує дозволене значення %s!" \ % (rqst.fileSize, maxFileSize) else: # Починаємо заладування: rqst.fileName = fileNameCheckInsert(rqst.fileName, report_name_list) report = Report() report.parent = Folder.objects.get(id=rqst.parent_id) report.save() # зберігаємо "сирий" примірник щоб отримати id # при цьому файл ще не зберігається rqst.id = report.id # Файл буде збережено під кодовою назвою # Схоже, що ця назва не береться до уваги, # бо в моделі працює upload_to codedFileName = str(report.pk) + ".upl" # Збереження власне файла try: report.file.save(codedFileName, ContentFile(request.body)) except: # Помилка збереження, найімовірніше - файл завеликий print('Saving error. Probably file too large') # Видаляємо з бази і з диска недозбережений файл: try: report.file.delete() # файл видалено з диска print('file deleted') except: print('file was not saved') report.delete() # файл видалено з бази даних print('report deleted') msg.title = rqst.fileName msg.type = msgType.Error msg.message = "Заладування на сервер прининене!" \ "Очевидно, файл занадто великий." else: # Завантаження пройшло без помилок report.filename = rqst.fileName fileSizeFact = report.file.size if fileSizeFact == int(rqst.fileSize): # Файл завантажено повністю report.uploaded_on = rqst.fileLastModifiedDate or timezone.now() report.save() # остаточне збереження примірника моделі # Витягуємо щойно збережене з бази, щоб мати # правильно відформатовані дані, зокрема дату report = Report.objects.get(id=rqst.id) # TODO-перевірити чому filesize.js для NewRow показує розмір без одиниць виміру msg.title = rqst.fileName msg.type = msgType.NewRow msg.message = "Файл успішно заладовано на сервер!" else: # Файл завантажено частково - клієнт послав xhr.abort() print('Error: fileSizeFact <> fileSize') # Видаляємо з бази і з диска недозбережений файл: report.file.delete() # файл видалено з диска print('file deleted') report.delete() # файл видалено з бази даних print('report deleted') msg.title = rqst.fileName msg.type = msgType.Error msg.message = "Заладування на сервер перерване!" response = HttpResponse() return report, msg, response