From 495575257e71867c228c2caea57cad5e52d401b5 Mon Sep 17 00:00:00 2001 From: Levyslater Date: Sat, 10 Aug 2024 17:13:51 +0300 Subject: [PATCH] test cases for storage --- AUTHORS | 3 +- __pycache__/console.cpython-310.pyc | Bin 0 -> 4534 bytes console.py | 9 +- file.json | 1 + models/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 439 bytes models/__pycache__/amenity.cpython-310.pyc | Bin 0 -> 945 bytes models/__pycache__/base_model.cpython-310.pyc | Bin 0 -> 2491 bytes models/__pycache__/city.cpython-310.pyc | Bin 0 -> 1051 bytes models/__pycache__/place.cpython-310.pyc | Bin 0 -> 2472 bytes models/__pycache__/review.cpython-310.pyc | Bin 0 -> 1017 bytes models/__pycache__/state.cpython-310.pyc | Bin 0 -> 1382 bytes models/__pycache__/user.cpython-310.pyc | Bin 0 -> 1114 bytes .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 146 bytes .../__pycache__/db_storage.cpython-310.pyc | Bin 0 -> 3528 bytes .../__pycache__/file_storage.cpython-310.pyc | Bin 0 -> 3089 bytes models/engine/db_storage.py | 24 +++++ models/engine/file_storage.py | 25 ++++- .../__pycache__/test_console.cpython-310.pyc | Bin 0 -> 1781 bytes .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 150 bytes .../__pycache__/test_amenity.cpython-310.pyc | Bin 0 -> 4551 bytes .../test_base_model.cpython-310.pyc | Bin 0 -> 5797 bytes .../__pycache__/test_city.cpython-310.pyc | Bin 0 -> 4650 bytes .../__pycache__/test_place.cpython-310.pyc | Bin 0 -> 7219 bytes .../__pycache__/test_review.cpython-310.pyc | Bin 0 -> 4954 bytes .../__pycache__/test_state.cpython-310.pyc | Bin 0 -> 4447 bytes .../__pycache__/test_user.cpython-310.pyc | Bin 0 -> 5142 bytes tests/test_models/test_base_model.py | 16 ++-- .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 162 bytes .../test_db_storage.cpython-310.pyc | Bin 0 -> 5906 bytes .../test_file_storage.cpython-310.pyc | Bin 0 -> 5904 bytes .../test_engine/test_db_storage.py | 90 +++++++++++++++++- .../test_engine/test_file_storage.py | 54 +++++++++++ 32 files changed, 206 insertions(+), 16 deletions(-) create mode 100644 __pycache__/console.cpython-310.pyc create mode 100644 file.json create mode 100644 models/__pycache__/__init__.cpython-310.pyc create mode 100644 models/__pycache__/amenity.cpython-310.pyc create mode 100644 models/__pycache__/base_model.cpython-310.pyc create mode 100644 models/__pycache__/city.cpython-310.pyc create mode 100644 models/__pycache__/place.cpython-310.pyc create mode 100644 models/__pycache__/review.cpython-310.pyc create mode 100644 models/__pycache__/state.cpython-310.pyc create mode 100644 models/__pycache__/user.cpython-310.pyc create mode 100644 models/engine/__pycache__/__init__.cpython-310.pyc create mode 100644 models/engine/__pycache__/db_storage.cpython-310.pyc create mode 100644 models/engine/__pycache__/file_storage.cpython-310.pyc create mode 100644 tests/__pycache__/test_console.cpython-310.pyc create mode 100644 tests/test_models/__pycache__/__init__.cpython-310.pyc create mode 100644 tests/test_models/__pycache__/test_amenity.cpython-310.pyc create mode 100644 tests/test_models/__pycache__/test_base_model.cpython-310.pyc create mode 100644 tests/test_models/__pycache__/test_city.cpython-310.pyc create mode 100644 tests/test_models/__pycache__/test_place.cpython-310.pyc create mode 100644 tests/test_models/__pycache__/test_review.cpython-310.pyc create mode 100644 tests/test_models/__pycache__/test_state.cpython-310.pyc create mode 100644 tests/test_models/__pycache__/test_user.cpython-310.pyc create mode 100644 tests/test_models/test_engine/__pycache__/__init__.cpython-310.pyc create mode 100644 tests/test_models/test_engine/__pycache__/test_db_storage.cpython-310.pyc create mode 100644 tests/test_models/test_engine/__pycache__/test_file_storage.cpython-310.pyc diff --git a/AUTHORS b/AUTHORS index 64b26acdc14..99cf0faf523 100644 --- a/AUTHORS +++ b/AUTHORS @@ -3,4 +3,5 @@ Jennifer Huang <133@holbertonschool.com> Alexa Orrico <210@holbertonschool.com> -Joann Vuong <130@holbertonschool.com> +Joann Vuong <130@holbertonschool.com> +Lawrence Maina diff --git a/__pycache__/console.cpython-310.pyc b/__pycache__/console.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4ff8dd33568b6fe80fdf7f5f92457d44e9daf53f GIT binary patch literal 4534 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 F{{p802?ziH literal 0 HcmV?d00001 diff --git a/console.py b/console.py index 4798f9ac76b..e133363e235 100755 --- a/console.py +++ b/console.py @@ -46,10 +46,10 @@ def _key_value_parser(self, args): else: try: value = int(value) - except: + except Exception: try: value = float(value) - except: + except Exception: continue new_dict[key] = value return new_dict @@ -140,12 +140,12 @@ def do_update(self, arg): if args[2] in integers: try: args[3] = int(args[3]) - except: + except Exception: args[3] = 0 elif args[2] in floats: try: args[3] = float(args[3]) - except: + except Exception: args[3] = 0.0 setattr(models.storage.all()[k], args[2], args[3]) models.storage.all()[k].save() @@ -160,5 +160,6 @@ def do_update(self, arg): else: print("** class doesn't exist **") + if __name__ == '__main__': HBNBCommand().cmdloop() diff --git a/file.json b/file.json new file mode 100644 index 00000000000..e42af3cec81 --- /dev/null +++ b/file.json @@ -0,0 +1 @@ +{"Amenity.3120279c-a568-4e8d-9e4e-30a0e067c6b2": {"id": "3120279c-a568-4e8d-9e4e-30a0e067c6b2", "created_at": "2024-08-08T03:53:45.625624", "updated_at": "2024-08-08T03:53:45.625624", "__class__": "Amenity"}, "BaseModel.620b24f4-5166-463a-823c-d5a114ea9f84": {"id": "620b24f4-5166-463a-823c-d5a114ea9f84", "created_at": "2024-08-08T03:53:45.625657", "updated_at": "2024-08-08T03:53:45.625657", "__class__": "BaseModel"}, "City.56a01d61-a465-42dc-9896-c6e7134f481d": {"id": "56a01d61-a465-42dc-9896-c6e7134f481d", "created_at": "2024-08-08T03:53:45.625673", "updated_at": "2024-08-08T03:53:45.625673", "__class__": "City"}, "Place.323565c8-22df-47cb-b1e7-accd224c3e2b": {"id": "323565c8-22df-47cb-b1e7-accd224c3e2b", "created_at": "2024-08-08T03:53:45.625686", "updated_at": "2024-08-08T03:53:45.625686", "__class__": "Place"}, "Review.c0e3621f-11cc-4e72-a1c6-433cdbcf2af8": {"id": "c0e3621f-11cc-4e72-a1c6-433cdbcf2af8", "created_at": "2024-08-08T03:53:45.625774", "updated_at": "2024-08-08T03:53:45.625774", "__class__": "Review"}, "State.99087fdf-b51e-4c38-a517-a423ab825b36": {"id": "99087fdf-b51e-4c38-a517-a423ab825b36", "created_at": "2024-08-08T03:53:45.625792", "updated_at": "2024-08-08T03:53:45.625792", "__class__": "State"}, "User.9f379e9f-ac8d-49de-a6d6-9346ed6b9cc8": {"id": "9f379e9f-ac8d-49de-a6d6-9346ed6b9cc8", "created_at": "2024-08-08T03:53:45.625804", "updated_at": "2024-08-08T03:53:45.625804", "__class__": "User"}, "State.090c7317-b672-4bdd-ac88-99cc3a2d84c8": {"name": "Boston", "created_at": "2024-08-10T09:18:48.295131", "updated_at": "2024-08-10T09:18:48.295140", "id": "090c7317-b672-4bdd-ac88-99cc3a2d84c8", "__class__": "State"}, "City.bb703af4-1cec-46a2-ae47-959fae596699": {"name": "Virginia", "state_id": "090c7317-b672-4bdd-ac88-99cc3a2d84c8", "created_at": "2024-08-10T09:18:48.295246", "updated_at": "2024-08-10T09:18:48.295250", "id": "bb703af4-1cec-46a2-ae47-959fae596699", "__class__": "City"}, "State.55a18cc6-e44a-48de-8608-90d22f0d9a70": {"name": "Boston", "created_at": "2024-08-10T09:43:49.929346", "updated_at": "2024-08-10T09:43:49.929354", "id": "55a18cc6-e44a-48de-8608-90d22f0d9a70", "__class__": "State"}, "City.18e91472-56ab-43bd-85d7-b9868c5ce6d4": {"name": "Virginia", "state_id": "55a18cc6-e44a-48de-8608-90d22f0d9a70", "created_at": "2024-08-10T09:43:49.929452", "updated_at": "2024-08-10T09:43:49.929455", "id": "18e91472-56ab-43bd-85d7-b9868c5ce6d4", "__class__": "City"}, "State.ee6875b7-3be5-4c55-b252-8e7f8db0ea58": {"name": "Boston", "created_at": "2024-08-10T09:51:53.055273", "updated_at": "2024-08-10T09:51:53.055280", "id": "ee6875b7-3be5-4c55-b252-8e7f8db0ea58", "__class__": "State"}, "City.5c0950cc-4ff8-4208-9bf9-4133955271b4": {"name": "Virginia", "state_id": "ee6875b7-3be5-4c55-b252-8e7f8db0ea58", "created_at": "2024-08-10T09:51:53.055380", "updated_at": "2024-08-10T09:51:53.055383", "id": "5c0950cc-4ff8-4208-9bf9-4133955271b4", "__class__": "City"}, "State.41b3e24a-50c5-4d39-a17a-67e25d6a0a77": {"name": "Boston", "created_at": "2024-08-10T12:24:01.255455", "updated_at": "2024-08-10T12:24:01.255462", "id": "41b3e24a-50c5-4d39-a17a-67e25d6a0a77", "__class__": "State"}, "City.72cf8747-9f70-45ad-bcb7-b714b4f2a21f": {"name": "Virginia", "state_id": "41b3e24a-50c5-4d39-a17a-67e25d6a0a77", "created_at": "2024-08-10T12:24:01.255554", "updated_at": "2024-08-10T12:24:01.255558", "id": "72cf8747-9f70-45ad-bcb7-b714b4f2a21f", "__class__": "City"}, "State.b62809dc-a5bd-46ad-953f-8c04e6dc64e5": {"name": "Boston", "created_at": "2024-08-10T12:28:24.988935", "updated_at": "2024-08-10T12:28:24.988941", "id": "b62809dc-a5bd-46ad-953f-8c04e6dc64e5", "__class__": "State"}, "City.d58035b3-b772-4930-b889-ab9864405e75": {"name": "Virginia", "state_id": "b62809dc-a5bd-46ad-953f-8c04e6dc64e5", "created_at": "2024-08-10T12:28:24.989044", "updated_at": "2024-08-10T12:28:24.989047", "id": "d58035b3-b772-4930-b889-ab9864405e75", "__class__": "City"}, "State.3deab3a0-92af-4b9f-b1f1-83cc8ba93627": {"name": "Baltimore", "created_at": "2024-08-10T12:28:25.005441", "updated_at": "2024-08-10T12:28:25.005453", "id": "3deab3a0-92af-4b9f-b1f1-83cc8ba93627", "__class__": "State"}, "State.e7bf3083-abdc-4da4-a0a8-081afcd6b8db": {"name": "Boston", "created_at": "2024-08-10T12:34:09.885281", "updated_at": "2024-08-10T12:34:09.885289", "id": "e7bf3083-abdc-4da4-a0a8-081afcd6b8db", "__class__": "State"}, "City.143445cf-e547-4baf-9fc9-50e856b86f89": {"name": "Virginia", "state_id": "e7bf3083-abdc-4da4-a0a8-081afcd6b8db", "created_at": "2024-08-10T12:34:09.885416", "updated_at": "2024-08-10T12:34:09.885419", "id": "143445cf-e547-4baf-9fc9-50e856b86f89", "__class__": "City"}, "State.2354c35f-6722-441f-8ee2-5971de928534": {"name": "Baltimore", "created_at": "2024-08-10T12:34:09.890290", "updated_at": "2024-08-10T12:34:09.890300", "id": "2354c35f-6722-441f-8ee2-5971de928534", "__class__": "State"}, "State.2e45a0cc-f154-44b9-ba54-20423d928a63": {"name": "Boston", "created_at": "2024-08-10T12:37:48.427205", "updated_at": "2024-08-10T12:37:48.427211", "id": "2e45a0cc-f154-44b9-ba54-20423d928a63", "__class__": "State"}, "City.e46062c7-93fa-4a77-afdb-b16359d52822": {"name": "Virginia", "state_id": "2e45a0cc-f154-44b9-ba54-20423d928a63", "created_at": "2024-08-10T12:37:48.427322", "updated_at": "2024-08-10T12:37:48.427327", "id": "e46062c7-93fa-4a77-afdb-b16359d52822", "__class__": "City"}, "State.6b383ec1-cecc-4279-8cd2-4c6409046252": {"name": "Baltimore", "created_at": "2024-08-10T12:37:48.432387", "updated_at": "2024-08-10T12:37:48.432392", "id": "6b383ec1-cecc-4279-8cd2-4c6409046252", "__class__": "State"}, "State.ccc8d742-92ba-49f2-94ab-cba823f860ea": {"name": "Boston", "created_at": "2024-08-10T12:38:33.786540", "updated_at": "2024-08-10T12:38:33.786547", "id": "ccc8d742-92ba-49f2-94ab-cba823f860ea", "__class__": "State"}, "City.4497deaf-9b7a-450c-ae30-df89f7c573b6": {"name": "Virginia", "state_id": "ccc8d742-92ba-49f2-94ab-cba823f860ea", "created_at": "2024-08-10T12:38:33.786664", "updated_at": "2024-08-10T12:38:33.786668", "id": "4497deaf-9b7a-450c-ae30-df89f7c573b6", "__class__": "City"}, "State.629d2cff-7302-47aa-ae6c-2daa9a902c5f": {"name": "Baltimore", "created_at": "2024-08-10T12:38:33.802325", "updated_at": "2024-08-10T12:38:33.802331", "id": "629d2cff-7302-47aa-ae6c-2daa9a902c5f", "__class__": "State"}, "State.9b45a466-71c7-4e01-884b-bf5c31093ce3": {"name": "Boston", "created_at": "2024-08-10T13:04:44.494836", "updated_at": "2024-08-10T13:04:44.494843", "id": "9b45a466-71c7-4e01-884b-bf5c31093ce3", "__class__": "State"}, "City.fdb9f77a-6d0e-43d0-a00e-2f66a12a5c6f": {"name": "Virginia", "state_id": "9b45a466-71c7-4e01-884b-bf5c31093ce3", "created_at": "2024-08-10T13:04:44.494952", "updated_at": "2024-08-10T13:04:44.494956", "id": "fdb9f77a-6d0e-43d0-a00e-2f66a12a5c6f", "__class__": "City"}, "State.fb0e5ca8-b5e4-4755-b9f5-1f8354197b29": {"name": "Baltimore", "created_at": "2024-08-10T13:04:44.510893", "updated_at": "2024-08-10T13:04:44.510901", "id": "fb0e5ca8-b5e4-4755-b9f5-1f8354197b29", "__class__": "State"}, "State.87615ece-5f89-41b0-8e1e-9d53c81ef9d9": {"name": "Boston", "created_at": "2024-08-10T13:10:24.166531", "updated_at": "2024-08-10T13:10:24.166539", "id": "87615ece-5f89-41b0-8e1e-9d53c81ef9d9", "__class__": "State"}, "City.9c993245-8810-4b31-aa55-eb60f1e0c589": {"name": "Virginia", "state_id": "87615ece-5f89-41b0-8e1e-9d53c81ef9d9", "created_at": "2024-08-10T13:10:24.166648", "updated_at": "2024-08-10T13:10:24.166652", "id": "9c993245-8810-4b31-aa55-eb60f1e0c589", "__class__": "City"}, "State.15cb65f7-2f95-4f1e-8fff-87b9340dab87": {"name": "Baltimore", "created_at": "2024-08-10T13:10:24.197115", "updated_at": "2024-08-10T13:10:24.197122", "id": "15cb65f7-2f95-4f1e-8fff-87b9340dab87", "__class__": "State"}, "State.f061069e-a33e-4e99-b39e-98c1c1fba7be": {"name": "Boston", "created_at": "2024-08-10T13:12:59.247329", "updated_at": "2024-08-10T13:12:59.247336", "id": "f061069e-a33e-4e99-b39e-98c1c1fba7be", "__class__": "State"}, "City.f9481c16-8a25-4744-bbb4-8470ed70a772": {"name": "Virginia", "state_id": "f061069e-a33e-4e99-b39e-98c1c1fba7be", "created_at": "2024-08-10T13:12:59.247424", "updated_at": "2024-08-10T13:12:59.247428", "id": "f9481c16-8a25-4744-bbb4-8470ed70a772", "__class__": "City"}, "State.8ba3000b-22c9-49bb-af2d-b557ff2f0ebc": {"name": "Baltimore", "created_at": "2024-08-10T13:12:59.253469", "updated_at": "2024-08-10T13:12:59.253475", "id": "8ba3000b-22c9-49bb-af2d-b557ff2f0ebc", "__class__": "State"}, "State.24cfc997-adc3-4267-bdcb-045f3736bec1": {"name": "Boston", "created_at": "2024-08-10T13:13:52.420927", "updated_at": "2024-08-10T13:13:52.420934", "id": "24cfc997-adc3-4267-bdcb-045f3736bec1", "__class__": "State"}, "City.1f8b5c17-a7c5-4b90-a444-cc8a1e68b707": {"name": "Virginia", "state_id": "24cfc997-adc3-4267-bdcb-045f3736bec1", "created_at": "2024-08-10T13:13:52.421065", "updated_at": "2024-08-10T13:13:52.421069", "id": "1f8b5c17-a7c5-4b90-a444-cc8a1e68b707", "__class__": "City"}, "State.44648c0c-787a-41f4-a0a4-60e0f76906bb": {"name": "Baltimore", "created_at": "2024-08-10T13:13:52.436476", "updated_at": "2024-08-10T13:13:52.436482", "id": "44648c0c-787a-41f4-a0a4-60e0f76906bb", "__class__": "State"}, "State.8adcc68b-8199-4f48-a914-e420ecdefe41": {"name": "Boston", "created_at": "2024-08-10T13:22:08.663861", "updated_at": "2024-08-10T13:22:08.663868", "id": "8adcc68b-8199-4f48-a914-e420ecdefe41", "__class__": "State"}, "City.f3da25ea-34c3-4916-85fa-d2cc67084123": {"name": "Virginia", "state_id": "8adcc68b-8199-4f48-a914-e420ecdefe41", "created_at": "2024-08-10T13:22:08.664180", "updated_at": "2024-08-10T13:22:08.664187", "id": "f3da25ea-34c3-4916-85fa-d2cc67084123", "__class__": "City"}, "State.de226d5a-d959-4db3-971d-335910dc2496": {"name": "Baltimore", "created_at": "2024-08-10T13:22:08.717163", "updated_at": "2024-08-10T13:22:08.717173", "id": "de226d5a-d959-4db3-971d-335910dc2496", "__class__": "State"}, "State.7fb20780-9fe0-4f94-aa1f-a13cfa95464c": {"name": "Boston", "created_at": "2024-08-10T13:23:06.875200", "updated_at": "2024-08-10T13:23:06.875207", "id": "7fb20780-9fe0-4f94-aa1f-a13cfa95464c", "__class__": "State"}, "City.55b0e124-47f4-4592-b00d-79860fcde2a3": {"name": "Virginia", "state_id": "7fb20780-9fe0-4f94-aa1f-a13cfa95464c", "created_at": "2024-08-10T13:23:06.875312", "updated_at": "2024-08-10T13:23:06.875316", "id": "55b0e124-47f4-4592-b00d-79860fcde2a3", "__class__": "City"}, "State.8497c801-8381-4990-b986-de70d5a6ce20": {"name": "Baltimore", "created_at": "2024-08-10T13:23:06.907400", "updated_at": "2024-08-10T13:23:06.907407", "id": "8497c801-8381-4990-b986-de70d5a6ce20", "__class__": "State"}, "State.b6167c45-3cbc-49f2-b061-16e63a415968": {"name": "Boston", "created_at": "2024-08-10T13:49:12.567916", "updated_at": "2024-08-10T13:49:12.567938", "id": "b6167c45-3cbc-49f2-b061-16e63a415968", "__class__": "State"}, "City.eba717c7-cefd-4808-aaed-f76dda60bf48": {"name": "Virginia", "state_id": "b6167c45-3cbc-49f2-b061-16e63a415968", "created_at": "2024-08-10T13:49:12.568080", "updated_at": "2024-08-10T13:49:12.568084", "id": "eba717c7-cefd-4808-aaed-f76dda60bf48", "__class__": "City"}, "State.e2f68155-9d51-4965-96c8-7502f6cd8bfe": {"name": "Baltimore", "created_at": "2024-08-10T13:49:12.579717", "updated_at": "2024-08-10T13:49:12.579724", "id": "e2f68155-9d51-4965-96c8-7502f6cd8bfe", "__class__": "State"}, "State.2b9956e4-d7fb-450f-9597-fd7f5e9de5c3": {"name": "Boston", "created_at": "2024-08-10T13:59:29.139937", "updated_at": "2024-08-10T13:59:29.139944", "id": "2b9956e4-d7fb-450f-9597-fd7f5e9de5c3", "__class__": "State"}, "City.bd89459d-812d-4e54-9172-94f98ce11730": {"name": "Virginia", "state_id": "2b9956e4-d7fb-450f-9597-fd7f5e9de5c3", "created_at": "2024-08-10T13:59:29.140033", "updated_at": "2024-08-10T13:59:29.140036", "id": "bd89459d-812d-4e54-9172-94f98ce11730", "__class__": "City"}, "State.2ebf5a55-7902-4593-8020-426c60a05140": {"name": "Baltimore", "created_at": "2024-08-10T13:59:29.163687", "updated_at": "2024-08-10T13:59:29.163694", "id": "2ebf5a55-7902-4593-8020-426c60a05140", "__class__": "State"}} \ No newline at end of file diff --git a/models/__pycache__/__init__.cpython-310.pyc b/models/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9d86f92b02ae770eebb9027bffc3d8b0f770911b GIT binary patch literal 439 zcmY*WyH3L}6t$gaLy80w>O$8p$-s&bL=-v|)OI0@mDaayR41;IP(&Ao{s@e)@;6?Y z_ys0zXocWPKGJ#EN48b7=@Fc#xA$p}67o@#zr&E6<0=OTg2Y5n!6eOC%qRgSj17$q zFod~aMGHMknwb?_=vf;Q+j#>uTRNE=yQsOf2KIB~g-{}#A?dj5V=v9qDotd%hITcF zcBTZ#vb{_ui)04gCl-?q)%FZ3$XEKH7xg1Py1VW2;pk>?aoyESj4{x-jE0pea1WBb zt5m{{_B)<-I2UTdxn`;?>PzWHxefD5A8jiG$Y*H|ff)0hS6Fq@*)iSvpPOREZ_=)l zb^%f);*}KpNPplf2=X$gxdo{&g(beJXk(z_Y}o@31|2n Uq&!40sc*W5%Y5ompV`!>-_X{0LI3~& literal 0 HcmV?d00001 diff --git a/models/__pycache__/amenity.cpython-310.pyc b/models/__pycache__/amenity.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e8d76d98dc0a074b8021a4b50cdd352c577cab29 GIT binary patch literal 945 zcmYk4&2AGh5XWt=vmf~=ftDP~CD$BCkhmg53xX3I=*<^v6FbSa-rdyRv`SP7q*m$) zo`Orc@;1J5>ML+!W)n&*d2G+j?)>I&mz_?N!1(g>*YpJ=M38gADf+o-=bJu{Jrz}GNQ9*a0nL{j@h)683AXC$1`OI@7Z99VshRXp?I3dD;++=jf>sFsJTeqK%Q#KE<5c zAe=@0Yz(Fa)9rzY38ziU=@ZJ?0jpz!jy=S@XJGu}4aRT`?+ux?vDl%-Yw@gf7VpM4 x-MLB4WUlko4%Xg(@36GFjqpRPzJpb>A(oF{Z6tY(x9_@OIE`tSwzswy`~@~|@3#N| literal 0 HcmV?d00001 diff --git a/models/__pycache__/base_model.cpython-310.pyc b/models/__pycache__/base_model.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2aeb4c5dff1573bd507cd9ca734d4e65acb3f6ba GIT binary patch literal 2491 zcmZuzOLH4V5Z;-6XuXyd#e_#fQEVtoq9WKllA6z}G>94=;RkgMjIr#nX>u-Yt%zh_j z`R79U1f%{DLO6*dnBWB~S;832-GV0^Pp@!GFY)GUe&S=zFZ?n{g0hvg$}kD-UQn!* zQ4-DVR+ClHO4^bS*F^Y~s~a*pc9PDB%X3NRb4RR*=qE=+$2{o@_o35Uom`6UR3n|` zqdM*vSzX7svs&J-ge;;zaYLuaOeiufbzaH`P=Y5?%h7(%HNl;#7?&dxJk%;5Ju%^D zFna_uSapTO+f=6WeVOjyjgt!-U%s;bNyxr!4no$GTZr#6P+9Xjh)XF^6ZMsxm&<&HKCYV64YVHtVvE5Avdj zcVsN2LexTqxc;Bp5RU-J>YmEWOdY0A zchS+|j8C1^8~IpUnK?AKexCKaYyG0R-`%;NxA2RW{37e;lb>*L$~W5At0(Q5bBtT1 zYeX#?XIGa_#r z{lG-yJ>n)QhUcQ!F@COPS({cZb*8m4F6e4JeYhu82Z$QC)=F`jg_!LTtFcWo80-G1 zI#B0m(;JU-VSJL;RTnEg-*~kw2FAD2&Cz2@UP#1@OYPntj+k3m)Hds z@kVypI`jVSxDj?H>kFQ4K6gJuCL$J*=?=Z~B?!Szkn$lLf&@cLkr{OWKDpM^Z>;2= zlC?xLSkA)Yn1<(*?pNR6tdAbYSLxAlc>6g^J^$bo{jW~ z2{vW>j#{5$cF{RO+%v2Qw(SURcV35vx?k+@ZSqDF#kvbC&strB=G}6pgpWV@SV=TB zdIc(v@Am1><@hBH|$mghm@OU>;j0 z(cJnBxKtwxaH+~Q>f;3ULDZQO<{J7BzIbQ&@I0Q_ehjEr&9ncY=c=oCkLp2~pmF_Q z9=r#Gdl)q(xXUNqQw}s<4|*?H988o_rx+KgDAP{UXXC7B>WfN8RDBd09cfnPcSyDJ zperhVTY`$JYKgbh2b&C0t5H`-5G~caB2czX$JgC|0I(@#bpQYW literal 0 HcmV?d00001 diff --git a/models/__pycache__/city.cpython-310.pyc b/models/__pycache__/city.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4749cb015c070bff1d3f39943f678a67afa28623 GIT binary patch literal 1051 zcmZ8fy>1jS5VpO({kxxBM061pa2+~|TtOQlNTg685F(u$YqR!UHu3IW?7KucMFJ_2 zQiZ3W2`!Jo8@Q#)D^M}B$4|sa^X+(Myz|YB>uxtCARoVen|x=4{J_I~X~E$osG9&N zB8Z}j87e4z1H;Nd1SJ=oqMw^q8H%v6nTbRMzLtr~Sj1%_k}?%(6AMkd?1&B}uZfCO zd_`2O1I;hF=qk2PM#*x0cvu_dhPla{8}1hK^E)U{-i??~b~2~m)=C@C(Hv19PW4<@ zr=!4!yR})Al@Islwy35)-K(uGrqvsL4tX7`O*Sv;${iN79DjIUuu~Lw1fU6YNCZ<< z0JEc(V#mxrRe=a~q+`V|sZLbulB!TeH-ShSZ~XhrL|b=Mq5_rPFww2JYKs)KeN84* zbyW8%7QJi2iCBYfd!A#1%gqmZX0_ARyx};kC&L{4L(kNK55X+7yW0kC%fvy7c3Xwo zgRbIgVN7;l^xY>2`qq1sg)%3=X;m>IMLFa!HQp1ue)0`$9ic zToKS>%YIQo(aaP}4VwTeIR2Jf%(V5flo*u~hR&Tf6VEd{bv`^k!|yHiiImOuq`W0R zpN$XeQjbk`X7%`0VRxz>h}M;sr_aYFF4K*%!q)8EJ^)V0%fWLb1Gen$V&HGRKGv?X zQcLMmDdF|@M+0^rwIM7Iv$O=DNuSR8=GeR)azv ZGW7BGYH}~|ZMZ%Fr!f%h0B!&df?q@b3yc5& literal 0 HcmV?d00001 diff --git a/models/__pycache__/place.cpython-310.pyc b/models/__pycache__/place.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ea5732e3bfafe6f710b26ca42574e34d387f48a8 GIT binary patch literal 2472 zcma(T+in|0bY^$FH}BfcwdqY*0tuOlgo0WmRH3G6ivWSDro60#R%_41S!XZq>^jAk zBPyj*pTZCD(n`FPSAKx+m{*?q+&2)Hb9OgrQiQ~g=6KGTGiT0yoOzx@;QRjPUv{p# zg#3oc=?`e+Cd~X-0G#-QQ?A9-r|_%CTB7@U!hA-N&f-R5_(r+bV$(N))`-o-@~y=7 z?Zok&r0F*k*LM@o_ewq^ZY6EMO^KkR4mbBS`Hk?nCD>>|SlkvicMhp=d6T;^yd#~r zc>9RKUgubf&pcTYulu^JX`GUW--sZgE-9d?!7o1h?ig) z`MRem`&O8XuQD!T#ctsT z+T7mSynP4sva)nC=3yal1=@j14?uWxETbfp(_jy-bZUt~#Aj}`jsyxCpmnD|qek*i zDItPDB#Eza>Vuy~4X!~1MqKv|VS2cR@!|cF>Oz{`_s=o|#Wk~$-$iK)h z@=N7l_ew}P^WlvXjE(VZ9kT&uXvREi6OXH~`L%_>#fR`SBIxIjFf~x1M z019$QMs!XiGS_~hKTs@VC@pQa5J5^uVI0jwU0GOEjeIhODzSn9w}Sw5V7Z8Q6bt1r zSH|8W{Cz={9Ry`j2EhyR`<0E|ED;-V_(+P4%}Cx#Z^3SsieUevjRZ?H-zbe+A5Z1m zpw%^0PXn;3&06=c#@3H-JY!A+SkRm;n6GXFDEk>n=m8iqBnMidjr3=1PM^~QeXc)i zJSVrwx84Dpvym|;BkWLb&9!INoIQsV4;SaySM=F6XcUEz-LQc6(4Q2dD@8GpY2Gb% zMK_M}0&}8@TQ^GcB1{J&ufj{^1yH1CE3dL_U6$c3smiEm%FK&QhC`wBFpib6AI1|n z--3fmgLYwruX!3Kg45TG~Y zRRkXbIQ9jytGXvnD`$A@%wx%K_`^P7xr0JK1~6+^9yr;79ss$W0v-g)2?Ee{ z664wpf`^kZu6N8J;MpJuO1+^9t6&C&@`9ki@~`+L=BLCKEo}hGgkCX)o~}%64!B^* zsG3~l0~w9+ZILE&y6Gh81B=YEBv+jp>xac|MX{6cyI=@8Q>Yd^9PkG9r$HJGcMECZ zc?%z^V#0;8q0WZoQZ`YM>j?09f*h*43+R!TRR`~v%%HsCB?CLk@*N0pZBQju>CSiY zIHs3e0e~GO{{nzT7o3L_@Vq%(&0!jx)|^FZy(;DQmgP;5 zTDf-rl;JF&MZAr20-G!Bh`A%xt__S za?2*}Scxb?c$&kq;g*`5GW~UBSvRV@z&DrVn6`{sV6_Xd3((Olum`PXe`^~1(_ydI I?2pyvKfyDL(EtDd literal 0 HcmV?d00001 diff --git a/models/__pycache__/review.cpython-310.pyc b/models/__pycache__/review.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e6634fceb058300e618ac8f6af8c9a865161be89 GIT binary patch literal 1017 zcmZ8gO>Yx15VgI|ekGyMmPo)Q*GN@z;94OlQaK55EZKEmZ(SvnlHF$ zD|Sc*@qDX)Tp8v1W0N`8KhPJszI=e9C==9K!+i;Z)bUych&Nd|#Pa zQTp((ws|@A>3(H(J}p1$>oH!iZpa7CU4hdCco4x96@cZWrPwL6J1P*Nj&!W}g6c%I z78DVG4Me(@jUTh^CY!9*Omxan0aF-l7@a#Zp{lJqx3TEn5l+MtVB7WKlHmNsfj+a^ z>9Wr1yej+EWJSI2nL6^3ZFF!Cy8w5doSAH_-7r`CAV6HsjLD9Sp2st%Ev9oQKs*^! zq`0yGX2_Ba7_JAdCJS;xZ)i?#*mwGkV!r?rn{Vc2Ugw#~=lWj*Q2UmfooVZ1DREy) zP@Fq$CZ1<@>U?;5iSs@6iIh$Aq`W78c1Filp+_dWw0iU|w|nIt>{g|g7q3SJcG8WO zd!MG#k`7AT5ok&VmjUgQ_EBM6K zmCdGF*1jucjcP5AT6_pLL>GbcaU-qFm5)$N40x@t>INBp+b|nzW2Cgt@w3KlVT8bK z3=aQFjl?nGG^L#O;I~OR;}CDN=FFgDU*h>!;QX^C%;6C{Y2>7hMFA}K%(Kc_Y@AQs qxyj7uSLoU`5PAx z#{d@Jz;qUbB7!KYn4yA#4h*XT5ma1oiu>FQs!)WTJut&65>aO}6N?!9p^2+RB-Kca zs#K(%Z)nEVL`*38o~TI0H$=rc(EOTPYcxss<|jjfq$%YKU~e9@R`G zB7RL4RE<=66N&WhY+#@3u^Ow%4Y{Ub^qO!YCNpxc^F2T4*lwTxtk+gMT?2Ojnl+2e zVHz^e)QJx}+r4`Q2wwo9sNNV;oEU8pydQLK*dLx0^E0a#p3EsY?neLy2JXRh2OwH< zO-|{KmSo5NpubZr6BL4NAD4C6mW3&|+Vudi1OvBOYwIH^(Jdt;oI7n6o)>oMe0cT} z^;_y=DZ3I%`Ih|i`E=D(dTNT7R!_ez?NNOM-lo>_;`y|~g1Tu3{BV6~KLAu8B0L7- zfNdu;WPf;n8QrJRzg<-R$mV#W1NXSk^x+A-ex##~#V)bf)_!#7 z?9$e~2G%%>pERGib5of4N>`WfY1jx|llQK}##TKmg!ce2>t^?4q`6= literal 0 HcmV?d00001 diff --git a/models/__pycache__/user.cpython-310.pyc b/models/__pycache__/user.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b66e3e312951dea4f6943a56c218ce3669c4276a GIT binary patch literal 1114 zcmZ8g&2AGh5Vjp>|B|#RprV2VxrRe?;D!)_BEboST6*!t+Qd$>)VrJ7n^uh~QK^-B zf-?`mrCfO%Upe&^I5D${N>xYmd49Z}Z)Tjb(@6-dufKke&l-gMLF4vng7F%}4FMDp zL{Y^I6%_V{VR=I|axOSUKR3-h5J9ao6N(UgO%vvki1Jv(wLdUP-V!ZJ-V+t7=z^$7 zH#9%zqOI5->BozW-n2Bz^+qOjuD9>By@u4}W1snWCw2NmskHGN)jsvXL|3{vf?)8r zH1oXh!CqyvVgj+Y)h4a7vT)OEHo{A8FTOI|4^T9Liilu}3Sjf4sn`LtFH}PWI@FQk z=TM0XzA+Ksv6CA+tmCaac3XE;q+*r8w`-ucR{DAoskVqg5|9>1`;v^Q>ZrAgNOUg= zCt?HovF^bJ~%kW{fhcn%6h(1UXj1g2GcUv z1Ct(GJ$RGZoni-~WufKK^FfZ|b_1lpJv*`Yfzx9o#{f3jqO*^In|${$cai2=N}osx zAI}ZyZ7C1usaZurDOEWFcd)$O$F3@EI?=N79Vsj9-14Z!_iqCL-_&`U86VBySss^G z`DC0~SJl~k43BlG+7J&1Gwizap{={@YTkHvUG+#CBcl{K=>t}u?RPAmv`+#2#LN!E1kvB`otZY)QqM& qKe<)j+JEnMY4f^_I>RlRHCLqRqnFFpzQV`jx&WL;z_Pu<&Bi~!g&wg0 literal 0 HcmV?d00001 diff --git a/models/engine/__pycache__/__init__.cpython-310.pyc b/models/engine/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b95b0181e4abe20a718f3b3c5070abcf4fd8f7eb GIT binary patch literal 146 zcmd1j<>g`kg8EgP(?IlN5P=LBfgA@QE@lA|DGb33nv8xc8Hzx{2;!Hienx(7s(wyl zc~PpqV`h<4o>P2sPJUi$e3`L+ZhlH?PO*M!UV3I;s(yTYW?p7Ve7s&kHA OsvXF0|L};Nvb{`8Nn=ga$L2m71Z6)=sU=4sDahoYcwO(9OKi)8B5|$o$aPeJ@?g znqgD-8|iY^3R}AGr|qm0c65I!?Pk5Or~A$HMz#{J=)RS%hO0P#IbF@x!ZkhCN?*y= z!}V+<+%OGpbDuYPi+6aBwg2LUul~$n9oBteuymxM=xY#@9ROAtf6R~{Q*ck#*t2yVbMMrbiJw3!t;cwJ^Q=Y=ouR?}ZsQ zScCZ(@!1k;^*<%1s}-6!5Yfx~0jybE`5dtFkNS0&|rS*_F#0Pb_h(bRN6sUS&MCFHAU!zo*~+()i}jb6LiD znZOD`JU4q#>_6tiQg!d|40fUiUqIvN^Sw_Vs?Nf|XTRUQvf%!&_kOF|3k!C4l&?QO z8T@YidUh(0(|5IG`**gtpPk)#c6RsK89K@-xhx0$hM<@e%Mi*tC`1;QY9*TC8BH8T zIJCgeco`Fn%4ecDisCfwd&-eKJrG?wrbprii4_v75HAh!8k&FpX#23p_;wmU6@2^S zMC{}{(J(D?9-X|uosnnD?b<1~*?uJJSlBu`RelsDh=M431INgl5WeM`_0KUK)2e^} z_AY&Q#dI#mD>Lo4rdx;P#nXqZO%AOsPJWsgWaVAs54XpGGW!hdKC^%7MR0WkV|a2|v|Fs>SQrBi@8~7q28kIsp6)a}A)c zm`&6AlVgtCbC99J6?_S6;sK2>c?57X&dtiykzfJ|YrGXRra`E^J}8T?hoo%S6ysnkJJuI>;DFa+E z7#_y?BQAsD;Qv$9tM|S%Yh5V>=IA11;uC&{{+KlASmVwdPMZ4Pcv28(A2mhmI<6D7 ze~efH-3JGv$i7xtqMRT(2=bx~28hJL6lJeILEM^Yt@YQA@jk{r!Yhe5eXB&0Dr@-g{ zIiwJ$sPjkVslK+BcZbOW_b5rS=Az5eokV$8j zI>bk1igzkxGh)MY^TIeW#8wI0l=gFr`0(7Js0M4==k5hD=;oK!nFBU-&OL@1W^Edk zg?!krTnmA9cCC{XC*FcJ&LNkoc5K?UdXSNk}WGd&M*Aa5{|9*ip>ipqQx^4j{l1SQ@SNxE4?3;sr zS9}XQR5OZD4~$aEVy!4T9>wV-r!}I86~id1gO@^95FcvY#doRqJrYDw;sX*tA+by1 zK8bm3%=wI%pU6SdkZ({$;h4VF?E1^T({y~-Z}?7USsndem<&>>Nf+U%AbZyp)beC_=gvFZbWjQT~U}1*Z6jqD;O8 X0dSla{JpjCBda12pi1yASDgO>eGCS>JE zm0Ix#&qzEp5-o2`t zgOJ~GGW|F(xd9{l4ul{+5md04`V@Yxm<=r7qPWImKCpe;=yqHgRQ;;aE3q@E`8A_g z^$i%= z*B~STxQNdL^)11C9ueObOM(mg3H2+YBC1b_Uloq1!LK9gq5;1(uxN@FSky&Z%)v@S z%!>v1ZNko?I0QQ_VF4V6bz=&E(H%H+6voj=W-b7fhe;Q-Jat3&qt#D3ZV$k6&$>cR z+1(4f571;{KdPbGaz9IxP8a>(d(e4A;WmuyLl6ZpVMx_05!q%1>652)huk4w9r}`O zTid*#1@E&5EIUzZed_^JCktM%!n#5pHVTL*z6EZuk*j1rRO6V6sGCP=5~?jX2-16f z+0C<#$MxZ0%Gt?|wxe7QGF=M-Lx3RAP7oyFKn8(lYo5utr>$ve9Z+v-77dV(71@owdF{3G+lniRTKW9 zYJt!!5(=xqGfTB`ZoxZh0k;vHQY@Jb!0-$x8FJrYi?mJoKeIl9MVG?v-h-S$YvbcL zpa5Uc7vxH#WKO}38}@*Y;NL?#M?P7CK4w46ZCg2iYQv7T!zlTj2*!bikFoXugD#TH z+oY7>-xn}Um9R#arx-qA3ep^F#(plGUk~%OcL6*TQk;02Zg#wi0Yg{wwB!p<*JYxQ z&hl^aj^>ywnv3CJ-Qy*IOz4QHr>nK^L_ zX;+Y^WCt?`kIF{ZyHKN`93z0|J$E4UwN$vhR86&wD7k+iks!d}SXrp4LU%oC65-(4 zZK$c4yn{!_Q#9FVVLA?Gw`;-9-h*8S=OzptPztKf6buH^l! zor5FkifJX8It&wa3 zomOvv@Ys}#2Yj)+=`hLff>nkvaH|QvU?OtLcMpUeEj`-t+GRVc2LZI)A+*^*H-q5e zFpSHFuB$;H(ryrx1p`}Fc_Qq;>Qxj-K7~b9T|lvd;v$Ou;~5PLgQ|hRS%yJ#2%OA< zGR&O1Q*oSn-Kjdf-7;3*qIwhGa6#yHc_CPac8WJlb4}C><|=CLm=iO&$mP=9I49p4LVq*YPs2ZRz~}j=oh$HN!0{TU UeRcu_r%0>mzY24pDlYPW0oskm*8l(j literal 0 HcmV?d00001 diff --git a/models/engine/db_storage.py b/models/engine/db_storage.py index b8e7d291e6f..375000c0378 100755 --- a/models/engine/db_storage.py +++ b/models/engine/db_storage.py @@ -74,3 +74,27 @@ def reload(self): def close(self): """call remove() method on the private session attribute""" self.__session.remove() + + def get(self, cls, id): + """ + Retrieve objects from db storage + """ + if cls and id: + if cls in classes.values() and isinstance(id, str): + all_objects = self.all(cls) + for key, value in all_objects.items(): + if key.split('.')[1] == id: + return value + + def count(self, cls=None): + """ + method to count the number of instances + """ + if not cls: + all_instances = self.all() + return len(all_instances) + if cls in classes.values(): + cls_instances = self.all(cls) + return len(cls_instances) + if cls not in classes.values(): + return diff --git a/models/engine/file_storage.py b/models/engine/file_storage.py index c8cb8c1764d..b63a1ebc363 100755 --- a/models/engine/file_storage.py +++ b/models/engine/file_storage.py @@ -55,7 +55,7 @@ def reload(self): jo = json.load(f) for key in jo: self.__objects[key] = classes[jo[key]["__class__"]](**jo[key]) - except: + except Exception: pass def delete(self, obj=None): @@ -68,3 +68,26 @@ def delete(self, obj=None): def close(self): """call reload() method for deserializing the JSON file to objects""" self.reload() + + def get(self, cls, id): + """ + method retrieves an instance of a class + """ + if cls and id: + if cls in classes.values(): + all_objects = self.all() + for value in all_objects.values(): + if value.id == id and value.__class__ == cls: + return value + return + return + + def count(self, cls=None): + """ + """ + if not cls: + return len(self.all()) + if cls in classes.values(): + return len(self.all(cls)) + if cls not in classes.values(): + return diff --git a/tests/__pycache__/test_console.cpython-310.pyc b/tests/__pycache__/test_console.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..321bf012cde457c10292eaa1b0824e086fab480a GIT binary patch literal 1781 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 HCpP~N=uO4# literal 0 HcmV?d00001 diff --git a/tests/test_models/__pycache__/test_city.cpython-310.pyc b/tests/test_models/__pycache__/test_city.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2b6a7063d07050b9129abbe278dfe2c132bf1261 GIT binary patch literal 4650 zcmai2-*el>5yk-^2vU@y$eJWdodk(1+w|DdwC=R7k|vI2J9RQ<)7qVB*~y>~ak40r z0DX6~$FS6PMt<%8U_Gj@{cr9yPkHuRW?J{#J3tg=$)$!%+z;ICe*5j-p7Pn*ri0Jl z|Ml<9|IRzk_tZH0@zJ=BuY3%VI$bAasXJgp)@6*Iy@A_x&9B$>@aqq}q2Kk*SZz=n z2Hl{XSMS!%ys#T`f4k9beC4D;T7T}Obslav_q^^5dcw4Uo<`ZzO1*ndyIGuTuIHIb z`k9Q>7LV?8sn+}I>CL<+quwBqlFQ}~P|#^J9j1xmsz2l%H2fZ>;kR)kk^F9+@!Ae-v^|+t9srTI3W8GTnr?ux!H?SJR5~F7~Oq=Np`WtC0oyBi6 zorAt_>DEyVi)++^=6TfH;=PB)gf#Dsha5Jkex5~1mPS%N9q=gMjL0%;RgXcX>O;@u zjdgtGB7|~YFy$&|+uL_{oY+qp_I8W+?r{~3N6}_3s+}T53Ut~vT?d3C-c!2yfU6-N zZg3&BPdn;nUv7@G9_gb4f-T+za9(d94;<0Lem}0QZskM1I!K-fzWQZf+{kXky+NMw z`0>?MvxSlIkZ_jvnHE|ZVRgyXA4luts|7N^g;?~8caH+KGMO`FIeDmtFIoQbG6Za9 z;F9}Kw##t_#Sd!=(w)BcE$ zuIc7I^6OXQe#-TX@qfJ8A8@H>h_*uAdNfW3x}|cJ3}U<3fv0`R2b;P^D@Yv(F2@69 zoM6Q)bkXk<Ra}^Y`t)~CgMKLK8W9OD!pzWF@^wIG^w#2HAjM1m-I#QKj;w!rif1Rv6L62;~F&~hDJlrC2O z&udfGlgkf@cL@y;%u#Hc5}r#0Bf=@4diIbCAJ)+8Qn~}}{9>8*Jq*K&a=>YfI7j?T zB|w%=u~ZFZoToBMCSyO40*Km@DtBZjSAwEJ*W(x~#IbH#7Tp(PuDt=z4w!f!6ON;0 zxk4LJbV31o-72t*=`RV~rt32Q)jZ_MY&r4mQ}GfJmIMkPPoc054Qy_kSlKDg9_fA! z1o1H~R1=@zM}#EKk@zVI(p{VqrnBMDYclF*_M{kcwUwvRz|<)|c(x{YBik3fj-??~ASg9hKnY77 zP!dek1k<)_SfqVA5#E3;4NstzR|yr0@TNP*S|HOR(ogWp|IevdA6uZ)p3z|(XUUKg zx8sVev2MjNB}zMD7=Ua_r-?OH%#lSOkobti1rlu%#@`cmm?uh~f&!a#HRn<2_{fq? z7W!eG{#tc2-oyCRhx~sXUrFL6VQ}90ZMr& z8r+AjSOR2-((NEcQH4y7^7F9AuX+%npB{q@W<_LIe`Bn8L@d2*in_kKfPpOH!x0jn zO}N^paqXrX9gXwU<}{PeehCG2U{6xrkSZ6+10E|u$GKP|@hcJ&Hk&$N&fsMtgH#}D zn6p1{=fUU&w%|_6EQ{9R+*7d6G{#&Akp${DgER0$U@eW=$DNbUcitzoJo+g1un-j;SJD zg*tMNDdTb?K+1O9$4KRfDUbsRe|Fc~!F^}U#CeR@cQD_MKOzd%Q@3iH8;oD9k>U#V6AqIqCJ+91~zYlj8n{hZF_AaSq@#&hY@Q3*g-) z#3scfwc#v}PTC_5vwgMcK06B+gxZT>2N#Cwee`1{`s#pOR=Ssq?lPVX=Oc5V6Y+VZ`X zl?TNw>M_AiL99LG3qi9qqDXAgoz~2+d={#>Jh;E67r!BKEH|7n0aF2QO`t=~oYKA< zz*m$`7ukF4EGy2Q?62}QsvWA2hlj%ux`c)ep%fv606}J@OQ{JZf5)Y|XV0K*>Km^x zS3`RtqXQ4dRS`jXl)6d`qkODJW8B65LUH|Fbn)44J9@U;X$KZU+FAUZ#2pd_x(=S& zo~?pOO&!>@dmNh3K!dRilO)lO5+;t8x2I9Sj83~Lu3&;#A+bv09Eocrz94af#9b1< zCvlI)gG<7XJ46ln0Lq9bHs7&h=X)0z=9+Mcy*Q>7tDE1MjRC2!lKVPymV%&@m? zd$iJj19Ujf`ig9_*}zs7m}m+av-C+C>F_gqA^4o!E8l_eS<8o7DBxP89t+rl_s-@2 E0XgHVxBvhE literal 0 HcmV?d00001 diff --git a/tests/test_models/__pycache__/test_place.cpython-310.pyc b/tests/test_models/__pycache__/test_place.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..010ab8a17b12761fa26d97fa953347a97638e4ff GIT binary patch literal 7219 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 literal 0 HcmV?d00001 diff --git a/tests/test_models/__pycache__/test_review.cpython-310.pyc b/tests/test_models/__pycache__/test_review.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..250bbfb48840c525de56b9602cc7fd8cf761a4b4 GIT binary patch literal 4954 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
  • Y2@L6O@ho z_A z&TI~KjEOXE<1 zpwwU$O1jhmCBZ~ZbXs?f7ipg=!drAp(-YOoi=-8b@T$AOYH+4yq@Uom|Gz_ZJ+nZg zKBvPt?k7D?z8#O8HP*E_rbKCHj0Yf_QZ=zq#R4HZLF8j1r-{^w7<*5=!`xB&6cpGb ztEoq!<0DH}S?Gsl`qs*3zJ>Xz583|;e)0~;{$|0p3Qbdb&um-ghiuJ zNf**1reRo2kK#I)F2VB0bU5UJi<@rElB2IGo1aig3aXXJ*;BqE!h$mw?6 zUG!_?XLsh=v(Kq-+^=42je2SJ?od*a!v{v+Hl+_8>&%sGSd?3zcgLAT|LHd_5(i782XZYTU^^3!> zBD1~|YGusybCBLR4Cyh0biAeknv8)Sp9VV3HieUt%Q!Fo9S=o_vzKhwF=qr<;gqn$ zlnG!8=ag-^Pf)0lAra~*=kwd%7EZH6CQf0#yaj$c|Cka&Idwm)l4cyZck z;gDe}a%9t@Y3MMDV^t!aMNd0wBN~WofQECN;*mD6T6p4ps=MIBwKK zn?=jT>LxC0_22IJV|*Sc@(I2-CxpFfRL?bD{SNyBza#RhR9 zw^?Ts`ZEPGa6=^81uBuC?)OV9|8&|U2fhA=VFIjY3f4bxlj8Vhj01HV<9JZ63&p!D z$h4GQ=^4iIsE^ubFgsS79#KLyR@>qmz_K}U_D}%?ap@3uZTiQ;@Q-X3s<>#&8uX6IZZpZ=hRjIu7QztBrU&!g z0JfsyxXeCa$5}oTLesBJS<1s2;}ANF2OB~uLI?qZI!S*ym{9V!TgDF( zZxblBF90`+2r3seROm3uhH5axN&9b(ZggCYbvkOp@G=3LqMVqtjjsjz+yE&Vxa$5xGF*B#}!*eoy2o5$YC9 zITe4TyZc1`Ok`q|Npty2Oi+O{f7DQO8L}`8E5&!NHYbRqK5uuTu2PVUw)`1fM{VU_ zdw@T#>^~~DZK8jEbU5sH6d|;^!E}w+z-XFQv-Cky>F}~W{C!Es0Qnw>&uTtIL$h8Z M5m~^Ny!X!iAKW@7fB*mh literal 0 HcmV?d00001 diff --git a/tests/test_models/test_base_model.py b/tests/test_models/test_base_model.py index 231dab48ccd..b893b4415ea 100644 --- a/tests/test_models/test_base_model.py +++ b/tests/test_models/test_base_model.py @@ -82,17 +82,15 @@ def test_datetime_attributes(self): """Test that two BaseModel instances have different datetime objects and that upon creation have identical updated_at and created_at value.""" - tic = datetime.now() inst1 = BaseModel() - toc = datetime.now() - self.assertTrue(tic <= inst1.created_at <= toc) - time.sleep(1e-4) - tic = datetime.now() inst2 = BaseModel() - toc = datetime.now() - self.assertTrue(tic <= inst2.created_at <= toc) - self.assertEqual(inst1.created_at, inst1.updated_at) - self.assertEqual(inst2.created_at, inst2.updated_at) + + # Allow a small margin of error (e.g., 1 millisecond) + self.assertAlmostEqual(inst1.created_at.timestamp(), + inst1.updated_at.timestamp(), delta=0.001) + self.assertAlmostEqual(inst2.created_at.timestamp(), + inst2.updated_at.timestamp(), delta=0.001) + self.assertNotEqual(inst1.created_at, inst2.created_at) self.assertNotEqual(inst1.updated_at, inst2.updated_at) diff --git a/tests/test_models/test_engine/__pycache__/__init__.cpython-310.pyc b/tests/test_models/test_engine/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f996d204f4575588ae8a4aa355e764464f615ad3 GIT binary patch literal 162 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 U0l2Ll`BNSJJ^g=j%2|8ue?)ipk^lez literal 0 HcmV?d00001 diff --git a/tests/test_models/test_engine/__pycache__/test_file_storage.cpython-310.pyc b/tests/test_models/test_engine/__pycache__/test_file_storage.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9beecefb7058f5b717f479a186641cc6bc6e8f69 GIT binary patch literal 5904 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