Giter Site home page Giter Site logo

airbnb_clone_v2's Introduction

AirBnb clon V2

Initial code of a project to build a clone of the AirBnB website. The previous stage (you could foud repo here https://github.com/Abdalmohsen-H/AirBnB_clone) implements a backend interface (console), to manage program data. Console commands allow the user to do CRUD operations on objects, also to manage file storage. Using a system of JSON serialization/deserialization, storage is persistent between sessions.


Repository Contents by Project Task

V1 | Tasks | Files | Description | | ----- | ----- | ------ | | 0: Authors/README File | [AUTHORS](https://github.com/abdalmohsen-h/AirBnB_clone/blob/master/AUTHORS) | Project authors | | 1: Pep8 | N/A | All code is pep8 compliant| | 2: Unit Testing | [/tests](https://github.com/abdalmohsen-h/AirBnB_clone/tree/master/tests) | All class-defining modules are unittested | | 3. Make BaseModel | [/models/base_model.py](https://github.com/abdalmohsen-h/AirBnB_clone/blob/master/models/base_model.py) | Defines a parent class to be inherited by all model classes| | 4. Update BaseModel w/ kwargs | [/models/base_model.py](https://github.com/abdalmohsen-h/AirBnB_clone/blob/master/models/base_model.py) | Add functionality to recreate an instance of a class from a dictionary representation| | 5. Create FileStorage class | [/models/engine/file_storage.py](https://github.com/abdalmohsen-h/AirBnB_clone/blob/master/models/engine/file_storage.py) [/models/_ _init_ _.py](https://github.com/abdalmohsen-h/AirBnB_clone/blob/master/models/__init__.py) [/models/base_model.py](https://github.com/abdalmohsen-h/AirBnB_clone/blob/master/models/base_model.py) | Defines a class to manage persistent file storage system| | 6. Console 0.0.1 | [console.py](https://github.com/abdalmohsen-h/AirBnB_clone/blob/master/console.py) | Add basic functionality to console program, allowing it to quit, handle empty lines and ^D | | 7. Console 0.1 | [console.py](https://github.com/abdalmohsen-h/AirBnB_clone/blob/master/console.py) | Update the console with methods allowing the user to create, destroy, show, and update stored data | | 8. Create User class | [console.py](https://github.com/abdalmohsen-h/AirBnB_clone/blob/master/console.py) [/models/engine/file_storage.py](https://github.com/abdalmohsen-h/AirBnB_clone/blob/master/models/engine/file_storage.py) [/models/user.py](https://github.com/abdalmohsen-h/AirBnB_clone/blob/master/models/user.py) | Dynamically implements a user class | | 9. More Classes | [/models/user.py](https://github.com/abdalmohsen-h/AirBnB_clone/blob/master/models/user.py) [/models/place.py](https://github.com/abdalmohsen-h/AirBnB_clone/blob/master/models/place.py) [/models/city.py](https://github.com/abdalmohsen-h/AirBnB_clone/blob/master/models/city.py) [/models/amenity.py](https://github.com/abdalmohsen-h/AirBnB_clone/blob/master/models/amenity.py) [/models/state.py](https://github.com/abdalmohsen-h/AirBnB_clone/blob/master/models/state.py) [/models/review.py](https://github.com/abdalmohsen-h/AirBnB_clone/blob/master/models/review.py) | Dynamically implements more classes | | 10. Console 1.0 | [console.py](https://github.com/abdalmohsen-h/AirBnB_clone/blob/master/console.py) [/models/engine/file_storage.py](https://github.com/abdalmohsen-h/AirBnB_clone/blob/master/models/engine/file_storage.py) | Update the console and file storage system to work dynamically with all classes update file storage |

V2 | Tasks | Files | Description | | ----- | ----- | ------ | | 0: Authors/README File | [AUTHORS](https://github.com/abdalmohsen-h/AirBnB_clone/blob/master/AUTHORS) | Project authors | | 1: Unit Testing and Pep8| [/tests](https://github.com/abdalmohsen-h/AirBnB_clone/tree/master/tests) | All class-defining modules are unittested | | 2. Console improvements| [/tests](https://github.com/abdalmohsen-h/AirBnB_clone/tree/master/tests) | All class-defining modules are unittested | | 3. MySQL setup development | [/models/base_model.py](https://github.com/abdalmohsen-h/AirBnB_clone/blob/master/models/base_model.py) | Defines a parent class to be inherited by all model classes| | 4. MySQL setup test | [/models/base_model.py](https://github.com/abdalmohsen-h/AirBnB_clone/blob/master/models/base_model.py) | Add functionality to recreate an instance of a class from a dictionary representation| | 5. Create method to Delete object from Storage class | [/models/engine/file_storage.py](https://github.com/abdalmohsen-h/AirBnB_clone/blob/master/models/engine/file_storage.py) [/models/_ _init_ _.py](https://github.com/abdalmohsen-h/AirBnB_clone/blob/master/models/__init__.py) [/models/base_model.py](https://github.com/abdalmohsen-h/AirBnB_clone/blob/master/models/base_model.py) | Defines a class to manage persistent file storage system| | 6. DBStorage - States and Cities | [console.py](https://github.com/abdalmohsen-h/AirBnB_clone/blob/master/console.py) | Add basic functionality to console program, allowing it to quit, handle empty lines and ^D | | 7. DBStorage - User | [console.py](https://github.com/abdalmohsen-h/AirBnB_clone/blob/master/console.py) | Update the console with methods allowing the user to create, destroy, show, and update stored data | | 8. DBStorage - Place | [console.py](https://github.com/abdalmohsen-h/AirBnB_clone/blob/master/console.py) [/models/engine/file_storage.py](https://github.com/abdalmohsen-h/AirBnB_clone/blob/master/models/engine/file_storage.py) [/models/user.py](https://github.com/abdalmohsen-h/AirBnB_clone/blob/master/models/user.py) | Dynamically implements a user class | | 9. DBStorage - Review | [/models/user.py](https://github.com/abdalmohsen-h/AirBnB_clone/blob/master/models/user.py) [/models/place.py](https://github.com/abdalmohsen-h/AirBnB_clone/blob/master/models/place.py) [/models/city.py](https://github.com/abdalmohsen-h/AirBnB_clone/blob/master/models/city.py) [/models/amenity.py](https://github.com/abdalmohsen-h/AirBnB_clone/blob/master/models/amenity.py) [/models/state.py](https://github.com/abdalmohsen-h/AirBnB_clone/blob/master/models/state.py) [/models/review.py](https://github.com/abdalmohsen-h/AirBnB_clone/blob/master/models/review.py) | Dynamically implements more classes | | 10. DBStorage - Amenity. and relations! | [console.py](https://github.com/abdalmohsen-h/AirBnB_clone/blob/master/console.py) [/models/engine/file_storage.py](https://github.com/abdalmohsen-h/AirBnB_clone/blob/master/models/engine/file_storage.py) | Update the console and file storage system to work dynamically with all classes update file storage |

General Use

  1. First clone this repository.

  2. Once the repository is cloned locate the "console.py" file and run it as follows:

/AirBnB_clone$ ./console.py
  1. When this command is run the following prompt should appear:
(hbnb)
  1. This prompt designates you are in the "HBnB" console. There are a variety of commands available within the console program.
Commands
* create - Creates an instance based on given class

* destroy - Destroys an object based on class and UUID

* show - Shows an object based on class and UUID

* all - Shows all objects the program has access to, or all objects of a given class

* update - Updates existing attributes an object based on class name and UUID

* quit - Exits the program (EOF will as well)
Alternative Syntax

Users are able to issue a number of console command using an alternative syntax:

Usage: <class_name>.<command>([<id>[name_arg value_arg]|[kwargs]])

Advanced syntax is implemented for the following commands:

* all - Shows all objects the program has access to, or all objects of a given class

* count - Return number of object instances by class

* show - Shows an object based on class and UUID

* destroy - Destroys an object based on class and UUID

* update - Updates existing attributes an object based on class name and UUID


Examples

Primary Command Syntax

Example 0: Create an object

Usage: create <class_name>

(hbnb) create BaseModel
(hbnb) create BaseModel
3aa5babc-efb6-4041-bfe9-3cc9727588f8
(hbnb)                   
Example 1: Show an object

Usage: show <class_name> <_id>

(hbnb) show BaseModel 3aa5babc-efb6-4041-bfe9-3cc9727588f8
[BaseModel] (3aa5babc-efb6-4041-bfe9-3cc9727588f8) {'id': '3aa5babc-efb6-4041-bfe9-3cc9727588f8', 'created_at': datetime.datetime(2020, 2, 18, 14, 21, 12, 96959), 
'updated_at': datetime.datetime(2020, 2, 18, 14, 21, 12, 96971)}
(hbnb)  
Example 2: Destroy an object

Usage: destroy <class_name> <_id>

(hbnb) destroy BaseModel 3aa5babc-efb6-4041-bfe9-3cc9727588f8
(hbnb) show BaseModel 3aa5babc-efb6-4041-bfe9-3cc9727588f8
** no instance found **
(hbnb)   
Example 3: Update an object

Usage: update <class_name> <_id>

(hbnb) update BaseModel b405fc64-9724-498f-b405-e4071c3d857f first_name "person"
(hbnb) show BaseModel b405fc64-9724-498f-b405-e4071c3d857f
[BaseModel] (b405fc64-9724-498f-b405-e4071c3d857f) {'id': 'b405fc64-9724-498f-b405-e4071c3d857f', 'created_at': datetime.datetime(2020, 2, 18, 14, 33, 45, 729889), 
'updated_at': datetime.datetime(2020, 2, 18, 14, 33, 45, 729907), 'first_name': 'person'}
(hbnb)

Alternative Syntax

Example 0: Show all User objects

Usage: <class_name>.all()

(hbnb) User.all()
["[User] (99f45908-1d17-46d1-9dd2-b7571128115b) {'updated_at': datetime.datetime(2020, 2, 19, 21, 47, 34, 92071), 'id': '99f45908-1d17-46d1-9dd2-b7571128115b', 'created_at': datetime.datetime(2020, 2, 19, 21, 47, 34, 92056)}", "[User] (98bea5de-9cb0-4d78-8a9d-c4de03521c30) {'updated_at': datetime.datetime(2020, 2, 19, 21, 47, 29, 134362), 'id': '98bea5de-9cb0-4d78-8a9d-c4de03521c30', 'created_at': datetime.datetime(2020, 2, 19, 21, 47, 29, 134343)}"]
Example 1: Destroy a User

Usage: <class_name>.destroy(<_id>)

(hbnb) User.destroy("99f45908-1d17-46d1-9dd2-b7571128115b")
(hbnb)
(hbnb) User.all()
(hbnb) ["[User] (98bea5de-9cb0-4d78-8a9d-c4de03521c30) {'updated_at': datetime.datetime(2020, 2, 19, 21, 47, 29, 134362), 'id': '98bea5de-9cb0-4d78-8a9d-c4de03521c30', 'created_at': datetime.datetime(2020, 2, 19, 21, 47, 29, 134343)}"]
Example 2: Update User (by attribute)

Usage: <class_name>.update(<_id>, <attribute_name>, <attribute_value>)

(hbnb) User.update("98bea5de-9cb0-4d78-8a9d-c4de03521c30", name "Todd the Toad")
(hbnb)
(hbnb) User.all()
(hbnb) ["[User] (98bea5de-9cb0-4d78-8a9d-c4de03521c30) {'updated_at': datetime.datetime(2020, 2, 19, 21, 47, 29, 134362), 'id': '98bea5de-9cb0-4d78-8a9d-c4de03521c30', 'name': 'Todd the Toad', 'created_at': datetime.datetime(2020, 2, 19, 21, 47, 29, 134343)}"]
Example 3: Update User (by dictionary)

Usage: <class_name>.update(<_id>, )

(hbnb) User.update("98bea5de-9cb0-4d78-8a9d-c4de03521c30", {'name': 'Fred the Frog', 'age': 9})
(hbnb)
(hbnb) User.all()
(hbnb) ["[User] (98bea5de-9cb0-4d78-8a9d-c4de03521c30) {'updated_at': datetime.datetime(2020, 2, 19, 21, 47, 29, 134362), 'name': 'Fred the Frog', 'age': 9, 'id': '98bea5de-9cb0-4d78-8a9d-c4de03521c30', 'created_at': datetime.datetime(2020, 2, 19, 21, 47, 29, 134343)}"]

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.