├── .gitignore ├── Procfile ├── README.md ├── manage.py ├── requirements.txt ├── requirements_base.txt ├── starwars ├── __init__.py ├── admin.py ├── fixtures │ ├── films.json │ ├── people.json │ ├── planets.json │ ├── species.json │ ├── starships.json │ ├── transport.json │ └── vehicles.json ├── migrations │ ├── 0001_initial.py │ ├── 0002_data.py │ ├── 0003_hero.py │ └── __init__.py ├── models.py ├── schema.py ├── static │ ├── favicon.png │ ├── starwars.min.svg │ ├── starwars.svg │ ├── style.css │ └── vader_background.png ├── templates │ └── index.html ├── urls.py └── views.py └── swapi_graphene ├── __init__.py ├── settings.py ├── settings_prod.py ├── urls.py └── wsgi.py /.gitignore: -------------------------------------------------------------------------------- 1 | # Created by https://www.gitignore.io 2 | 3 | db.sqlite3 4 | 5 | ### Python ### 6 | # Byte-compiled / optimized / DLL files 7 | __pycache__/ 8 | *.py[cod] 9 | 10 | # C extensions 11 | *.so 12 | 13 | # Graphene schema 14 | schema.json 15 | 16 | # Distribution / packaging 17 | .Python 18 | env/ 19 | build/ 20 | develop-eggs/ 21 | dist/ 22 | downloads/ 23 | eggs/ 24 | .eggs/ 25 | lib/ 26 | lib64/ 27 | parts/ 28 | sdist/ 29 | var/ 30 | *.egg-info/ 31 | .installed.cfg 32 | *.egg 33 | 34 | # PyInstaller 35 | # Usually these files are written by a python script from a template 36 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 37 | *.manifest 38 | *.spec 39 | 40 | # Installer logs 41 | pip-log.txt 42 | pip-delete-this-directory.txt 43 | 44 | # Unit test / coverage reports 45 | htmlcov/ 46 | .tox/ 47 | .coverage 48 | .coverage.* 49 | .cache 50 | nosetests.xml 51 | coverage.xml 52 | *,cover 53 | 54 | # Translations 55 | *.mo 56 | *.pot 57 | 58 | # Django stuff: 59 | *.log 60 | 61 | # Sphinx documentation 62 | docs/_build/ 63 | 64 | # PyBuilder 65 | target/ 66 | 67 | /static/ 68 | -------------------------------------------------------------------------------- /Procfile: -------------------------------------------------------------------------------- 1 | web: gunicorn swapi_graphene.wsgi --log-file - 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # GraphQL SWAPI using Graphene 2 | 3 | This is a integration example of [Graphene](http://graphene-python.org) in Django. 4 | [View demo](http://swapi.graphene-python.org/) 5 | 6 | 7 | ## Structure 8 | 9 | All the [models](./starwars/models.py) and [fixtures](./starwars/fixtures/) are based in the original [swapi project](https://github.com/phalt/swapi). 10 | 11 | The schema (*where all the magic happens*) is in [starwars/schema.py](./starwars/schema.py). 12 | > Look ma, a GraphQL integration with Django models in less than 150 LOC! 13 | 14 | 15 | ## Deploying locally 16 | 17 | You can also have your own GraphQL Starwars example running on locally. 18 | Just run the following commands and you'll be all set! 19 | 20 | ```bash 21 | git clone git@github.com:graphql-python/swapi-graphene.git 22 | cd swapi-graphene 23 | 24 | # Install the requirements 25 | pip install -r requirements_base.txt 26 | 27 | # Collect static data 28 | python manage.py collectstatic 29 | 30 | # Setup the db and load the fixtures 31 | python manage.py migrate 32 | ``` 33 | 34 | Once you have everything done, just run: 35 | 36 | ```bash 37 | python manage.py runserver 38 | ``` 39 | 40 | Open your browser and visit [localhost:8080](http://localhost:8080/) et voilá! 41 | 42 | 43 | ## Deploying on [Heroku](http://heroku.com) 44 | 45 | To get your own GraphQL Starwars example running on Heroku, click the button below: 46 | 47 | [](https://heroku.com/deploy?template=https://github.com/graphql-python/swapi-graphene) 48 | 49 | Fill out the form, and you should be cooking with gas in a few seconds. 50 | -------------------------------------------------------------------------------- /manage.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | import os 3 | import sys 4 | 5 | if __name__ == "__main__": 6 | os.environ.setdefault("DJANGO_SETTINGS_MODULE", "swapi_graphene.settings") 7 | 8 | from django.core.management import execute_from_command_line 9 | 10 | execute_from_command_line(sys.argv) 11 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | -r requirements_base.txt 2 | 3 | # The production required packages 4 | 5 | gunicorn==19.3.0 6 | MySQL-python 7 | -------------------------------------------------------------------------------- /requirements_base.txt: -------------------------------------------------------------------------------- 1 | Django==1.11.13 2 | graphene-django>=2.1rc1 3 | django-filter==1.1.0 4 | django-environ==0.4.4 5 | # debug_toolbar 6 | -------------------------------------------------------------------------------- /starwars/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graphql-python/swapi-graphene/5d92929640c6280ffd8f4f56f6f2361b4246939b/starwars/__init__.py -------------------------------------------------------------------------------- /starwars/admin.py: -------------------------------------------------------------------------------- 1 | from __future__ import unicode_literals 2 | 3 | from django.contrib import admin, messages 4 | 5 | from .models import ( 6 | People, 7 | Planet, 8 | Film, 9 | Starship, 10 | Vehicle, 11 | Species, 12 | Hero, 13 | ) 14 | 15 | classes = [People, Planet, Film, Starship, Vehicle, Species, Hero] 16 | 17 | 18 | class ModelAdmin(admin.ModelAdmin): 19 | def save_model(self, request, obj, form, change): 20 | if not request.user.is_superuser: 21 | messages.error(request, "Only superusers can change models") 22 | return False 23 | return super(ModelAdmin, self).save_model(request, obj, form, change) 24 | 25 | for c in classes: 26 | admin.site.register(c, ModelAdmin) 27 | -------------------------------------------------------------------------------- /starwars/fixtures/films.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "fields": { 4 | "starships": [ 5 | 2, 6 | 3, 7 | 5, 8 | 9, 9 | 10, 10 | 11, 11 | 12, 12 | 13 13 | ], 14 | "edited": "2014-12-20T19:49:45.256Z", 15 | "vehicles": [ 16 | 4, 17 | 6, 18 | 7, 19 | 8 20 | ], 21 | "planets": [ 22 | 1, 23 | 2, 24 | 3 25 | ], 26 | "producer": "Gary Kurtz, Rick McCallum", 27 | "title": "A New Hope", 28 | "created": "2014-12-10T14:23:31.880Z", 29 | "episode_id": 4, 30 | "director": "George Lucas", 31 | "release_date": "1977-05-25", 32 | "opening_crawl": "It is a period of civil war.\r\nRebel spaceships, striking\r\nfrom a hidden base, have won\r\ntheir first victory against\r\nthe evil Galactic Empire.\r\n\r\nDuring the battle, Rebel\r\nspies managed to steal secret\r\nplans to the Empire's\r\nultimate weapon, the DEATH\r\nSTAR, an armored space\r\nstation with enough power\r\nto destroy an entire planet.\r\n\r\nPursued by the Empire's\r\nsinister agents, Princess\r\nLeia races home aboard her\r\nstarship, custodian of the\r\nstolen plans that can save her\r\npeople and restore\r\nfreedom to the galaxy....", 33 | "characters": [ 34 | 1, 35 | 2, 36 | 3, 37 | 4, 38 | 5, 39 | 6, 40 | 7, 41 | 8, 42 | 9, 43 | 10, 44 | 12, 45 | 13, 46 | 14, 47 | 15, 48 | 16, 49 | 18, 50 | 19, 51 | 81 52 | ], 53 | "species": [ 54 | 1, 55 | 2, 56 | 3, 57 | 4, 58 | 5 59 | ] 60 | }, 61 | "model": "starwars.film", 62 | "pk": 1 63 | }, 64 | { 65 | "fields": { 66 | "starships": [ 67 | 3, 68 | 10, 69 | 11, 70 | 12, 71 | 15, 72 | 17, 73 | 21, 74 | 22, 75 | 23 76 | ], 77 | "edited": "2014-12-15T13:07:53.386Z", 78 | "vehicles": [ 79 | 8, 80 | 14, 81 | 16, 82 | 18, 83 | 19, 84 | 20 85 | ], 86 | "planets": [ 87 | 4, 88 | 5, 89 | 6, 90 | 27 91 | ], 92 | "producer": "Gary Kutz, Rick McCallum", 93 | "title": "The Empire Strikes Back", 94 | "created": "2014-12-12T11:26:24.656Z", 95 | "episode_id": 5, 96 | "director": "Irvin Kershner", 97 | "release_date": "1980-05-17", 98 | "opening_crawl": "It is a dark time for the\r\nRebellion. Although the Death\r\nStar has been destroyed,\r\nImperial troops have driven the\r\nRebel forces from their hidden\r\nbase and pursued them across\r\nthe galaxy.\r\n\r\nEvading the dreaded Imperial\r\nStarfleet, a group of freedom\r\nfighters led by Luke Skywalker\r\nhas established a new secret\r\nbase on the remote ice world\r\nof Hoth.\r\n\r\nThe evil lord Darth Vader,\r\nobsessed with finding young\r\nSkywalker, has dispatched\r\nthousands of remote probes into\r\nthe far reaches of space....", 99 | "characters": [ 100 | 1, 101 | 2, 102 | 3, 103 | 4, 104 | 5, 105 | 10, 106 | 13, 107 | 14, 108 | 18, 109 | 20, 110 | 21, 111 | 22, 112 | 23, 113 | 24, 114 | 25, 115 | 26 116 | ], 117 | "species": [ 118 | 1, 119 | 2, 120 | 3, 121 | 6, 122 | 7 123 | ] 124 | }, 125 | "model": "starwars.film", 126 | "pk": 2 127 | }, 128 | { 129 | "fields": { 130 | "starships": [ 131 | 2, 132 | 3, 133 | 10, 134 | 11, 135 | 12, 136 | 15, 137 | 17, 138 | 22, 139 | 23, 140 | 27, 141 | 28, 142 | 29 143 | ], 144 | "edited": "2014-12-20T09:48:37.462Z", 145 | "vehicles": [ 146 | 8, 147 | 16, 148 | 18, 149 | 19, 150 | 24, 151 | 25, 152 | 26, 153 | 30 154 | ], 155 | "planets": [ 156 | 1, 157 | 5, 158 | 7, 159 | 8, 160 | 9 161 | ], 162 | "producer": "Howard G. Kazanjian, George Lucas, Rick McCallum", 163 | "title": "Return of the Jedi", 164 | "created": "2014-12-18T10:39:33.255Z", 165 | "episode_id": 6, 166 | "director": "Richard Marquand", 167 | "release_date": "1983-05-25", 168 | "opening_crawl": "Luke Skywalker has returned to\r\nhis home planet of Tatooine in\r\nan attempt to rescue his\r\nfriend Han Solo from the\r\nclutches of the vile gangster\r\nJabba the Hutt.\r\n\r\nLittle does Luke know that the\r\nGALACTIC EMPIRE has secretly\r\nbegun construction on a new\r\narmored space station even\r\nmore powerful than the first\r\ndreaded Death Star.\r\n\r\nWhen completed, this ultimate\r\nweapon will spell certain doom\r\nfor the small band of rebels\r\nstruggling to restore freedom\r\nto the galaxy...", 169 | "characters": [ 170 | 1, 171 | 2, 172 | 3, 173 | 4, 174 | 5, 175 | 10, 176 | 13, 177 | 14, 178 | 16, 179 | 18, 180 | 20, 181 | 21, 182 | 22, 183 | 25, 184 | 27, 185 | 28, 186 | 29, 187 | 30, 188 | 31, 189 | 45 190 | ], 191 | "species": [ 192 | 1, 193 | 2, 194 | 3, 195 | 5, 196 | 6, 197 | 8, 198 | 9, 199 | 10, 200 | 15 201 | ] 202 | }, 203 | "model": "starwars.film", 204 | "pk": 3 205 | }, 206 | { 207 | "fields": { 208 | "starships": [ 209 | 31, 210 | 32, 211 | 39, 212 | 40, 213 | 41 214 | ], 215 | "edited": "2014-12-20T10:54:07.216Z", 216 | "vehicles": [ 217 | 33, 218 | 34, 219 | 35, 220 | 36, 221 | 37, 222 | 38, 223 | 42 224 | ], 225 | "planets": [ 226 | 1, 227 | 8, 228 | 9 229 | ], 230 | "producer": "Rick McCallum", 231 | "title": "The Phantom Menace", 232 | "created": "2014-12-19T16:52:55.740Z", 233 | "episode_id": 1, 234 | "director": "George Lucas", 235 | "release_date": "1999-05-19", 236 | "opening_crawl": "Turmoil has engulfed the\r\nGalactic Republic. The taxation\r\nof trade routes to outlying star\r\nsystems is in dispute.\r\n\r\nHoping to resolve the matter\r\nwith a blockade of deadly\r\nbattleships, the greedy Trade\r\nFederation has stopped all\r\nshipping to the small planet\r\nof Naboo.\r\n\r\nWhile the Congress of the\r\nRepublic endlessly debates\r\nthis alarming chain of events,\r\nthe Supreme Chancellor has\r\nsecretly dispatched two Jedi\r\nKnights, the guardians of\r\npeace and justice in the\r\ngalaxy, to settle the conflict....", 237 | "characters": [ 238 | 2, 239 | 3, 240 | 10, 241 | 11, 242 | 16, 243 | 20, 244 | 21, 245 | 32, 246 | 33, 247 | 34, 248 | 35, 249 | 36, 250 | 37, 251 | 38, 252 | 39, 253 | 40, 254 | 41, 255 | 42, 256 | 43, 257 | 44, 258 | 46, 259 | 47, 260 | 48, 261 | 49, 262 | 50, 263 | 51, 264 | 52, 265 | 53, 266 | 54, 267 | 55, 268 | 56, 269 | 57, 270 | 58, 271 | 59 272 | ], 273 | "species": [ 274 | 1, 275 | 2, 276 | 6, 277 | 11, 278 | 12, 279 | 13, 280 | 14, 281 | 15, 282 | 16, 283 | 17, 284 | 18, 285 | 19, 286 | 20, 287 | 21, 288 | 22, 289 | 23, 290 | 24, 291 | 25, 292 | 26, 293 | 27 294 | ] 295 | }, 296 | "model": "starwars.film", 297 | "pk": 4 298 | }, 299 | { 300 | "fields": { 301 | "starships": [ 302 | 21, 303 | 32, 304 | 39, 305 | 43, 306 | 47, 307 | 48, 308 | 49, 309 | 52, 310 | 58 311 | ], 312 | "edited": "2014-12-20T20:18:48.516Z", 313 | "vehicles": [ 314 | 4, 315 | 44, 316 | 45, 317 | 46, 318 | 50, 319 | 51, 320 | 53, 321 | 54, 322 | 55, 323 | 56, 324 | 57 325 | ], 326 | "planets": [ 327 | 1, 328 | 8, 329 | 9, 330 | 10, 331 | 11 332 | ], 333 | "producer": "Rick McCallum", 334 | "title": "Attack of the Clones", 335 | "created": "2014-12-20T10:57:57.886Z", 336 | "episode_id": 2, 337 | "director": "George Lucas", 338 | "release_date": "2002-05-16", 339 | "opening_crawl": "There is unrest in the Galactic\r\nSenate. Several thousand solar\r\nsystems have declared their\r\nintentions to leave the Republic.\r\n\r\nThis separatist movement,\r\nunder the leadership of the\r\nmysterious Count Dooku, has\r\nmade it difficult for the limited\r\nnumber of Jedi Knights to maintain \r\npeace and order in the galaxy.\r\n\r\nSenator Amidala, the former\r\nQueen of Naboo, is returning\r\nto the Galactic Senate to vote\r\non the critical issue of creating\r\nan ARMY OF THE REPUBLIC\r\nto assist the overwhelmed\r\nJedi....", 340 | "characters": [ 341 | 2, 342 | 3, 343 | 6, 344 | 7, 345 | 10, 346 | 11, 347 | 20, 348 | 21, 349 | 22, 350 | 33, 351 | 35, 352 | 36, 353 | 40, 354 | 43, 355 | 46, 356 | 51, 357 | 52, 358 | 53, 359 | 58, 360 | 59, 361 | 60, 362 | 61, 363 | 62, 364 | 63, 365 | 64, 366 | 65, 367 | 66, 368 | 67, 369 | 68, 370 | 69, 371 | 70, 372 | 71, 373 | 72, 374 | 73, 375 | 74, 376 | 75, 377 | 76, 378 | 77, 379 | 78, 380 | 82 381 | ], 382 | "species": [ 383 | 1, 384 | 2, 385 | 6, 386 | 12, 387 | 13, 388 | 15, 389 | 28, 390 | 29, 391 | 30, 392 | 31, 393 | 32, 394 | 33, 395 | 34, 396 | 35 397 | ] 398 | }, 399 | "model": "starwars.film", 400 | "pk": 5 401 | }, 402 | { 403 | "fields": { 404 | "starships": [ 405 | 2, 406 | 32, 407 | 48, 408 | 59, 409 | 61, 410 | 63, 411 | 64, 412 | 65, 413 | 66, 414 | 68, 415 | 74, 416 | 75 417 | ], 418 | "edited": "2014-12-20T20:47:52.073Z", 419 | "vehicles": [ 420 | 33, 421 | 50, 422 | 53, 423 | 56, 424 | 60, 425 | 62, 426 | 67, 427 | 69, 428 | 70, 429 | 71, 430 | 72, 431 | 73, 432 | 76 433 | ], 434 | "planets": [ 435 | 1, 436 | 2, 437 | 5, 438 | 8, 439 | 9, 440 | 12, 441 | 13, 442 | 14, 443 | 15, 444 | 16, 445 | 17, 446 | 18, 447 | 19 448 | ], 449 | "producer": "Rick McCallum", 450 | "title": "Revenge of the Sith", 451 | "created": "2014-12-20T18:49:38.403Z", 452 | "episode_id": 3, 453 | "director": "George Lucas", 454 | "release_date": "2005-05-19", 455 | "opening_crawl": "War! The Republic is crumbling\r\nunder attacks by the ruthless\r\nSith Lord, Count Dooku.\r\nThere are heroes on both sides.\r\nEvil is everywhere.\r\n\r\nIn a stunning move, the\r\nfiendish droid leader, General\r\nGrievous, has swept into the\r\nRepublic capital and kidnapped\r\nChancellor Palpatine, leader of\r\nthe Galactic Senate.\r\n\r\nAs the Separatist Droid Army\r\nattempts to flee the besieged\r\ncapital with their valuable\r\nhostage, two Jedi Knights lead a\r\ndesperate mission to rescue the\r\ncaptive Chancellor....", 456 | "characters": [ 457 | 1, 458 | 2, 459 | 3, 460 | 4, 461 | 5, 462 | 6, 463 | 7, 464 | 10, 465 | 11, 466 | 12, 467 | 13, 468 | 20, 469 | 21, 470 | 33, 471 | 35, 472 | 46, 473 | 51, 474 | 52, 475 | 53, 476 | 54, 477 | 55, 478 | 56, 479 | 58, 480 | 63, 481 | 64, 482 | 67, 483 | 68, 484 | 75, 485 | 78, 486 | 79, 487 | 80, 488 | 81, 489 | 82, 490 | 83 491 | ], 492 | "species": [ 493 | 1, 494 | 2, 495 | 3, 496 | 6, 497 | 15, 498 | 19, 499 | 20, 500 | 23, 501 | 24, 502 | 25, 503 | 26, 504 | 27, 505 | 28, 506 | 29, 507 | 30, 508 | 33, 509 | 34, 510 | 35, 511 | 36, 512 | 37 513 | ] 514 | }, 515 | "model": "starwars.film", 516 | "pk": 6 517 | } 518 | ] 519 | -------------------------------------------------------------------------------- /starwars/fixtures/people.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "fields": { 4 | "edited": "2014-12-20T21:17:56.891Z", 5 | "name": "Luke Skywalker", 6 | "created": "2014-12-09T13:50:51.644Z", 7 | "gender": "male", 8 | "skin_color": "fair", 9 | "hair_color": "blond", 10 | "height": "172", 11 | "eye_color": "blue", 12 | "mass": "77", 13 | "homeworld": 1, 14 | "birth_year": "19BBY" 15 | }, 16 | "model": "starwars.people", 17 | "pk": 1 18 | }, 19 | { 20 | "fields": { 21 | "edited": "2014-12-20T21:17:50.309Z", 22 | "name": "C-3PO", 23 | "created": "2014-12-10T15:10:51.357Z", 24 | "gender": "n/a", 25 | "skin_color": "gold", 26 | "hair_color": "n/a", 27 | "height": "167", 28 | "eye_color": "yellow", 29 | "mass": "75", 30 | "homeworld": 1, 31 | "birth_year": "112BBY" 32 | }, 33 | "model": "starwars.people", 34 | "pk": 2 35 | }, 36 | { 37 | "fields": { 38 | "edited": "2014-12-20T21:17:50.311Z", 39 | "name": "R2-D2", 40 | "created": "2014-12-10T15:11:50.376Z", 41 | "gender": "n/a", 42 | "skin_color": "white, blue", 43 | "hair_color": "n/a", 44 | "height": "96", 45 | "eye_color": "red", 46 | "mass": "32", 47 | "homeworld": 8, 48 | "birth_year": "33BBY" 49 | }, 50 | "model": "starwars.people", 51 | "pk": 3 52 | }, 53 | { 54 | "fields": { 55 | "edited": "2014-12-20T21:17:50.313Z", 56 | "name": "Darth Vader", 57 | "created": "2014-12-10T15:18:20.704Z", 58 | "gender": "male", 59 | "skin_color": "white", 60 | "hair_color": "none", 61 | "height": "202", 62 | "eye_color": "yellow", 63 | "mass": "136", 64 | "homeworld": 1, 65 | "birth_year": "41.9BBY" 66 | }, 67 | "model": "starwars.people", 68 | "pk": 4 69 | }, 70 | { 71 | "fields": { 72 | "edited": "2014-12-20T21:17:50.315Z", 73 | "name": "Leia Organa", 74 | "created": "2014-12-10T15:20:09.791Z", 75 | "gender": "female", 76 | "skin_color": "light", 77 | "hair_color": "brown", 78 | "height": "150", 79 | "eye_color": "brown", 80 | "mass": "49", 81 | "homeworld": 2, 82 | "birth_year": "19BBY" 83 | }, 84 | "model": "starwars.people", 85 | "pk": 5 86 | }, 87 | { 88 | "fields": { 89 | "edited": "2014-12-20T21:17:50.317Z", 90 | "name": "Owen Lars", 91 | "created": "2014-12-10T15:52:14.024Z", 92 | "gender": "male", 93 | "skin_color": "light", 94 | "hair_color": "brown, grey", 95 | "height": "178", 96 | "eye_color": "blue", 97 | "mass": "120", 98 | "homeworld": 1, 99 | "birth_year": "52BBY" 100 | }, 101 | "model": "starwars.people", 102 | "pk": 6 103 | }, 104 | { 105 | "fields": { 106 | "edited": "2014-12-20T21:17:50.319Z", 107 | "name": "Beru Whitesun lars", 108 | "created": "2014-12-10T15:53:41.121Z", 109 | "gender": "female", 110 | "skin_color": "light", 111 | "hair_color": "brown", 112 | "height": "165", 113 | "eye_color": "blue", 114 | "mass": "75", 115 | "homeworld": 1, 116 | "birth_year": "47BBY" 117 | }, 118 | "model": "starwars.people", 119 | "pk": 7 120 | }, 121 | { 122 | "fields": { 123 | "edited": "2014-12-20T21:17:50.321Z", 124 | "name": "R5-D4", 125 | "created": "2014-12-10T15:57:50.959Z", 126 | "gender": "n/a", 127 | "skin_color": "white, red", 128 | "hair_color": "n/a", 129 | "height": "97", 130 | "eye_color": "red", 131 | "mass": "32", 132 | "homeworld": 1, 133 | "birth_year": "unknown" 134 | }, 135 | "model": "starwars.people", 136 | "pk": 8 137 | }, 138 | { 139 | "fields": { 140 | "edited": "2014-12-20T21:17:50.323Z", 141 | "name": "Biggs Darklighter", 142 | "created": "2014-12-10T15:59:50.509Z", 143 | "gender": "male", 144 | "skin_color": "light", 145 | "hair_color": "black", 146 | "height": "183", 147 | "eye_color": "brown", 148 | "mass": "84", 149 | "homeworld": 1, 150 | "birth_year": "24BBY" 151 | }, 152 | "model": "starwars.people", 153 | "pk": 9 154 | }, 155 | { 156 | "fields": { 157 | "edited": "2014-12-20T21:17:50.325Z", 158 | "name": "Obi-Wan Kenobi", 159 | "created": "2014-12-10T16:16:29.192Z", 160 | "gender": "male", 161 | "skin_color": "fair", 162 | "hair_color": "auburn, white", 163 | "height": "182", 164 | "eye_color": "blue-gray", 165 | "mass": "77", 166 | "homeworld": 20, 167 | "birth_year": "57BBY" 168 | }, 169 | "model": "starwars.people", 170 | "pk": 10 171 | }, 172 | { 173 | "fields": { 174 | "edited": "2014-12-20T21:17:50.327Z", 175 | "name": "Anakin Skywalker", 176 | "created": "2014-12-10T16:20:44.310Z", 177 | "gender": "male", 178 | "skin_color": "fair", 179 | "hair_color": "blond", 180 | "height": "188", 181 | "eye_color": "blue", 182 | "mass": "84", 183 | "homeworld": 1, 184 | "birth_year": "41.9BBY" 185 | }, 186 | "model": "starwars.people", 187 | "pk": 11 188 | }, 189 | { 190 | "fields": { 191 | "edited": "2014-12-20T21:17:50.330Z", 192 | "name": "Wilhuff Tarkin", 193 | "created": "2014-12-10T16:26:56.138Z", 194 | "gender": "male", 195 | "skin_color": "fair", 196 | "hair_color": "auburn, grey", 197 | "height": "180", 198 | "eye_color": "blue", 199 | "mass": "unknown", 200 | "homeworld": 21, 201 | "birth_year": "64BBY" 202 | }, 203 | "model": "starwars.people", 204 | "pk": 12 205 | }, 206 | { 207 | "fields": { 208 | "edited": "2014-12-20T21:17:50.332Z", 209 | "name": "Chewbacca", 210 | "created": "2014-12-10T16:42:45.066Z", 211 | "gender": "male", 212 | "skin_color": "unknown", 213 | "hair_color": "brown", 214 | "height": "228", 215 | "eye_color": "blue", 216 | "mass": "112", 217 | "homeworld": 14, 218 | "birth_year": "200BBY" 219 | }, 220 | "model": "starwars.people", 221 | "pk": 13 222 | }, 223 | { 224 | "fields": { 225 | "edited": "2014-12-20T21:17:50.334Z", 226 | "name": "Han Solo", 227 | "created": "2014-12-10T16:49:14.582Z", 228 | "gender": "male", 229 | "skin_color": "fair", 230 | "hair_color": "brown", 231 | "height": "180", 232 | "eye_color": "brown", 233 | "mass": "80", 234 | "homeworld": 22, 235 | "birth_year": "29BBY" 236 | }, 237 | "model": "starwars.people", 238 | "pk": 14 239 | }, 240 | { 241 | "fields": { 242 | "edited": "2014-12-20T21:17:50.336Z", 243 | "name": "Greedo", 244 | "created": "2014-12-10T17:03:30.334Z", 245 | "gender": "male", 246 | "skin_color": "green", 247 | "hair_color": "n/a", 248 | "height": "173", 249 | "eye_color": "black", 250 | "mass": "74", 251 | "homeworld": 23, 252 | "birth_year": "44BBY" 253 | }, 254 | "model": "starwars.people", 255 | "pk": 15 256 | }, 257 | { 258 | "fields": { 259 | "edited": "2014-12-20T21:17:50.338Z", 260 | "name": "Jabba Desilijic Tiure", 261 | "created": "2014-12-10T17:11:31.638Z", 262 | "gender": "hermaphrodite", 263 | "skin_color": "green-tan, brown", 264 | "hair_color": "n/a", 265 | "height": "175", 266 | "eye_color": "orange", 267 | "mass": "1,358", 268 | "homeworld": 24, 269 | "birth_year": "600BBY" 270 | }, 271 | "model": "starwars.people", 272 | "pk": 16 273 | }, 274 | { 275 | "fields": { 276 | "edited": "2014-12-20T21:17:50.341Z", 277 | "name": "Wedge Antilles", 278 | "created": "2014-12-12T11:08:06.469Z", 279 | "gender": "male", 280 | "skin_color": "fair", 281 | "hair_color": "brown", 282 | "height": "170", 283 | "eye_color": "hazel", 284 | "mass": "77", 285 | "homeworld": 22, 286 | "birth_year": "21BBY" 287 | }, 288 | "model": "starwars.people", 289 | "pk": 18 290 | }, 291 | { 292 | "fields": { 293 | "edited": "2014-12-20T21:17:50.343Z", 294 | "name": "Jek Tono Porkins", 295 | "created": "2014-12-12T11:16:56.569Z", 296 | "gender": "male", 297 | "skin_color": "fair", 298 | "hair_color": "brown", 299 | "height": "180", 300 | "eye_color": "blue", 301 | "mass": "110", 302 | "homeworld": 26, 303 | "birth_year": "unknown" 304 | }, 305 | "model": "starwars.people", 306 | "pk": 19 307 | }, 308 | { 309 | "fields": { 310 | "edited": "2014-12-20T21:17:50.345Z", 311 | "name": "Yoda", 312 | "created": "2014-12-15T12:26:01.042Z", 313 | "gender": "male", 314 | "skin_color": "green", 315 | "hair_color": "white", 316 | "height": "66", 317 | "eye_color": "brown", 318 | "mass": "17", 319 | "homeworld": 28, 320 | "birth_year": "896BBY" 321 | }, 322 | "model": "starwars.people", 323 | "pk": 20 324 | }, 325 | { 326 | "fields": { 327 | "edited": "2014-12-20T21:17:50.347Z", 328 | "name": "Palpatine", 329 | "created": "2014-12-15T12:48:05.971Z", 330 | "gender": "male", 331 | "skin_color": "pale", 332 | "hair_color": "grey", 333 | "height": "170", 334 | "eye_color": "yellow", 335 | "mass": "75", 336 | "homeworld": 8, 337 | "birth_year": "82BBY" 338 | }, 339 | "model": "starwars.people", 340 | "pk": 21 341 | }, 342 | { 343 | "fields": { 344 | "edited": "2014-12-20T21:17:50.349Z", 345 | "name": "Boba Fett", 346 | "created": "2014-12-15T12:49:32.457Z", 347 | "gender": "male", 348 | "skin_color": "fair", 349 | "hair_color": "black", 350 | "height": "183", 351 | "eye_color": "brown", 352 | "mass": "78.2", 353 | "homeworld": 10, 354 | "birth_year": "31.5BBY" 355 | }, 356 | "model": "starwars.people", 357 | "pk": 22 358 | }, 359 | { 360 | "fields": { 361 | "edited": "2014-12-20T21:17:50.351Z", 362 | "name": "IG-88", 363 | "created": "2014-12-15T12:51:10.076Z", 364 | "gender": "none", 365 | "skin_color": "metal", 366 | "hair_color": "none", 367 | "height": "200", 368 | "eye_color": "red", 369 | "mass": "140", 370 | "homeworld": 28, 371 | "birth_year": "15BBY" 372 | }, 373 | "model": "starwars.people", 374 | "pk": 23 375 | }, 376 | { 377 | "fields": { 378 | "edited": "2014-12-20T21:17:50.355Z", 379 | "name": "Bossk", 380 | "created": "2014-12-15T12:53:49.297Z", 381 | "gender": "male", 382 | "skin_color": "green", 383 | "hair_color": "none", 384 | "height": "190", 385 | "eye_color": "red", 386 | "mass": "113", 387 | "homeworld": 29, 388 | "birth_year": "53BBY" 389 | }, 390 | "model": "starwars.people", 391 | "pk": 24 392 | }, 393 | { 394 | "fields": { 395 | "edited": "2014-12-20T21:17:50.357Z", 396 | "name": "Lando Calrissian", 397 | "created": "2014-12-15T12:56:32.683Z", 398 | "gender": "male", 399 | "skin_color": "dark", 400 | "hair_color": "black", 401 | "height": "177", 402 | "eye_color": "brown", 403 | "mass": "79", 404 | "homeworld": 30, 405 | "birth_year": "31BBY" 406 | }, 407 | "model": "starwars.people", 408 | "pk": 25 409 | }, 410 | { 411 | "fields": { 412 | "edited": "2014-12-20T21:17:50.359Z", 413 | "name": "Lobot", 414 | "created": "2014-12-15T13:01:57.178Z", 415 | "gender": "male", 416 | "skin_color": "light", 417 | "hair_color": "none", 418 | "height": "175", 419 | "eye_color": "blue", 420 | "mass": "79", 421 | "homeworld": 6, 422 | "birth_year": "37BBY" 423 | }, 424 | "model": "starwars.people", 425 | "pk": 26 426 | }, 427 | { 428 | "fields": { 429 | "edited": "2014-12-20T21:17:50.362Z", 430 | "name": "Ackbar", 431 | "created": "2014-12-18T11:07:50.584Z", 432 | "gender": "male", 433 | "skin_color": "brown mottle", 434 | "hair_color": "none", 435 | "height": "180", 436 | "eye_color": "orange", 437 | "mass": "83", 438 | "homeworld": 31, 439 | "birth_year": "41BBY" 440 | }, 441 | "model": "starwars.people", 442 | "pk": 27 443 | }, 444 | { 445 | "fields": { 446 | "edited": "2014-12-20T21:17:50.364Z", 447 | "name": "Mon Mothma", 448 | "created": "2014-12-18T11:12:38.895Z", 449 | "gender": "female", 450 | "skin_color": "fair", 451 | "hair_color": "auburn", 452 | "height": "150", 453 | "eye_color": "blue", 454 | "mass": "unknown", 455 | "homeworld": 32, 456 | "birth_year": "48BBY" 457 | }, 458 | "model": "starwars.people", 459 | "pk": 28 460 | }, 461 | { 462 | "fields": { 463 | "edited": "2014-12-20T21:17:50.367Z", 464 | "name": "Arvel Crynyd", 465 | "created": "2014-12-18T11:16:33.020Z", 466 | "gender": "male", 467 | "skin_color": "fair", 468 | "hair_color": "brown", 469 | "height": "unknown", 470 | "eye_color": "brown", 471 | "mass": "unknown", 472 | "homeworld": 28, 473 | "birth_year": "unknown" 474 | }, 475 | "model": "starwars.people", 476 | "pk": 29 477 | }, 478 | { 479 | "fields": { 480 | "edited": "2014-12-20T21:17:50.369Z", 481 | "name": "Wicket Systri Warrick", 482 | "created": "2014-12-18T11:21:58.954Z", 483 | "gender": "male", 484 | "skin_color": "brown", 485 | "hair_color": "brown", 486 | "height": "88", 487 | "eye_color": "brown", 488 | "mass": "20", 489 | "homeworld": 7, 490 | "birth_year": "8BBY" 491 | }, 492 | "model": "starwars.people", 493 | "pk": 30 494 | }, 495 | { 496 | "fields": { 497 | "edited": "2014-12-20T21:17:50.371Z", 498 | "name": "Nien Nunb", 499 | "created": "2014-12-18T11:26:18.541Z", 500 | "gender": "male", 501 | "skin_color": "grey", 502 | "hair_color": "none", 503 | "height": "160", 504 | "eye_color": "black", 505 | "mass": "68", 506 | "homeworld": 33, 507 | "birth_year": "unknown" 508 | }, 509 | "model": "starwars.people", 510 | "pk": 31 511 | }, 512 | { 513 | "fields": { 514 | "edited": "2014-12-20T21:17:50.375Z", 515 | "name": "Qui-Gon Jinn", 516 | "created": "2014-12-19T16:54:53.618Z", 517 | "gender": "male", 518 | "skin_color": "fair", 519 | "hair_color": "brown", 520 | "height": "193", 521 | "eye_color": "blue", 522 | "mass": "89", 523 | "homeworld": 28, 524 | "birth_year": "92BBY" 525 | }, 526 | "model": "starwars.people", 527 | "pk": 32 528 | }, 529 | { 530 | "fields": { 531 | "edited": "2014-12-20T21:17:50.377Z", 532 | "name": "Nute Gunray", 533 | "created": "2014-12-19T17:05:57.357Z", 534 | "gender": "male", 535 | "skin_color": "mottled green", 536 | "hair_color": "none", 537 | "height": "191", 538 | "eye_color": "red", 539 | "mass": "90", 540 | "homeworld": 18, 541 | "birth_year": "unknown" 542 | }, 543 | "model": "starwars.people", 544 | "pk": 33 545 | }, 546 | { 547 | "fields": { 548 | "edited": "2014-12-20T21:17:50.379Z", 549 | "name": "Finis Valorum", 550 | "created": "2014-12-19T17:21:45.915Z", 551 | "gender": "male", 552 | "skin_color": "fair", 553 | "hair_color": "blond", 554 | "height": "170", 555 | "eye_color": "blue", 556 | "mass": "unknown", 557 | "homeworld": 9, 558 | "birth_year": "91BBY" 559 | }, 560 | "model": "starwars.people", 561 | "pk": 34 562 | }, 563 | { 564 | "fields": { 565 | "edited": "2014-12-20T21:17:50.381Z", 566 | "name": "Padm\u00e9 Amidala", 567 | "created": "2014-12-19T17:28:26.926Z", 568 | "gender": "female", 569 | "skin_color": "light", 570 | "hair_color": "brown", 571 | "height": "185", 572 | "eye_color": "brown", 573 | "mass": "45", 574 | "homeworld": 8, 575 | "birth_year": "46BBY" 576 | }, 577 | "model": "starwars.people", 578 | "pk": 35 579 | }, 580 | { 581 | "fields": { 582 | "edited": "2014-12-20T21:17:50.383Z", 583 | "name": "Jar Jar Binks", 584 | "created": "2014-12-19T17:29:32.489Z", 585 | "gender": "male", 586 | "skin_color": "orange", 587 | "hair_color": "none", 588 | "height": "196", 589 | "eye_color": "orange", 590 | "mass": "66", 591 | "homeworld": 8, 592 | "birth_year": "52BBY" 593 | }, 594 | "model": "starwars.people", 595 | "pk": 36 596 | }, 597 | { 598 | "fields": { 599 | "edited": "2014-12-20T21:17:50.385Z", 600 | "name": "Roos Tarpals", 601 | "created": "2014-12-19T17:32:56.741Z", 602 | "gender": "male", 603 | "skin_color": "grey", 604 | "hair_color": "none", 605 | "height": "224", 606 | "eye_color": "orange", 607 | "mass": "82", 608 | "homeworld": 8, 609 | "birth_year": "unknown" 610 | }, 611 | "model": "starwars.people", 612 | "pk": 37 613 | }, 614 | { 615 | "fields": { 616 | "edited": "2014-12-20T21:17:50.388Z", 617 | "name": "Rugor Nass", 618 | "created": "2014-12-19T17:33:38.909Z", 619 | "gender": "male", 620 | "skin_color": "green", 621 | "hair_color": "none", 622 | "height": "206", 623 | "eye_color": "orange", 624 | "mass": "unknown", 625 | "homeworld": 8, 626 | "birth_year": "unknown" 627 | }, 628 | "model": "starwars.people", 629 | "pk": 38 630 | }, 631 | { 632 | "fields": { 633 | "edited": "2014-12-20T21:17:50.392Z", 634 | "name": "Ric Oli\u00e9", 635 | "created": "2014-12-19T17:45:01.522Z", 636 | "gender": "male", 637 | "skin_color": "fair", 638 | "hair_color": "brown", 639 | "height": "183", 640 | "eye_color": "blue", 641 | "mass": "unknown", 642 | "homeworld": 8, 643 | "birth_year": "unknown" 644 | }, 645 | "model": "starwars.people", 646 | "pk": 39 647 | }, 648 | { 649 | "fields": { 650 | "edited": "2014-12-20T21:17:50.395Z", 651 | "name": "Watto", 652 | "created": "2014-12-19T17:48:54.647Z", 653 | "gender": "male", 654 | "skin_color": "blue, grey", 655 | "hair_color": "black", 656 | "height": "137", 657 | "eye_color": "yellow", 658 | "mass": "unknown", 659 | "homeworld": 34, 660 | "birth_year": "unknown" 661 | }, 662 | "model": "starwars.people", 663 | "pk": 40 664 | }, 665 | { 666 | "fields": { 667 | "edited": "2014-12-20T21:17:50.397Z", 668 | "name": "Sebulba", 669 | "created": "2014-12-19T17:53:02.586Z", 670 | "gender": "male", 671 | "skin_color": "grey, red", 672 | "hair_color": "none", 673 | "height": "112", 674 | "eye_color": "orange", 675 | "mass": "40", 676 | "homeworld": 35, 677 | "birth_year": "unknown" 678 | }, 679 | "model": "starwars.people", 680 | "pk": 41 681 | }, 682 | { 683 | "fields": { 684 | "edited": "2014-12-20T21:17:50.399Z", 685 | "name": "Quarsh Panaka", 686 | "created": "2014-12-19T17:55:43.348Z", 687 | "gender": "male", 688 | "skin_color": "dark", 689 | "hair_color": "black", 690 | "height": "183", 691 | "eye_color": "brown", 692 | "mass": "unknown", 693 | "homeworld": 8, 694 | "birth_year": "62BBY" 695 | }, 696 | "model": "starwars.people", 697 | "pk": 42 698 | }, 699 | { 700 | "fields": { 701 | "edited": "2014-12-20T21:17:50.401Z", 702 | "name": "Shmi Skywalker", 703 | "created": "2014-12-19T17:57:41.191Z", 704 | "gender": "female", 705 | "skin_color": "fair", 706 | "hair_color": "black", 707 | "height": "163", 708 | "eye_color": "brown", 709 | "mass": "unknown", 710 | "homeworld": 1, 711 | "birth_year": "72BBY" 712 | }, 713 | "model": "starwars.people", 714 | "pk": 43 715 | }, 716 | { 717 | "fields": { 718 | "edited": "2014-12-20T21:17:50.403Z", 719 | "name": "Darth Maul", 720 | "created": "2014-12-19T18:00:41.929Z", 721 | "gender": "male", 722 | "skin_color": "red", 723 | "hair_color": "none", 724 | "height": "175", 725 | "eye_color": "yellow", 726 | "mass": "80", 727 | "homeworld": 36, 728 | "birth_year": "54BBY" 729 | }, 730 | "model": "starwars.people", 731 | "pk": 44 732 | }, 733 | { 734 | "fields": { 735 | "edited": "2014-12-20T21:17:50.407Z", 736 | "name": "Bib Fortuna", 737 | "created": "2014-12-20T09:47:02.512Z", 738 | "gender": "male", 739 | "skin_color": "pale", 740 | "hair_color": "none", 741 | "height": "180", 742 | "eye_color": "pink", 743 | "mass": "unknown", 744 | "homeworld": 37, 745 | "birth_year": "unknown" 746 | }, 747 | "model": "starwars.people", 748 | "pk": 45 749 | }, 750 | { 751 | "fields": { 752 | "edited": "2014-12-20T21:17:50.409Z", 753 | "name": "Ayla Secura", 754 | "created": "2014-12-20T09:48:01.172Z", 755 | "gender": "female", 756 | "skin_color": "blue", 757 | "hair_color": "none", 758 | "height": "178", 759 | "eye_color": "hazel", 760 | "mass": "55", 761 | "homeworld": 37, 762 | "birth_year": "48BBY" 763 | }, 764 | "model": "starwars.people", 765 | "pk": 46 766 | }, 767 | { 768 | "fields": { 769 | "edited": "2014-12-20T21:17:50.410Z", 770 | "name": "Ratts Tyerel", 771 | "created": "2014-12-20T09:53:15.086Z", 772 | "gender": "male", 773 | "skin_color": "grey, blue", 774 | "hair_color": "none", 775 | "height": "79", 776 | "eye_color": "unknown", 777 | "mass": "15", 778 | "homeworld": 38, 779 | "birth_year": "unknown" 780 | }, 781 | "model": "starwars.people", 782 | "pk": 47 783 | }, 784 | { 785 | "fields": { 786 | "edited": "2014-12-20T21:17:50.414Z", 787 | "name": "Dud Bolt", 788 | "created": "2014-12-20T09:57:31.858Z", 789 | "gender": "male", 790 | "skin_color": "blue, grey", 791 | "hair_color": "none", 792 | "height": "94", 793 | "eye_color": "yellow", 794 | "mass": "45", 795 | "homeworld": 39, 796 | "birth_year": "unknown" 797 | }, 798 | "model": "starwars.people", 799 | "pk": 48 800 | }, 801 | { 802 | "fields": { 803 | "edited": "2014-12-20T21:17:50.416Z", 804 | "name": "Gasgano", 805 | "created": "2014-12-20T10:02:12.223Z", 806 | "gender": "male", 807 | "skin_color": "white, blue", 808 | "hair_color": "none", 809 | "height": "122", 810 | "eye_color": "black", 811 | "mass": "unknown", 812 | "homeworld": 40, 813 | "birth_year": "unknown" 814 | }, 815 | "model": "starwars.people", 816 | "pk": 49 817 | }, 818 | { 819 | "fields": { 820 | "edited": "2014-12-20T21:17:50.417Z", 821 | "name": "Ben Quadinaros", 822 | "created": "2014-12-20T10:08:33.777Z", 823 | "gender": "male", 824 | "skin_color": "grey, green, yellow", 825 | "hair_color": "none", 826 | "height": "163", 827 | "eye_color": "orange", 828 | "mass": "65", 829 | "homeworld": 41, 830 | "birth_year": "unknown" 831 | }, 832 | "model": "starwars.people", 833 | "pk": 50 834 | }, 835 | { 836 | "fields": { 837 | "edited": "2014-12-20T21:17:50.420Z", 838 | "name": "Mace Windu", 839 | "created": "2014-12-20T10:12:30.846Z", 840 | "gender": "male", 841 | "skin_color": "dark", 842 | "hair_color": "none", 843 | "height": "188", 844 | "eye_color": "brown", 845 | "mass": "84", 846 | "homeworld": 42, 847 | "birth_year": "72BBY" 848 | }, 849 | "model": "starwars.people", 850 | "pk": 51 851 | }, 852 | { 853 | "fields": { 854 | "edited": "2014-12-20T21:17:50.422Z", 855 | "name": "Ki-Adi-Mundi", 856 | "created": "2014-12-20T10:15:32.293Z", 857 | "gender": "male", 858 | "skin_color": "pale", 859 | "hair_color": "white", 860 | "height": "198", 861 | "eye_color": "yellow", 862 | "mass": "82", 863 | "homeworld": 43, 864 | "birth_year": "92BBY" 865 | }, 866 | "model": "starwars.people", 867 | "pk": 52 868 | }, 869 | { 870 | "fields": { 871 | "edited": "2014-12-20T21:17:50.424Z", 872 | "name": "Kit Fisto", 873 | "created": "2014-12-20T10:18:57.202Z", 874 | "gender": "male", 875 | "skin_color": "green", 876 | "hair_color": "none", 877 | "height": "196", 878 | "eye_color": "black", 879 | "mass": "87", 880 | "homeworld": 44, 881 | "birth_year": "unknown" 882 | }, 883 | "model": "starwars.people", 884 | "pk": 53 885 | }, 886 | { 887 | "fields": { 888 | "edited": "2014-12-20T21:17:50.427Z", 889 | "name": "Eeth Koth", 890 | "created": "2014-12-20T10:26:47.902Z", 891 | "gender": "male", 892 | "skin_color": "brown", 893 | "hair_color": "black", 894 | "height": "171", 895 | "eye_color": "brown", 896 | "mass": "unknown", 897 | "homeworld": 45, 898 | "birth_year": "unknown" 899 | }, 900 | "model": "starwars.people", 901 | "pk": 54 902 | }, 903 | { 904 | "fields": { 905 | "edited": "2014-12-20T21:17:50.432Z", 906 | "name": "Adi Gallia", 907 | "created": "2014-12-20T10:29:11.661Z", 908 | "gender": "female", 909 | "skin_color": "dark", 910 | "hair_color": "none", 911 | "height": "184", 912 | "eye_color": "blue", 913 | "mass": "50", 914 | "homeworld": 9, 915 | "birth_year": "unknown" 916 | }, 917 | "model": "starwars.people", 918 | "pk": 55 919 | }, 920 | { 921 | "fields": { 922 | "edited": "2014-12-20T21:17:50.434Z", 923 | "name": "Saesee Tiin", 924 | "created": "2014-12-20T10:32:11.669Z", 925 | "gender": "male", 926 | "skin_color": "pale", 927 | "hair_color": "none", 928 | "height": "188", 929 | "eye_color": "orange", 930 | "mass": "unknown", 931 | "homeworld": 47, 932 | "birth_year": "unknown" 933 | }, 934 | "model": "starwars.people", 935 | "pk": 56 936 | }, 937 | { 938 | "fields": { 939 | "edited": "2014-12-20T21:17:50.437Z", 940 | "name": "Yarael Poof", 941 | "created": "2014-12-20T10:34:48.725Z", 942 | "gender": "male", 943 | "skin_color": "white", 944 | "hair_color": "none", 945 | "height": "264", 946 | "eye_color": "yellow", 947 | "mass": "unknown", 948 | "homeworld": 48, 949 | "birth_year": "unknown" 950 | }, 951 | "model": "starwars.people", 952 | "pk": 57 953 | }, 954 | { 955 | "fields": { 956 | "edited": "2014-12-20T21:17:50.439Z", 957 | "name": "Plo Koon", 958 | "created": "2014-12-20T10:49:19.859Z", 959 | "gender": "male", 960 | "skin_color": "orange", 961 | "hair_color": "none", 962 | "height": "188", 963 | "eye_color": "black", 964 | "mass": "80", 965 | "homeworld": 49, 966 | "birth_year": "22BBY" 967 | }, 968 | "model": "starwars.people", 969 | "pk": 58 970 | }, 971 | { 972 | "fields": { 973 | "edited": "2014-12-20T21:17:50.442Z", 974 | "name": "Mas Amedda", 975 | "created": "2014-12-20T10:53:26.457Z", 976 | "gender": "male", 977 | "skin_color": "blue", 978 | "hair_color": "none", 979 | "height": "196", 980 | "eye_color": "blue", 981 | "mass": "unknown", 982 | "homeworld": 50, 983 | "birth_year": "unknown" 984 | }, 985 | "model": "starwars.people", 986 | "pk": 59 987 | }, 988 | { 989 | "fields": { 990 | "edited": "2014-12-20T21:17:50.445Z", 991 | "name": "Gregar Typho", 992 | "created": "2014-12-20T11:10:10.381Z", 993 | "gender": "male", 994 | "skin_color": "dark", 995 | "hair_color": "black", 996 | "height": "185", 997 | "eye_color": "brown", 998 | "mass": "85", 999 | "homeworld": 8, 1000 | "birth_year": "unknown" 1001 | }, 1002 | "model": "starwars.people", 1003 | "pk": 60 1004 | }, 1005 | { 1006 | "fields": { 1007 | "edited": "2014-12-20T21:17:50.449Z", 1008 | "name": "Cord\u00e9", 1009 | "created": "2014-12-20T11:11:39.630Z", 1010 | "gender": "female", 1011 | "skin_color": "light", 1012 | "hair_color": "brown", 1013 | "height": "157", 1014 | "eye_color": "brown", 1015 | "mass": "unknown", 1016 | "homeworld": 8, 1017 | "birth_year": "unknown" 1018 | }, 1019 | "model": "starwars.people", 1020 | "pk": 61 1021 | }, 1022 | { 1023 | "fields": { 1024 | "edited": "2014-12-20T21:17:50.451Z", 1025 | "name": "Cliegg Lars", 1026 | "created": "2014-12-20T15:59:03.958Z", 1027 | "gender": "male", 1028 | "skin_color": "fair", 1029 | "hair_color": "brown", 1030 | "height": "183", 1031 | "eye_color": "blue", 1032 | "mass": "unknown", 1033 | "homeworld": 1, 1034 | "birth_year": "82BBY" 1035 | }, 1036 | "model": "starwars.people", 1037 | "pk": 62 1038 | }, 1039 | { 1040 | "fields": { 1041 | "edited": "2014-12-20T21:17:50.453Z", 1042 | "name": "Poggle the Lesser", 1043 | "created": "2014-12-20T16:40:43.977Z", 1044 | "gender": "male", 1045 | "skin_color": "green", 1046 | "hair_color": "none", 1047 | "height": "183", 1048 | "eye_color": "yellow", 1049 | "mass": "80", 1050 | "homeworld": 11, 1051 | "birth_year": "unknown" 1052 | }, 1053 | "model": "starwars.people", 1054 | "pk": 63 1055 | }, 1056 | { 1057 | "fields": { 1058 | "edited": "2014-12-20T21:17:50.455Z", 1059 | "name": "Luminara Unduli", 1060 | "created": "2014-12-20T16:45:53.668Z", 1061 | "gender": "female", 1062 | "skin_color": "yellow", 1063 | "hair_color": "black", 1064 | "height": "170", 1065 | "eye_color": "blue", 1066 | "mass": "56.2", 1067 | "homeworld": 51, 1068 | "birth_year": "58BBY" 1069 | }, 1070 | "model": "starwars.people", 1071 | "pk": 64 1072 | }, 1073 | { 1074 | "fields": { 1075 | "edited": "2014-12-20T21:17:50.457Z", 1076 | "name": "Barriss Offee", 1077 | "created": "2014-12-20T16:46:40.440Z", 1078 | "gender": "female", 1079 | "skin_color": "yellow", 1080 | "hair_color": "black", 1081 | "height": "166", 1082 | "eye_color": "blue", 1083 | "mass": "50", 1084 | "homeworld": 51, 1085 | "birth_year": "40BBY" 1086 | }, 1087 | "model": "starwars.people", 1088 | "pk": 65 1089 | }, 1090 | { 1091 | "fields": { 1092 | "edited": "2014-12-20T21:17:50.460Z", 1093 | "name": "Dorm\u00e9", 1094 | "created": "2014-12-20T16:49:14.640Z", 1095 | "gender": "female", 1096 | "skin_color": "light", 1097 | "hair_color": "brown", 1098 | "height": "165", 1099 | "eye_color": "brown", 1100 | "mass": "unknown", 1101 | "homeworld": 8, 1102 | "birth_year": "unknown" 1103 | }, 1104 | "model": "starwars.people", 1105 | "pk": 66 1106 | }, 1107 | { 1108 | "fields": { 1109 | "edited": "2014-12-20T21:17:50.462Z", 1110 | "name": "Dooku", 1111 | "created": "2014-12-20T16:52:14.726Z", 1112 | "gender": "male", 1113 | "skin_color": "fair", 1114 | "hair_color": "white", 1115 | "height": "193", 1116 | "eye_color": "brown", 1117 | "mass": "80", 1118 | "homeworld": 52, 1119 | "birth_year": "102BBY" 1120 | }, 1121 | "model": "starwars.people", 1122 | "pk": 67 1123 | }, 1124 | { 1125 | "fields": { 1126 | "edited": "2014-12-20T21:17:50.463Z", 1127 | "name": "Bail Prestor Organa", 1128 | "created": "2014-12-20T16:53:08.575Z", 1129 | "gender": "male", 1130 | "skin_color": "tan", 1131 | "hair_color": "black", 1132 | "height": "191", 1133 | "eye_color": "brown", 1134 | "mass": "unknown", 1135 | "homeworld": 2, 1136 | "birth_year": "67BBY" 1137 | }, 1138 | "model": "starwars.people", 1139 | "pk": 68 1140 | }, 1141 | { 1142 | "fields": { 1143 | "edited": "2014-12-20T21:17:50.465Z", 1144 | "name": "Jango Fett", 1145 | "created": "2014-12-20T16:54:41.620Z", 1146 | "gender": "male", 1147 | "skin_color": "tan", 1148 | "hair_color": "black", 1149 | "height": "183", 1150 | "eye_color": "brown", 1151 | "mass": "79", 1152 | "homeworld": 53, 1153 | "birth_year": "66BBY" 1154 | }, 1155 | "model": "starwars.people", 1156 | "pk": 69 1157 | }, 1158 | { 1159 | "fields": { 1160 | "edited": "2014-12-20T21:17:50.468Z", 1161 | "name": "Zam Wesell", 1162 | "created": "2014-12-20T16:57:44.471Z", 1163 | "gender": "female", 1164 | "skin_color": "fair, green, yellow", 1165 | "hair_color": "blonde", 1166 | "height": "168", 1167 | "eye_color": "yellow", 1168 | "mass": "55", 1169 | "homeworld": 54, 1170 | "birth_year": "unknown" 1171 | }, 1172 | "model": "starwars.people", 1173 | "pk": 70 1174 | }, 1175 | { 1176 | "fields": { 1177 | "edited": "2014-12-20T21:17:50.470Z", 1178 | "name": "Dexter Jettster", 1179 | "created": "2014-12-20T17:28:27.248Z", 1180 | "gender": "male", 1181 | "skin_color": "brown", 1182 | "hair_color": "none", 1183 | "height": "198", 1184 | "eye_color": "yellow", 1185 | "mass": "102", 1186 | "homeworld": 55, 1187 | "birth_year": "unknown" 1188 | }, 1189 | "model": "starwars.people", 1190 | "pk": 71 1191 | }, 1192 | { 1193 | "fields": { 1194 | "edited": "2014-12-20T21:17:50.473Z", 1195 | "name": "Lama Su", 1196 | "created": "2014-12-20T17:30:50.416Z", 1197 | "gender": "male", 1198 | "skin_color": "grey", 1199 | "hair_color": "none", 1200 | "height": "229", 1201 | "eye_color": "black", 1202 | "mass": "88", 1203 | "homeworld": 10, 1204 | "birth_year": "unknown" 1205 | }, 1206 | "model": "starwars.people", 1207 | "pk": 72 1208 | }, 1209 | { 1210 | "fields": { 1211 | "edited": "2014-12-20T21:17:50.474Z", 1212 | "name": "Taun We", 1213 | "created": "2014-12-20T17:31:21.195Z", 1214 | "gender": "female", 1215 | "skin_color": "grey", 1216 | "hair_color": "none", 1217 | "height": "213", 1218 | "eye_color": "black", 1219 | "mass": "unknown", 1220 | "homeworld": 10, 1221 | "birth_year": "unknown" 1222 | }, 1223 | "model": "starwars.people", 1224 | "pk": 73 1225 | }, 1226 | { 1227 | "fields": { 1228 | "edited": "2014-12-20T21:17:50.476Z", 1229 | "name": "Jocasta Nu", 1230 | "created": "2014-12-20T17:32:51.996Z", 1231 | "gender": "female", 1232 | "skin_color": "fair", 1233 | "hair_color": "white", 1234 | "height": "167", 1235 | "eye_color": "blue", 1236 | "mass": "unknown", 1237 | "homeworld": 9, 1238 | "birth_year": "unknown" 1239 | }, 1240 | "model": "starwars.people", 1241 | "pk": 74 1242 | }, 1243 | { 1244 | "fields": { 1245 | "edited": "2014-12-20T21:17:50.478Z", 1246 | "name": "R4-P17", 1247 | "created": "2014-12-20T17:43:36.409Z", 1248 | "gender": "female", 1249 | "skin_color": "silver, red", 1250 | "hair_color": "none", 1251 | "height": "96", 1252 | "eye_color": "red, blue", 1253 | "mass": "unknown", 1254 | "homeworld": 28, 1255 | "birth_year": "unknown" 1256 | }, 1257 | "model": "starwars.people", 1258 | "pk": 75 1259 | }, 1260 | { 1261 | "fields": { 1262 | "edited": "2014-12-20T21:17:50.481Z", 1263 | "name": "Wat Tambor", 1264 | "created": "2014-12-20T17:53:52.607Z", 1265 | "gender": "male", 1266 | "skin_color": "green, grey", 1267 | "hair_color": "none", 1268 | "height": "193", 1269 | "eye_color": "unknown", 1270 | "mass": "48", 1271 | "homeworld": 56, 1272 | "birth_year": "unknown" 1273 | }, 1274 | "model": "starwars.people", 1275 | "pk": 76 1276 | }, 1277 | { 1278 | "fields": { 1279 | "edited": "2014-12-20T21:17:50.484Z", 1280 | "name": "San Hill", 1281 | "created": "2014-12-20T17:58:17.049Z", 1282 | "gender": "male", 1283 | "skin_color": "grey", 1284 | "hair_color": "none", 1285 | "height": "191", 1286 | "eye_color": "gold", 1287 | "mass": "unknown", 1288 | "homeworld": 57, 1289 | "birth_year": "unknown" 1290 | }, 1291 | "model": "starwars.people", 1292 | "pk": 77 1293 | }, 1294 | { 1295 | "fields": { 1296 | "edited": "2014-12-20T21:17:50.486Z", 1297 | "name": "Shaak Ti", 1298 | "created": "2014-12-20T18:44:01.103Z", 1299 | "gender": "female", 1300 | "skin_color": "red, blue, white", 1301 | "hair_color": "none", 1302 | "height": "178", 1303 | "eye_color": "black", 1304 | "mass": "57", 1305 | "homeworld": 58, 1306 | "birth_year": "unknown" 1307 | }, 1308 | "model": "starwars.people", 1309 | "pk": 78 1310 | }, 1311 | { 1312 | "fields": { 1313 | "edited": "2014-12-20T21:17:50.488Z", 1314 | "name": "Grievous", 1315 | "created": "2014-12-20T19:43:53.348Z", 1316 | "gender": "male", 1317 | "skin_color": "brown, white", 1318 | "hair_color": "none", 1319 | "height": "216", 1320 | "eye_color": "green, yellow", 1321 | "mass": "159", 1322 | "homeworld": 59, 1323 | "birth_year": "unknown" 1324 | }, 1325 | "model": "starwars.people", 1326 | "pk": 79 1327 | }, 1328 | { 1329 | "fields": { 1330 | "edited": "2014-12-20T21:17:50.491Z", 1331 | "name": "Tarfful", 1332 | "created": "2014-12-20T19:46:34.209Z", 1333 | "gender": "male", 1334 | "skin_color": "brown", 1335 | "hair_color": "brown", 1336 | "height": "234", 1337 | "eye_color": "blue", 1338 | "mass": "136", 1339 | "homeworld": 14, 1340 | "birth_year": "unknown" 1341 | }, 1342 | "model": "starwars.people", 1343 | "pk": 80 1344 | }, 1345 | { 1346 | "fields": { 1347 | "edited": "2014-12-20T21:17:50.493Z", 1348 | "name": "Raymus Antilles", 1349 | "created": "2014-12-20T19:49:35.583Z", 1350 | "gender": "male", 1351 | "skin_color": "light", 1352 | "hair_color": "brown", 1353 | "height": "188", 1354 | "eye_color": "brown", 1355 | "mass": "79", 1356 | "homeworld": 2, 1357 | "birth_year": "unknown" 1358 | }, 1359 | "model": "starwars.people", 1360 | "pk": 81 1361 | }, 1362 | { 1363 | "fields": { 1364 | "edited": "2014-12-20T21:17:50.496Z", 1365 | "name": "Sly Moore", 1366 | "created": "2014-12-20T20:18:37.619Z", 1367 | "gender": "female", 1368 | "skin_color": "pale", 1369 | "hair_color": "none", 1370 | "height": "178", 1371 | "eye_color": "white", 1372 | "mass": "48", 1373 | "homeworld": 60, 1374 | "birth_year": "unknown" 1375 | }, 1376 | "model": "starwars.people", 1377 | "pk": 82 1378 | }, 1379 | { 1380 | "fields": { 1381 | "edited": "2014-12-20T21:17:50.498Z", 1382 | "name": "Tion Medon", 1383 | "created": "2014-12-20T20:35:04.260Z", 1384 | "gender": "male", 1385 | "skin_color": "grey", 1386 | "hair_color": "none", 1387 | "height": "206", 1388 | "eye_color": "black", 1389 | "mass": "80", 1390 | "homeworld": 12, 1391 | "birth_year": "unknown" 1392 | }, 1393 | "model": "starwars.people", 1394 | "pk": 83 1395 | } 1396 | ] 1397 | -------------------------------------------------------------------------------- /starwars/fixtures/planets.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "fields": { 4 | "edited": "2014-12-20T20:58:18.411Z", 5 | "climate": "arid", 6 | "surface_water": "1", 7 | "name": "Tatooine", 8 | "diameter": "10465", 9 | "rotation_period": "23", 10 | "created": "2014-12-09T13:50:49.641Z", 11 | "terrain": "dessert", 12 | "gravity": "1 standard", 13 | "orbital_period": "304", 14 | "population": "200000" 15 | }, 16 | "model": "starwars.planet", 17 | "pk": 1 18 | }, 19 | { 20 | "fields": { 21 | "edited": "2014-12-20T20:58:18.420Z", 22 | "climate": "temperate", 23 | "surface_water": "40", 24 | "name": "Alderaan", 25 | "diameter": "12500", 26 | "rotation_period": "24", 27 | "created": "2014-12-10T11:35:48.479Z", 28 | "terrain": "grasslands, mountains", 29 | "gravity": "1 standard", 30 | "orbital_period": "364", 31 | "population": "2000000000" 32 | }, 33 | "model": "starwars.planet", 34 | "pk": 2 35 | }, 36 | { 37 | "fields": { 38 | "edited": "2014-12-20T20:58:18.421Z", 39 | "climate": "temperate, tropical", 40 | "surface_water": "8", 41 | "name": "Yavin IV", 42 | "diameter": "10200", 43 | "rotation_period": "24", 44 | "created": "2014-12-10T11:37:19.144Z", 45 | "terrain": "jungle, rainforests", 46 | "gravity": "1 standard", 47 | "orbital_period": "4818", 48 | "population": "1000" 49 | }, 50 | "model": "starwars.planet", 51 | "pk": 3 52 | }, 53 | { 54 | "fields": { 55 | "edited": "2014-12-20T20:58:18.423Z", 56 | "climate": "frozen", 57 | "surface_water": "100", 58 | "name": "Hoth", 59 | "diameter": "7200", 60 | "rotation_period": "23", 61 | "created": "2014-12-10T11:39:13.934Z", 62 | "terrain": "tundra, ice caves, mountain ranges", 63 | "gravity": "1.1 standard", 64 | "orbital_period": "549", 65 | "population": "unknown" 66 | }, 67 | "model": "starwars.planet", 68 | "pk": 4 69 | }, 70 | { 71 | "fields": { 72 | "edited": "2014-12-20T20:58:18.425Z", 73 | "climate": "murky", 74 | "surface_water": "8", 75 | "name": "Dagobah", 76 | "diameter": "8900", 77 | "rotation_period": "23", 78 | "created": "2014-12-10T11:42:22.590Z", 79 | "terrain": "swamp, jungles", 80 | "gravity": "N/A", 81 | "orbital_period": "341", 82 | "population": "unknown" 83 | }, 84 | "model": "starwars.planet", 85 | "pk": 5 86 | }, 87 | { 88 | "fields": { 89 | "edited": "2014-12-20T20:58:18.427Z", 90 | "climate": "temperate", 91 | "surface_water": "0", 92 | "name": "Bespin", 93 | "diameter": "118000", 94 | "rotation_period": "12", 95 | "created": "2014-12-10T11:43:55.240Z", 96 | "terrain": "gas giant", 97 | "gravity": "1.5 (surface), 1 standard (Cloud City)", 98 | "orbital_period": "5110", 99 | "population": "6000000" 100 | }, 101 | "model": "starwars.planet", 102 | "pk": 6 103 | }, 104 | { 105 | "fields": { 106 | "edited": "2014-12-20T20:58:18.429Z", 107 | "climate": "temperate", 108 | "surface_water": "8", 109 | "name": "Endor", 110 | "diameter": "4900", 111 | "rotation_period": "18", 112 | "created": "2014-12-10T11:50:29.349Z", 113 | "terrain": "forests, mountains, lakes", 114 | "gravity": "0.85 standard", 115 | "orbital_period": "402", 116 | "population": "30000000" 117 | }, 118 | "model": "starwars.planet", 119 | "pk": 7 120 | }, 121 | { 122 | "fields": { 123 | "edited": "2014-12-20T20:58:18.430Z", 124 | "climate": "temperate", 125 | "surface_water": "12", 126 | "name": "Naboo", 127 | "diameter": "12120", 128 | "rotation_period": "26", 129 | "created": "2014-12-10T11:52:31.066Z", 130 | "terrain": "grassy hills, swamps, forests, mountains", 131 | "gravity": "1 standard", 132 | "orbital_period": "312", 133 | "population": "4500000000" 134 | }, 135 | "model": "starwars.planet", 136 | "pk": 8 137 | }, 138 | { 139 | "fields": { 140 | "edited": "2014-12-20T20:58:18.432Z", 141 | "climate": "temperate", 142 | "surface_water": "unknown", 143 | "name": "Coruscant", 144 | "diameter": "12240", 145 | "rotation_period": "24", 146 | "created": "2014-12-10T11:54:13.921Z", 147 | "terrain": "cityscape, mountains", 148 | "gravity": "1 standard", 149 | "orbital_period": "368", 150 | "population": "1000000000000" 151 | }, 152 | "model": "starwars.planet", 153 | "pk": 9 154 | }, 155 | { 156 | "fields": { 157 | "edited": "2014-12-20T20:58:18.434Z", 158 | "climate": "temperate", 159 | "surface_water": "100", 160 | "name": "Kamino", 161 | "diameter": "19720", 162 | "rotation_period": "27", 163 | "created": "2014-12-10T12:45:06.577Z", 164 | "terrain": "ocean", 165 | "gravity": "1 standard", 166 | "orbital_period": "463", 167 | "population": "1000000000" 168 | }, 169 | "model": "starwars.planet", 170 | "pk": 10 171 | }, 172 | { 173 | "fields": { 174 | "edited": "2014-12-20T20:58:18.437Z", 175 | "climate": "temperate, arid", 176 | "surface_water": "5", 177 | "name": "Geonosis", 178 | "diameter": "11370", 179 | "rotation_period": "30", 180 | "created": "2014-12-10T12:47:22.350Z", 181 | "terrain": "rock, desert, mountain, barren", 182 | "gravity": "0.9 standard", 183 | "orbital_period": "256", 184 | "population": "100000000000" 185 | }, 186 | "model": "starwars.planet", 187 | "pk": 11 188 | }, 189 | { 190 | "fields": { 191 | "edited": "2014-12-20T20:58:18.439Z", 192 | "climate": "temperate, arid, windy", 193 | "surface_water": "0.9", 194 | "name": "Utapau", 195 | "diameter": "12900", 196 | "rotation_period": "27", 197 | "created": "2014-12-10T12:49:01.491Z", 198 | "terrain": "scrublands, savanna, canyons, sinkholes", 199 | "gravity": "1 standard", 200 | "orbital_period": "351", 201 | "population": "95000000" 202 | }, 203 | "model": "starwars.planet", 204 | "pk": 12 205 | }, 206 | { 207 | "fields": { 208 | "edited": "2014-12-20T20:58:18.440Z", 209 | "climate": "hot", 210 | "surface_water": "0", 211 | "name": "Mustafar", 212 | "diameter": "4200", 213 | "rotation_period": "36", 214 | "created": "2014-12-10T12:50:16.526Z", 215 | "terrain": "volcanoes, lava rivers, mountains, caves", 216 | "gravity": "1 standard", 217 | "orbital_period": "412", 218 | "population": "20000" 219 | }, 220 | "model": "starwars.planet", 221 | "pk": 13 222 | }, 223 | { 224 | "fields": { 225 | "edited": "2014-12-20T20:58:18.442Z", 226 | "climate": "tropical", 227 | "surface_water": "60", 228 | "name": "Kashyyyk", 229 | "diameter": "12765", 230 | "rotation_period": "26", 231 | "created": "2014-12-10T13:32:00.124Z", 232 | "terrain": "jungle, forests, lakes, rivers", 233 | "gravity": "1 standard", 234 | "orbital_period": "381", 235 | "population": "45000000" 236 | }, 237 | "model": "starwars.planet", 238 | "pk": 14 239 | }, 240 | { 241 | "fields": { 242 | "edited": "2014-12-20T20:58:18.444Z", 243 | "climate": "artificial temperate ", 244 | "surface_water": "0", 245 | "name": "Polis Massa", 246 | "diameter": "0", 247 | "rotation_period": "24", 248 | "created": "2014-12-10T13:33:46.405Z", 249 | "terrain": "airless asteroid", 250 | "gravity": "0.56 standard", 251 | "orbital_period": "590", 252 | "population": "1000000" 253 | }, 254 | "model": "starwars.planet", 255 | "pk": 15 256 | }, 257 | { 258 | "fields": { 259 | "edited": "2014-12-20T20:58:18.446Z", 260 | "climate": "frigid", 261 | "surface_water": "unknown", 262 | "name": "Mygeeto", 263 | "diameter": "10088", 264 | "rotation_period": "12", 265 | "created": "2014-12-10T13:43:39.139Z", 266 | "terrain": "glaciers, mountains, ice canyons", 267 | "gravity": "1 standard", 268 | "orbital_period": "167", 269 | "population": "19000000" 270 | }, 271 | "model": "starwars.planet", 272 | "pk": 16 273 | }, 274 | { 275 | "fields": { 276 | "edited": "2014-12-20T20:58:18.447Z", 277 | "climate": "hot, humid", 278 | "surface_water": "unknown", 279 | "name": "Felucia", 280 | "diameter": "9100", 281 | "rotation_period": "34", 282 | "created": "2014-12-10T13:44:50.397Z", 283 | "terrain": "fungus forests", 284 | "gravity": "0.75 standard", 285 | "orbital_period": "231", 286 | "population": "8500000" 287 | }, 288 | "model": "starwars.planet", 289 | "pk": 17 290 | }, 291 | { 292 | "fields": { 293 | "edited": "2014-12-20T20:58:18.449Z", 294 | "climate": "temperate, moist", 295 | "surface_water": "unknown", 296 | "name": "Cato Neimoidia", 297 | "diameter": "0", 298 | "rotation_period": "25", 299 | "created": "2014-12-10T13:46:28.704Z", 300 | "terrain": "mountains, fields, forests, rock arches", 301 | "gravity": "1 standard", 302 | "orbital_period": "278", 303 | "population": "10000000" 304 | }, 305 | "model": "starwars.planet", 306 | "pk": 18 307 | }, 308 | { 309 | "fields": { 310 | "edited": "2014-12-20T20:58:18.450Z", 311 | "climate": "hot", 312 | "surface_water": "unknown", 313 | "name": "Saleucami", 314 | "diameter": "14920", 315 | "rotation_period": "26", 316 | "created": "2014-12-10T13:47:46.874Z", 317 | "terrain": "caves, desert, mountains, volcanoes", 318 | "gravity": "unknown", 319 | "orbital_period": "392", 320 | "population": "1400000000" 321 | }, 322 | "model": "starwars.planet", 323 | "pk": 19 324 | }, 325 | { 326 | "fields": { 327 | "edited": "2014-12-20T20:58:18.452Z", 328 | "climate": "temperate", 329 | "surface_water": "unknown", 330 | "name": "Stewjon", 331 | "diameter": "0", 332 | "rotation_period": "unknown", 333 | "created": "2014-12-10T16:16:26.566Z", 334 | "terrain": "grass", 335 | "gravity": "1 standard", 336 | "orbital_period": "unknown", 337 | "population": "unknown" 338 | }, 339 | "model": "starwars.planet", 340 | "pk": 20 341 | }, 342 | { 343 | "fields": { 344 | "edited": "2014-12-20T20:58:18.454Z", 345 | "climate": "polluted", 346 | "surface_water": "unknown", 347 | "name": "Eriadu", 348 | "diameter": "13490", 349 | "rotation_period": "24", 350 | "created": "2014-12-10T16:26:54.384Z", 351 | "terrain": "cityscape", 352 | "gravity": "1 standard", 353 | "orbital_period": "360", 354 | "population": "22000000000" 355 | }, 356 | "model": "starwars.planet", 357 | "pk": 21 358 | }, 359 | { 360 | "fields": { 361 | "edited": "2014-12-20T20:58:18.456Z", 362 | "climate": "temperate", 363 | "surface_water": "70", 364 | "name": "Corellia", 365 | "diameter": "11000", 366 | "rotation_period": "25", 367 | "created": "2014-12-10T16:49:12.453Z", 368 | "terrain": "plains, urban, hills, forests", 369 | "gravity": "1 standard", 370 | "orbital_period": "329", 371 | "population": "3000000000" 372 | }, 373 | "model": "starwars.planet", 374 | "pk": 22 375 | }, 376 | { 377 | "fields": { 378 | "edited": "2014-12-20T20:58:18.458Z", 379 | "climate": "hot", 380 | "surface_water": "60", 381 | "name": "Rodia", 382 | "diameter": "7549", 383 | "rotation_period": "29", 384 | "created": "2014-12-10T17:03:28.110Z", 385 | "terrain": "jungles, oceans, urban, swamps", 386 | "gravity": "1 standard", 387 | "orbital_period": "305", 388 | "population": "1300000000" 389 | }, 390 | "model": "starwars.planet", 391 | "pk": 23 392 | }, 393 | { 394 | "fields": { 395 | "edited": "2014-12-20T20:58:18.460Z", 396 | "climate": "temperate", 397 | "surface_water": "unknown", 398 | "name": "Nal Hutta", 399 | "diameter": "12150", 400 | "rotation_period": "87", 401 | "created": "2014-12-10T17:11:29.452Z", 402 | "terrain": "urban, oceans, swamps, bogs", 403 | "gravity": "1 standard", 404 | "orbital_period": "413", 405 | "population": "7000000000" 406 | }, 407 | "model": "starwars.planet", 408 | "pk": 24 409 | }, 410 | { 411 | "fields": { 412 | "edited": "2014-12-20T20:58:18.461Z", 413 | "climate": "temperate", 414 | "surface_water": "unknown", 415 | "name": "Dantooine", 416 | "diameter": "9830", 417 | "rotation_period": "25", 418 | "created": "2014-12-10T17:23:29.896Z", 419 | "terrain": "oceans, savannas, mountains, grasslands", 420 | "gravity": "1 standard", 421 | "orbital_period": "378", 422 | "population": "1000" 423 | }, 424 | "model": "starwars.planet", 425 | "pk": 25 426 | }, 427 | { 428 | "fields": { 429 | "edited": "2014-12-20T20:58:18.463Z", 430 | "climate": "temperate", 431 | "surface_water": "98", 432 | "name": "Bestine IV", 433 | "diameter": "6400", 434 | "rotation_period": "26", 435 | "created": "2014-12-12T11:16:55.078Z", 436 | "terrain": "rocky islands, oceans", 437 | "gravity": "unknown", 438 | "orbital_period": "680", 439 | "population": "62000000" 440 | }, 441 | "model": "starwars.planet", 442 | "pk": 26 443 | }, 444 | { 445 | "fields": { 446 | "edited": "2014-12-20T20:58:18.464Z", 447 | "climate": "temperate", 448 | "surface_water": "10", 449 | "name": "Ord Mantell", 450 | "diameter": "14050", 451 | "rotation_period": "26", 452 | "created": "2014-12-15T12:23:41.661Z", 453 | "terrain": "plains, seas, mesas", 454 | "gravity": "1 standard", 455 | "orbital_period": "334", 456 | "population": "4000000000" 457 | }, 458 | "model": "starwars.planet", 459 | "pk": 27 460 | }, 461 | { 462 | "fields": { 463 | "edited": "2014-12-20T20:58:18.466Z", 464 | "climate": "unknown", 465 | "surface_water": "unknown", 466 | "name": "unknown", 467 | "diameter": "0", 468 | "rotation_period": "0", 469 | "created": "2014-12-15T12:25:59.569Z", 470 | "terrain": "unknown", 471 | "gravity": "unknown", 472 | "orbital_period": "0", 473 | "population": "unknown" 474 | }, 475 | "model": "starwars.planet", 476 | "pk": 28 477 | }, 478 | { 479 | "fields": { 480 | "edited": "2014-12-20T20:58:18.468Z", 481 | "climate": "arid", 482 | "surface_water": "unknown", 483 | "name": "Trandosha", 484 | "diameter": "0", 485 | "rotation_period": "25", 486 | "created": "2014-12-15T12:53:47.695Z", 487 | "terrain": "mountains, seas, grasslands, deserts", 488 | "gravity": "0.62 standard", 489 | "orbital_period": "371", 490 | "population": "42000000" 491 | }, 492 | "model": "starwars.planet", 493 | "pk": 29 494 | }, 495 | { 496 | "fields": { 497 | "edited": "2014-12-20T20:58:18.469Z", 498 | "climate": "arid", 499 | "surface_water": "unknown", 500 | "name": "Socorro", 501 | "diameter": "0", 502 | "rotation_period": "20", 503 | "created": "2014-12-15T12:56:31.121Z", 504 | "terrain": "deserts, mountains", 505 | "gravity": "1 standard", 506 | "orbital_period": "326", 507 | "population": "300000000" 508 | }, 509 | "model": "starwars.planet", 510 | "pk": 30 511 | }, 512 | { 513 | "fields": { 514 | "edited": "2014-12-20T20:58:18.471Z", 515 | "climate": "temperate", 516 | "surface_water": "100", 517 | "name": "Mon Cala", 518 | "diameter": "11030", 519 | "rotation_period": "21", 520 | "created": "2014-12-18T11:07:01.792Z", 521 | "terrain": "oceans, reefs, islands", 522 | "gravity": "1", 523 | "orbital_period": "398", 524 | "population": "27000000000" 525 | }, 526 | "model": "starwars.planet", 527 | "pk": 31 528 | }, 529 | { 530 | "fields": { 531 | "edited": "2014-12-20T20:58:18.472Z", 532 | "climate": "temperate", 533 | "surface_water": "40", 534 | "name": "Chandrila", 535 | "diameter": "13500", 536 | "rotation_period": "20", 537 | "created": "2014-12-18T11:11:51.872Z", 538 | "terrain": "plains, forests", 539 | "gravity": "1", 540 | "orbital_period": "368", 541 | "population": "1200000000" 542 | }, 543 | "model": "starwars.planet", 544 | "pk": 32 545 | }, 546 | { 547 | "fields": { 548 | "edited": "2014-12-20T20:58:18.474Z", 549 | "climate": "superheated", 550 | "surface_water": "5", 551 | "name": "Sullust", 552 | "diameter": "12780", 553 | "rotation_period": "20", 554 | "created": "2014-12-18T11:25:40.243Z", 555 | "terrain": "mountains, volcanoes, rocky deserts", 556 | "gravity": "1", 557 | "orbital_period": "263", 558 | "population": "18500000000" 559 | }, 560 | "model": "starwars.planet", 561 | "pk": 33 562 | }, 563 | { 564 | "fields": { 565 | "edited": "2014-12-20T20:58:18.476Z", 566 | "climate": "temperate", 567 | "surface_water": "unknown", 568 | "name": "Toydaria", 569 | "diameter": "7900", 570 | "rotation_period": "21", 571 | "created": "2014-12-19T17:47:54.403Z", 572 | "terrain": "swamps, lakes", 573 | "gravity": "1", 574 | "orbital_period": "184", 575 | "population": "11000000" 576 | }, 577 | "model": "starwars.planet", 578 | "pk": 34 579 | }, 580 | { 581 | "fields": { 582 | "edited": "2014-12-20T20:58:18.478Z", 583 | "climate": "arid, temperate, tropical", 584 | "surface_water": "unknown", 585 | "name": "Malastare", 586 | "diameter": "18880", 587 | "rotation_period": "26", 588 | "created": "2014-12-19T17:52:13.106Z", 589 | "terrain": "swamps, deserts, jungles, mountains", 590 | "gravity": "1.56", 591 | "orbital_period": "201", 592 | "population": "2000000000" 593 | }, 594 | "model": "starwars.planet", 595 | "pk": 35 596 | }, 597 | { 598 | "fields": { 599 | "edited": "2014-12-20T20:58:18.480Z", 600 | "climate": "temperate", 601 | "surface_water": "unknown", 602 | "name": "Dathomir", 603 | "diameter": "10480", 604 | "rotation_period": "24", 605 | "created": "2014-12-19T18:00:40.142Z", 606 | "terrain": "forests, deserts, savannas", 607 | "gravity": "0.9", 608 | "orbital_period": "491", 609 | "population": "5200" 610 | }, 611 | "model": "starwars.planet", 612 | "pk": 36 613 | }, 614 | { 615 | "fields": { 616 | "edited": "2014-12-20T20:58:18.481Z", 617 | "climate": "temperate, arid, subartic", 618 | "surface_water": "5", 619 | "name": "Ryloth", 620 | "diameter": "10600", 621 | "rotation_period": "30", 622 | "created": "2014-12-20T09:46:25.740Z", 623 | "terrain": "mountains, valleys, deserts, tundra", 624 | "gravity": "1", 625 | "orbital_period": "305", 626 | "population": "1500000000" 627 | }, 628 | "model": "starwars.planet", 629 | "pk": 37 630 | }, 631 | { 632 | "fields": { 633 | "edited": "2014-12-20T20:58:18.483Z", 634 | "climate": "unknown", 635 | "surface_water": "unknown", 636 | "name": "Aleen Minor", 637 | "diameter": "unknown", 638 | "rotation_period": "unknown", 639 | "created": "2014-12-20T09:52:23.452Z", 640 | "terrain": "unknown", 641 | "gravity": "unknown", 642 | "orbital_period": "unknown", 643 | "population": "unknown" 644 | }, 645 | "model": "starwars.planet", 646 | "pk": 38 647 | }, 648 | { 649 | "fields": { 650 | "edited": "2014-12-20T20:58:18.485Z", 651 | "climate": "temperate, artic", 652 | "surface_water": "unknown", 653 | "name": "Vulpter", 654 | "diameter": "14900", 655 | "rotation_period": "22", 656 | "created": "2014-12-20T09:56:58.874Z", 657 | "terrain": "urban, barren", 658 | "gravity": "1", 659 | "orbital_period": "391", 660 | "population": "421000000" 661 | }, 662 | "model": "starwars.planet", 663 | "pk": 39 664 | }, 665 | { 666 | "fields": { 667 | "edited": "2014-12-20T20:58:18.487Z", 668 | "climate": "unknown", 669 | "surface_water": "unknown", 670 | "name": "Troiken", 671 | "diameter": "unknown", 672 | "rotation_period": "unknown", 673 | "created": "2014-12-20T10:01:37.395Z", 674 | "terrain": "desert, tundra, rainforests, mountains", 675 | "gravity": "unknown", 676 | "orbital_period": "unknown", 677 | "population": "unknown" 678 | }, 679 | "model": "starwars.planet", 680 | "pk": 40 681 | }, 682 | { 683 | "fields": { 684 | "edited": "2014-12-20T20:58:18.489Z", 685 | "climate": "unknown", 686 | "surface_water": "unknown", 687 | "name": "Tund", 688 | "diameter": "12190", 689 | "rotation_period": "48", 690 | "created": "2014-12-20T10:07:29.578Z", 691 | "terrain": "barren, ash", 692 | "gravity": "unknown", 693 | "orbital_period": "1770", 694 | "population": "0" 695 | }, 696 | "model": "starwars.planet", 697 | "pk": 41 698 | }, 699 | { 700 | "fields": { 701 | "edited": "2014-12-20T20:58:18.491Z", 702 | "climate": "temperate", 703 | "surface_water": "unknown", 704 | "name": "Haruun Kal", 705 | "diameter": "10120", 706 | "rotation_period": "25", 707 | "created": "2014-12-20T10:12:28.980Z", 708 | "terrain": "toxic cloudsea, plateaus, volcanoes", 709 | "gravity": "0.98", 710 | "orbital_period": "383", 711 | "population": "705300" 712 | }, 713 | "model": "starwars.planet", 714 | "pk": 42 715 | }, 716 | { 717 | "fields": { 718 | "edited": "2014-12-20T20:58:18.493Z", 719 | "climate": "temperate", 720 | "surface_water": "20", 721 | "name": "Cerea", 722 | "diameter": "unknown", 723 | "rotation_period": "27", 724 | "created": "2014-12-20T10:14:48.178Z", 725 | "terrain": "verdant", 726 | "gravity": "1", 727 | "orbital_period": "386", 728 | "population": "450000000" 729 | }, 730 | "model": "starwars.planet", 731 | "pk": 43 732 | }, 733 | { 734 | "fields": { 735 | "edited": "2014-12-20T20:58:18.495Z", 736 | "climate": "tropical, temperate", 737 | "surface_water": "80", 738 | "name": "Glee Anselm", 739 | "diameter": "15600", 740 | "rotation_period": "33", 741 | "created": "2014-12-20T10:18:26.110Z", 742 | "terrain": "lakes, islands, swamps, seas", 743 | "gravity": "1", 744 | "orbital_period": "206", 745 | "population": "500000000" 746 | }, 747 | "model": "starwars.planet", 748 | "pk": 44 749 | }, 750 | { 751 | "fields": { 752 | "edited": "2014-12-20T20:58:18.497Z", 753 | "climate": "unknown", 754 | "surface_water": "unknown", 755 | "name": "Iridonia", 756 | "diameter": "unknown", 757 | "rotation_period": "29", 758 | "created": "2014-12-20T10:26:05.788Z", 759 | "terrain": "rocky canyons, acid pools", 760 | "gravity": "unknown", 761 | "orbital_period": "413", 762 | "population": "unknown" 763 | }, 764 | "model": "starwars.planet", 765 | "pk": 45 766 | }, 767 | { 768 | "fields": { 769 | "edited": "2014-12-20T20:58:18.498Z", 770 | "climate": "unknown", 771 | "surface_water": "unknown", 772 | "name": "Tholoth", 773 | "diameter": "unknown", 774 | "rotation_period": "unknown", 775 | "created": "2014-12-20T10:28:31.117Z", 776 | "terrain": "unknown", 777 | "gravity": "unknown", 778 | "orbital_period": "unknown", 779 | "population": "unknown" 780 | }, 781 | "model": "starwars.planet", 782 | "pk": 46 783 | }, 784 | { 785 | "fields": { 786 | "edited": "2014-12-20T20:58:18.500Z", 787 | "climate": "arid, rocky, windy", 788 | "surface_water": "unknown", 789 | "name": "Iktotch", 790 | "diameter": "unknown", 791 | "rotation_period": "22", 792 | "created": "2014-12-20T10:31:32.413Z", 793 | "terrain": "rocky", 794 | "gravity": "1", 795 | "orbital_period": "481", 796 | "population": "unknown" 797 | }, 798 | "model": "starwars.planet", 799 | "pk": 47 800 | }, 801 | { 802 | "fields": { 803 | "edited": "2014-12-20T20:58:18.502Z", 804 | "climate": "unknown", 805 | "surface_water": "unknown", 806 | "name": "Quermia", 807 | "diameter": "unknown", 808 | "rotation_period": "unknown", 809 | "created": "2014-12-20T10:34:08.249Z", 810 | "terrain": "unknown", 811 | "gravity": "unknown", 812 | "orbital_period": "unknown", 813 | "population": "unknown" 814 | }, 815 | "model": "starwars.planet", 816 | "pk": 48 817 | }, 818 | { 819 | "fields": { 820 | "edited": "2014-12-20T20:58:18.504Z", 821 | "climate": "temperate", 822 | "surface_water": "unknown", 823 | "name": "Dorin", 824 | "diameter": "13400", 825 | "rotation_period": "22", 826 | "created": "2014-12-20T10:48:36.141Z", 827 | "terrain": "unknown", 828 | "gravity": "1", 829 | "orbital_period": "409", 830 | "population": "unknown" 831 | }, 832 | "model": "starwars.planet", 833 | "pk": 49 834 | }, 835 | { 836 | "fields": { 837 | "edited": "2014-12-20T20:58:18.506Z", 838 | "climate": "temperate", 839 | "surface_water": "unknown", 840 | "name": "Champala", 841 | "diameter": "unknown", 842 | "rotation_period": "27", 843 | "created": "2014-12-20T10:52:51.524Z", 844 | "terrain": "oceans, rainforests, plateaus", 845 | "gravity": "1", 846 | "orbital_period": "318", 847 | "population": "3500000000" 848 | }, 849 | "model": "starwars.planet", 850 | "pk": 50 851 | }, 852 | { 853 | "fields": { 854 | "edited": "2014-12-20T20:58:18.508Z", 855 | "climate": "unknown", 856 | "surface_water": "unknown", 857 | "name": "Mirial", 858 | "diameter": "unknown", 859 | "rotation_period": "unknown", 860 | "created": "2014-12-20T16:44:46.318Z", 861 | "terrain": "deserts", 862 | "gravity": "unknown", 863 | "orbital_period": "unknown", 864 | "population": "unknown" 865 | }, 866 | "model": "starwars.planet", 867 | "pk": 51 868 | }, 869 | { 870 | "fields": { 871 | "edited": "2014-12-20T20:58:18.510Z", 872 | "climate": "unknown", 873 | "surface_water": "unknown", 874 | "name": "Serenno", 875 | "diameter": "unknown", 876 | "rotation_period": "unknown", 877 | "created": "2014-12-20T16:52:13.357Z", 878 | "terrain": "rainforests, rivers, mountains", 879 | "gravity": "unknown", 880 | "orbital_period": "unknown", 881 | "population": "unknown" 882 | }, 883 | "model": "starwars.planet", 884 | "pk": 52 885 | }, 886 | { 887 | "fields": { 888 | "edited": "2014-12-20T20:58:18.512Z", 889 | "climate": "unknown", 890 | "surface_water": "unknown", 891 | "name": "Concord Dawn", 892 | "diameter": "unknown", 893 | "rotation_period": "unknown", 894 | "created": "2014-12-20T16:54:39.909Z", 895 | "terrain": "jungles, forests, deserts", 896 | "gravity": "unknown", 897 | "orbital_period": "unknown", 898 | "population": "unknown" 899 | }, 900 | "model": "starwars.planet", 901 | "pk": 53 902 | }, 903 | { 904 | "fields": { 905 | "edited": "2014-12-20T20:58:18.514Z", 906 | "climate": "unknown", 907 | "surface_water": "unknown", 908 | "name": "Zolan", 909 | "diameter": "unknown", 910 | "rotation_period": "unknown", 911 | "created": "2014-12-20T16:56:37.250Z", 912 | "terrain": "unknown", 913 | "gravity": "unknown", 914 | "orbital_period": "unknown", 915 | "population": "unknown" 916 | }, 917 | "model": "starwars.planet", 918 | "pk": 54 919 | }, 920 | { 921 | "fields": { 922 | "edited": "2014-12-20T20:58:18.516Z", 923 | "climate": "frigid", 924 | "surface_water": "100", 925 | "name": "Ojom", 926 | "diameter": "unknown", 927 | "rotation_period": "unknown", 928 | "created": "2014-12-20T17:27:41.286Z", 929 | "terrain": "oceans, glaciers", 930 | "gravity": "unknown", 931 | "orbital_period": "unknown", 932 | "population": "500000000" 933 | }, 934 | "model": "starwars.planet", 935 | "pk": 55 936 | }, 937 | { 938 | "fields": { 939 | "edited": "2014-12-20T20:58:18.517Z", 940 | "climate": "temperate", 941 | "surface_water": "unknown", 942 | "name": "Skako", 943 | "diameter": "unknown", 944 | "rotation_period": "27", 945 | "created": "2014-12-20T17:50:47.864Z", 946 | "terrain": "urban, vines", 947 | "gravity": "1", 948 | "orbital_period": "384", 949 | "population": "500000000000" 950 | }, 951 | "model": "starwars.planet", 952 | "pk": 56 953 | }, 954 | { 955 | "fields": { 956 | "edited": "2014-12-20T20:58:18.519Z", 957 | "climate": "temperate", 958 | "surface_water": "25", 959 | "name": "Muunilinst", 960 | "diameter": "13800", 961 | "rotation_period": "28", 962 | "created": "2014-12-20T17:57:47.420Z", 963 | "terrain": "plains, forests, hills, mountains", 964 | "gravity": "1", 965 | "orbital_period": "412", 966 | "population": "5000000000" 967 | }, 968 | "model": "starwars.planet", 969 | "pk": 57 970 | }, 971 | { 972 | "fields": { 973 | "edited": "2014-12-20T20:58:18.521Z", 974 | "climate": "temperate", 975 | "surface_water": "unknown", 976 | "name": "Shili", 977 | "diameter": "unknown", 978 | "rotation_period": "unknown", 979 | "created": "2014-12-20T18:43:14.049Z", 980 | "terrain": "cities, savannahs, seas, plains", 981 | "gravity": "1", 982 | "orbital_period": "unknown", 983 | "population": "unknown" 984 | }, 985 | "model": "starwars.planet", 986 | "pk": 58 987 | }, 988 | { 989 | "fields": { 990 | "edited": "2014-12-20T20:58:18.523Z", 991 | "climate": "arid, temperate, tropical", 992 | "surface_water": "unknown", 993 | "name": "Kalee", 994 | "diameter": "13850", 995 | "rotation_period": "23", 996 | "created": "2014-12-20T19:43:51.278Z", 997 | "terrain": "rainforests, cliffs, canyons, seas", 998 | "gravity": "1", 999 | "orbital_period": "378", 1000 | "population": "4000000000" 1001 | }, 1002 | "model": "starwars.planet", 1003 | "pk": 59 1004 | }, 1005 | { 1006 | "fields": { 1007 | "edited": "2014-12-20T20:58:18.525Z", 1008 | "climate": "unknown", 1009 | "surface_water": "unknown", 1010 | "name": "Umbara", 1011 | "diameter": "unknown", 1012 | "rotation_period": "unknown", 1013 | "created": "2014-12-20T20:18:36.256Z", 1014 | "terrain": "unknown", 1015 | "gravity": "unknown", 1016 | "orbital_period": "unknown", 1017 | "population": "unknown" 1018 | }, 1019 | "model": "starwars.planet", 1020 | "pk": 60 1021 | } 1022 | ] 1023 | -------------------------------------------------------------------------------- /starwars/fixtures/species.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "fields": { 4 | "edited": "2014-12-20T21:36:42.136Z", 5 | "classification": "mammal", 6 | "name": "Human", 7 | "designation": "sentient", 8 | "created": "2014-12-10T13:52:11.567Z", 9 | "eye_colors": "brown, blue, green, hazel, grey, amber", 10 | "people": [ 11 | 66, 12 | 67, 13 | 68, 14 | 74 15 | ], 16 | "skin_colors": "caucasian, black, asian, hispanic", 17 | "language": "Galactic Basic", 18 | "hair_colors": "blonde, brown, black, red", 19 | "homeworld": 9, 20 | "average_lifespan": "120", 21 | "average_height": "180" 22 | }, 23 | "model": "starwars.species", 24 | "pk": 1 25 | }, 26 | { 27 | "fields": { 28 | "edited": "2014-12-20T21:36:42.139Z", 29 | "classification": "artificial", 30 | "name": "Droid", 31 | "designation": "sentient", 32 | "created": "2014-12-10T15:16:16.259Z", 33 | "eye_colors": "n/a", 34 | "people": [ 35 | 2, 36 | 3, 37 | 8, 38 | 23 39 | ], 40 | "skin_colors": "n/a", 41 | "language": "n/a", 42 | "hair_colors": "n/a", 43 | "homeworld": null, 44 | "average_lifespan": "indefinite", 45 | "average_height": "n/a" 46 | }, 47 | "model": "starwars.species", 48 | "pk": 2 49 | }, 50 | { 51 | "fields": { 52 | "edited": "2014-12-20T21:36:42.142Z", 53 | "classification": "mammal", 54 | "name": "Wookie", 55 | "designation": "sentient", 56 | "created": "2014-12-10T16:44:31.486Z", 57 | "eye_colors": "blue, green, yellow, brown, golden, red", 58 | "people": [ 59 | 13, 60 | 80 61 | ], 62 | "skin_colors": "gray", 63 | "language": "Shyriiwook", 64 | "hair_colors": "black, brown", 65 | "homeworld": 14, 66 | "average_lifespan": "400", 67 | "average_height": "210" 68 | }, 69 | "model": "starwars.species", 70 | "pk": 3 71 | }, 72 | { 73 | "fields": { 74 | "edited": "2014-12-20T21:36:42.144Z", 75 | "classification": "sentient", 76 | "name": "Rodian", 77 | "designation": "reptilian", 78 | "created": "2014-12-10T17:05:26.471Z", 79 | "eye_colors": "black", 80 | "people": [ 81 | 15 82 | ], 83 | "skin_colors": "green, blue", 84 | "language": "Galatic Basic", 85 | "hair_colors": "n/a", 86 | "homeworld": 23, 87 | "average_lifespan": "unknown", 88 | "average_height": "170" 89 | }, 90 | "model": "starwars.species", 91 | "pk": 4 92 | }, 93 | { 94 | "fields": { 95 | "edited": "2014-12-20T21:36:42.146Z", 96 | "classification": "gastropod", 97 | "name": "Hutt", 98 | "designation": "sentient", 99 | "created": "2014-12-10T17:12:50.410Z", 100 | "eye_colors": "yellow, red", 101 | "people": [ 102 | 16 103 | ], 104 | "skin_colors": "green, brown, tan", 105 | "language": "Huttese", 106 | "hair_colors": "n/a", 107 | "homeworld": 24, 108 | "average_lifespan": "1000", 109 | "average_height": "300" 110 | }, 111 | "model": "starwars.species", 112 | "pk": 5 113 | }, 114 | { 115 | "fields": { 116 | "edited": "2014-12-20T21:36:42.148Z", 117 | "classification": "mammal", 118 | "name": "Yoda's species", 119 | "designation": "sentient", 120 | "created": "2014-12-15T12:27:22.877Z", 121 | "eye_colors": "brown, green, yellow", 122 | "people": [ 123 | 20 124 | ], 125 | "skin_colors": "green, yellow", 126 | "language": "Galactic basic", 127 | "hair_colors": "brown, white", 128 | "homeworld": 28, 129 | "average_lifespan": "900", 130 | "average_height": "66" 131 | }, 132 | "model": "starwars.species", 133 | "pk": 6 134 | }, 135 | { 136 | "fields": { 137 | "edited": "2014-12-20T21:36:42.151Z", 138 | "classification": "reptile", 139 | "name": "Trandoshan", 140 | "designation": "sentient", 141 | "created": "2014-12-15T13:07:47.704Z", 142 | "eye_colors": "yellow, orange", 143 | "people": [ 144 | 24 145 | ], 146 | "skin_colors": "brown, green", 147 | "language": "Dosh", 148 | "hair_colors": "none", 149 | "homeworld": 29, 150 | "average_lifespan": "unknown", 151 | "average_height": "200" 152 | }, 153 | "model": "starwars.species", 154 | "pk": 7 155 | }, 156 | { 157 | "fields": { 158 | "edited": "2014-12-20T21:36:42.153Z", 159 | "classification": "amphibian", 160 | "name": "Mon Calamari", 161 | "designation": "sentient", 162 | "created": "2014-12-18T11:09:52.263Z", 163 | "eye_colors": "yellow", 164 | "people": [ 165 | 27 166 | ], 167 | "skin_colors": "red, blue, brown, magenta", 168 | "language": "Mon Calamarian", 169 | "hair_colors": "none", 170 | "homeworld": 31, 171 | "average_lifespan": "unknown", 172 | "average_height": "160" 173 | }, 174 | "model": "starwars.species", 175 | "pk": 8 176 | }, 177 | { 178 | "fields": { 179 | "edited": "2014-12-20T21:36:42.155Z", 180 | "classification": "mammal", 181 | "name": "Ewok", 182 | "designation": "sentient", 183 | "created": "2014-12-18T11:22:00.285Z", 184 | "eye_colors": "orange, brown", 185 | "people": [ 186 | 30 187 | ], 188 | "skin_colors": "brown", 189 | "language": "Ewokese", 190 | "hair_colors": "white, brown, black", 191 | "homeworld": 7, 192 | "average_lifespan": "unknown", 193 | "average_height": "100" 194 | }, 195 | "model": "starwars.species", 196 | "pk": 9 197 | }, 198 | { 199 | "fields": { 200 | "edited": "2014-12-20T21:36:42.157Z", 201 | "classification": "mammal", 202 | "name": "Sullustan", 203 | "designation": "sentient", 204 | "created": "2014-12-18T11:26:20.103Z", 205 | "eye_colors": "black", 206 | "people": [ 207 | 31 208 | ], 209 | "skin_colors": "pale", 210 | "language": "Sullutese", 211 | "hair_colors": "none", 212 | "homeworld": 33, 213 | "average_lifespan": "unknown", 214 | "average_height": "180" 215 | }, 216 | "model": "starwars.species", 217 | "pk": 10 218 | }, 219 | { 220 | "fields": { 221 | "edited": "2014-12-20T21:36:42.160Z", 222 | "classification": "unknown", 223 | "name": "Neimodian", 224 | "designation": "sentient", 225 | "created": "2014-12-19T17:07:31.319Z", 226 | "eye_colors": "red, pink", 227 | "people": [ 228 | 33 229 | ], 230 | "skin_colors": "grey, green", 231 | "language": "Neimoidia", 232 | "hair_colors": "none", 233 | "homeworld": 18, 234 | "average_lifespan": "unknown", 235 | "average_height": "180" 236 | }, 237 | "model": "starwars.species", 238 | "pk": 11 239 | }, 240 | { 241 | "fields": { 242 | "edited": "2014-12-20T21:36:42.163Z", 243 | "classification": "amphibian", 244 | "name": "Gungan", 245 | "designation": "sentient", 246 | "created": "2014-12-19T17:30:37.341Z", 247 | "eye_colors": "orange", 248 | "people": [ 249 | 36, 250 | 37, 251 | 38 252 | ], 253 | "skin_colors": "brown, green", 254 | "language": "Gungan basic", 255 | "hair_colors": "none", 256 | "homeworld": 8, 257 | "average_lifespan": "unknown", 258 | "average_height": "190" 259 | }, 260 | "model": "starwars.species", 261 | "pk": 12 262 | }, 263 | { 264 | "fields": { 265 | "edited": "2014-12-20T21:36:42.165Z", 266 | "classification": "mammal", 267 | "name": "Toydarian", 268 | "designation": "sentient", 269 | "created": "2014-12-19T17:48:56.893Z", 270 | "eye_colors": "yellow", 271 | "people": [ 272 | 40 273 | ], 274 | "skin_colors": "blue, green, grey", 275 | "language": "Toydarian", 276 | "hair_colors": "none", 277 | "homeworld": 34, 278 | "average_lifespan": "91", 279 | "average_height": "120" 280 | }, 281 | "model": "starwars.species", 282 | "pk": 13 283 | }, 284 | { 285 | "fields": { 286 | "edited": "2014-12-20T21:36:42.167Z", 287 | "classification": "mammal", 288 | "name": "Dug", 289 | "designation": "sentient", 290 | "created": "2014-12-19T17:53:11.214Z", 291 | "eye_colors": "yellow, blue", 292 | "people": [ 293 | 41 294 | ], 295 | "skin_colors": "brown, purple, grey, red", 296 | "language": "Dugese", 297 | "hair_colors": "none", 298 | "homeworld": 35, 299 | "average_lifespan": "unknown", 300 | "average_height": "100" 301 | }, 302 | "model": "starwars.species", 303 | "pk": 14 304 | }, 305 | { 306 | "fields": { 307 | "edited": "2014-12-20T21:36:42.169Z", 308 | "classification": "mammals", 309 | "name": "Twi'lek", 310 | "designation": "sentient", 311 | "created": "2014-12-20T09:48:02.406Z", 312 | "eye_colors": "blue, brown, orange, pink", 313 | "people": [ 314 | 45, 315 | 46 316 | ], 317 | "skin_colors": "orange, yellow, blue, green, pink, purple, tan", 318 | "language": "Twi'leki", 319 | "hair_colors": "none", 320 | "homeworld": 37, 321 | "average_lifespan": "unknown", 322 | "average_height": "200" 323 | }, 324 | "model": "starwars.species", 325 | "pk": 15 326 | }, 327 | { 328 | "fields": { 329 | "edited": "2014-12-20T21:36:42.171Z", 330 | "classification": "reptile", 331 | "name": "Aleena", 332 | "designation": "sentient", 333 | "created": "2014-12-20T09:53:16.481Z", 334 | "eye_colors": "unknown", 335 | "people": [ 336 | 47 337 | ], 338 | "skin_colors": "blue, gray", 339 | "language": "Aleena", 340 | "hair_colors": "none", 341 | "homeworld": 38, 342 | "average_lifespan": "79", 343 | "average_height": "80" 344 | }, 345 | "model": "starwars.species", 346 | "pk": 16 347 | }, 348 | { 349 | "fields": { 350 | "edited": "2014-12-20T21:36:42.173Z", 351 | "classification": "unknown", 352 | "name": "Vulptereen", 353 | "designation": "sentient", 354 | "created": "2014-12-20T09:57:33.128Z", 355 | "eye_colors": "yellow", 356 | "people": [ 357 | 48 358 | ], 359 | "skin_colors": "grey", 360 | "language": "vulpterish", 361 | "hair_colors": "none", 362 | "homeworld": 39, 363 | "average_lifespan": "unknown", 364 | "average_height": "100" 365 | }, 366 | "model": "starwars.species", 367 | "pk": 17 368 | }, 369 | { 370 | "fields": { 371 | "edited": "2014-12-20T21:36:42.175Z", 372 | "classification": "unknown", 373 | "name": "Xexto", 374 | "designation": "sentient", 375 | "created": "2014-12-20T10:02:13.915Z", 376 | "eye_colors": "black", 377 | "people": [ 378 | 49 379 | ], 380 | "skin_colors": "grey, yellow, purple", 381 | "language": "Xextese", 382 | "hair_colors": "none", 383 | "homeworld": 40, 384 | "average_lifespan": "unknown", 385 | "average_height": "125" 386 | }, 387 | "model": "starwars.species", 388 | "pk": 18 389 | }, 390 | { 391 | "fields": { 392 | "edited": "2014-12-20T21:36:42.177Z", 393 | "classification": "unknown", 394 | "name": "Toong", 395 | "designation": "sentient", 396 | "created": "2014-12-20T10:08:36.795Z", 397 | "eye_colors": "orange", 398 | "people": [ 399 | 50 400 | ], 401 | "skin_colors": "grey, green, yellow", 402 | "language": "Tundan", 403 | "hair_colors": "none", 404 | "homeworld": 41, 405 | "average_lifespan": "unknown", 406 | "average_height": "200" 407 | }, 408 | "model": "starwars.species", 409 | "pk": 19 410 | }, 411 | { 412 | "fields": { 413 | "edited": "2014-12-20T21:36:42.179Z", 414 | "classification": "mammal", 415 | "name": "Cerean", 416 | "designation": "sentient", 417 | "created": "2014-12-20T10:15:33.765Z", 418 | "eye_colors": "hazel", 419 | "people": [ 420 | 52 421 | ], 422 | "skin_colors": "pale pink", 423 | "language": "Cerean", 424 | "hair_colors": "red, blond, black, white", 425 | "homeworld": 43, 426 | "average_lifespan": "unknown", 427 | "average_height": "200" 428 | }, 429 | "model": "starwars.species", 430 | "pk": 20 431 | }, 432 | { 433 | "fields": { 434 | "edited": "2014-12-20T21:36:42.181Z", 435 | "classification": "amphibian", 436 | "name": "Nautolan", 437 | "designation": "sentient", 438 | "created": "2014-12-20T10:18:58.610Z", 439 | "eye_colors": "black", 440 | "people": [ 441 | 53 442 | ], 443 | "skin_colors": "green, blue, brown, red", 444 | "language": "Nautila", 445 | "hair_colors": "none", 446 | "homeworld": 44, 447 | "average_lifespan": "70", 448 | "average_height": "180" 449 | }, 450 | "model": "starwars.species", 451 | "pk": 21 452 | }, 453 | { 454 | "fields": { 455 | "edited": "2014-12-20T21:36:42.183Z", 456 | "classification": "mammal", 457 | "name": "Zabrak", 458 | "designation": "sentient", 459 | "created": "2014-12-20T10:26:59.894Z", 460 | "eye_colors": "brown, orange", 461 | "people": [ 462 | 44, 463 | 54 464 | ], 465 | "skin_colors": "pale, brown, red, orange, yellow", 466 | "language": "Zabraki", 467 | "hair_colors": "black", 468 | "homeworld": 45, 469 | "average_lifespan": "unknown", 470 | "average_height": "180" 471 | }, 472 | "model": "starwars.species", 473 | "pk": 22 474 | }, 475 | { 476 | "fields": { 477 | "edited": "2014-12-20T21:36:42.186Z", 478 | "classification": "mammal", 479 | "name": "Tholothian", 480 | "designation": "sentient", 481 | "created": "2014-12-20T10:29:13.798Z", 482 | "eye_colors": "blue, indigo", 483 | "people": [ 484 | 55 485 | ], 486 | "skin_colors": "dark", 487 | "language": "unknown", 488 | "hair_colors": "unknown", 489 | "homeworld": 46, 490 | "average_lifespan": "unknown", 491 | "average_height": "unknown" 492 | }, 493 | "model": "starwars.species", 494 | "pk": 23 495 | }, 496 | { 497 | "fields": { 498 | "edited": "2014-12-20T21:36:42.188Z", 499 | "classification": "unknown", 500 | "name": "Iktotchi", 501 | "designation": "sentient", 502 | "created": "2014-12-20T10:32:13.046Z", 503 | "eye_colors": "orange", 504 | "people": [ 505 | 56 506 | ], 507 | "skin_colors": "pink", 508 | "language": "Iktotchese", 509 | "hair_colors": "none", 510 | "homeworld": 47, 511 | "average_lifespan": "unknown", 512 | "average_height": "180" 513 | }, 514 | "model": "starwars.species", 515 | "pk": 24 516 | }, 517 | { 518 | "fields": { 519 | "edited": "2014-12-20T21:36:42.189Z", 520 | "classification": "mammal", 521 | "name": "Quermian", 522 | "designation": "sentient", 523 | "created": "2014-12-20T10:34:50.827Z", 524 | "eye_colors": "yellow", 525 | "people": [ 526 | 57 527 | ], 528 | "skin_colors": "white", 529 | "language": "Quermian", 530 | "hair_colors": "none", 531 | "homeworld": 48, 532 | "average_lifespan": "86", 533 | "average_height": "240" 534 | }, 535 | "model": "starwars.species", 536 | "pk": 25 537 | }, 538 | { 539 | "fields": { 540 | "edited": "2014-12-20T21:36:42.191Z", 541 | "classification": "unknown", 542 | "name": "Kel Dor", 543 | "designation": "sentient", 544 | "created": "2014-12-20T10:49:21.692Z", 545 | "eye_colors": "black, silver", 546 | "people": [ 547 | 58 548 | ], 549 | "skin_colors": "peach, orange, red", 550 | "language": "Kel Dor", 551 | "hair_colors": "none", 552 | "homeworld": 49, 553 | "average_lifespan": "70", 554 | "average_height": "180" 555 | }, 556 | "model": "starwars.species", 557 | "pk": 26 558 | }, 559 | { 560 | "fields": { 561 | "edited": "2014-12-20T21:36:42.193Z", 562 | "classification": "amphibian", 563 | "name": "Chagrian", 564 | "designation": "sentient", 565 | "created": "2014-12-20T10:53:28.795Z", 566 | "eye_colors": "blue", 567 | "people": [ 568 | 59 569 | ], 570 | "skin_colors": "blue", 571 | "language": "Chagria", 572 | "hair_colors": "none", 573 | "homeworld": 50, 574 | "average_lifespan": "unknown", 575 | "average_height": "190" 576 | }, 577 | "model": "starwars.species", 578 | "pk": 27 579 | }, 580 | { 581 | "fields": { 582 | "edited": "2014-12-20T21:36:42.195Z", 583 | "classification": "insectoid", 584 | "name": "Geonosian", 585 | "designation": "sentient", 586 | "created": "2014-12-20T16:40:45.618Z", 587 | "eye_colors": "green, hazel", 588 | "people": [ 589 | 63 590 | ], 591 | "skin_colors": "green, brown", 592 | "language": "Geonosian", 593 | "hair_colors": "none", 594 | "homeworld": 11, 595 | "average_lifespan": "unknown", 596 | "average_height": "178" 597 | }, 598 | "model": "starwars.species", 599 | "pk": 28 600 | }, 601 | { 602 | "fields": { 603 | "edited": "2014-12-20T21:36:42.197Z", 604 | "classification": "mammal", 605 | "name": "Mirialan", 606 | "designation": "sentient", 607 | "created": "2014-12-20T16:46:48.290Z", 608 | "eye_colors": "blue, green, red, yellow, brown, orange", 609 | "people": [ 610 | 64, 611 | 65 612 | ], 613 | "skin_colors": "yellow, green", 614 | "language": "Mirialan", 615 | "hair_colors": "black, brown", 616 | "homeworld": 51, 617 | "average_lifespan": "unknown", 618 | "average_height": "180" 619 | }, 620 | "model": "starwars.species", 621 | "pk": 29 622 | }, 623 | { 624 | "fields": { 625 | "edited": "2014-12-20T21:36:42.199Z", 626 | "classification": "reptilian", 627 | "name": "Clawdite", 628 | "designation": "sentient", 629 | "created": "2014-12-20T16:57:46.171Z", 630 | "eye_colors": "yellow", 631 | "people": [ 632 | 70 633 | ], 634 | "skin_colors": "green, yellow", 635 | "language": "Clawdite", 636 | "hair_colors": "none", 637 | "homeworld": 54, 638 | "average_lifespan": "70", 639 | "average_height": "180" 640 | }, 641 | "model": "starwars.species", 642 | "pk": 30 643 | }, 644 | { 645 | "fields": { 646 | "edited": "2014-12-20T21:36:42.200Z", 647 | "classification": "amphibian", 648 | "name": "Besalisk", 649 | "designation": "sentient", 650 | "created": "2014-12-20T17:28:28.821Z", 651 | "eye_colors": "yellow", 652 | "people": [ 653 | 71 654 | ], 655 | "skin_colors": "brown", 656 | "language": "besalisk", 657 | "hair_colors": "none", 658 | "homeworld": 55, 659 | "average_lifespan": "75", 660 | "average_height": "178" 661 | }, 662 | "model": "starwars.species", 663 | "pk": 31 664 | }, 665 | { 666 | "fields": { 667 | "edited": "2014-12-20T21:36:42.202Z", 668 | "classification": "amphibian", 669 | "name": "Kaminoan", 670 | "designation": "sentient", 671 | "created": "2014-12-20T17:31:24.838Z", 672 | "eye_colors": "black", 673 | "people": [ 674 | 72, 675 | 73 676 | ], 677 | "skin_colors": "grey, blue", 678 | "language": "Kaminoan", 679 | "hair_colors": "none", 680 | "homeworld": 10, 681 | "average_lifespan": "80", 682 | "average_height": "220" 683 | }, 684 | "model": "starwars.species", 685 | "pk": 32 686 | }, 687 | { 688 | "fields": { 689 | "edited": "2014-12-20T21:36:42.204Z", 690 | "classification": "mammal", 691 | "name": "Skakoan", 692 | "designation": "sentient", 693 | "created": "2014-12-20T17:53:54.515Z", 694 | "eye_colors": "unknown", 695 | "people": [ 696 | 76 697 | ], 698 | "skin_colors": "grey, green", 699 | "language": "Skakoan", 700 | "hair_colors": "none", 701 | "homeworld": 56, 702 | "average_lifespan": "unknown", 703 | "average_height": "unknown" 704 | }, 705 | "model": "starwars.species", 706 | "pk": 33 707 | }, 708 | { 709 | "fields": { 710 | "edited": "2014-12-20T21:36:42.207Z", 711 | "classification": "mammal", 712 | "name": "Muun", 713 | "designation": "sentient", 714 | "created": "2014-12-20T17:58:19.088Z", 715 | "eye_colors": "black", 716 | "people": [ 717 | 77 718 | ], 719 | "skin_colors": "grey, white", 720 | "language": "Muun", 721 | "hair_colors": "none", 722 | "homeworld": 57, 723 | "average_lifespan": "100", 724 | "average_height": "190" 725 | }, 726 | "model": "starwars.species", 727 | "pk": 34 728 | }, 729 | { 730 | "fields": { 731 | "edited": "2014-12-20T21:36:42.209Z", 732 | "classification": "mammal", 733 | "name": "Togruta", 734 | "designation": "sentient", 735 | "created": "2014-12-20T18:44:03.246Z", 736 | "eye_colors": "red, orange, yellow, green, blue, black", 737 | "people": [ 738 | 78 739 | ], 740 | "skin_colors": "red, white, orange, yellow, green, blue", 741 | "language": "Togruti", 742 | "hair_colors": "none", 743 | "homeworld": 58, 744 | "average_lifespan": "94", 745 | "average_height": "180" 746 | }, 747 | "model": "starwars.species", 748 | "pk": 35 749 | }, 750 | { 751 | "fields": { 752 | "edited": "2014-12-20T21:36:42.210Z", 753 | "classification": "reptile", 754 | "name": "Kaleesh", 755 | "designation": "sentient", 756 | "created": "2014-12-20T19:45:42.537Z", 757 | "eye_colors": "yellow", 758 | "people": [ 759 | 79 760 | ], 761 | "skin_colors": "brown, orange, tan", 762 | "language": "Kaleesh", 763 | "hair_colors": "none", 764 | "homeworld": 59, 765 | "average_lifespan": "80", 766 | "average_height": "170" 767 | }, 768 | "model": "starwars.species", 769 | "pk": 36 770 | }, 771 | { 772 | "fields": { 773 | "edited": "2014-12-20T21:36:42.212Z", 774 | "classification": "mammal", 775 | "name": "Pau'an", 776 | "designation": "sentient", 777 | "created": "2014-12-20T20:35:06.777Z", 778 | "eye_colors": "black", 779 | "people": [ 780 | 83 781 | ], 782 | "skin_colors": "grey", 783 | "language": "Utapese", 784 | "hair_colors": "none", 785 | "homeworld": 12, 786 | "average_lifespan": "700", 787 | "average_height": "190" 788 | }, 789 | "model": "starwars.species", 790 | "pk": 37 791 | } 792 | ] 793 | -------------------------------------------------------------------------------- /starwars/fixtures/starships.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "fields": { 4 | "pilots": [], 5 | "MGLT": "60", 6 | "starship_class": "corvette", 7 | "hyperdrive_rating": "2.0" 8 | }, 9 | "model": "starwars.starship", 10 | "pk": 2 11 | }, 12 | { 13 | "fields": { 14 | "pilots": [], 15 | "MGLT": "60", 16 | "starship_class": "Star Destroyer", 17 | "hyperdrive_rating": "2.0" 18 | }, 19 | "model": "starwars.starship", 20 | "pk": 3 21 | }, 22 | { 23 | "fields": { 24 | "pilots": [], 25 | "MGLT": "70", 26 | "starship_class": "landing craft", 27 | "hyperdrive_rating": "1.0" 28 | }, 29 | "model": "starwars.starship", 30 | "pk": 5 31 | }, 32 | { 33 | "fields": { 34 | "pilots": [], 35 | "MGLT": "10", 36 | "starship_class": "Deep Space Mobile Battlestation", 37 | "hyperdrive_rating": "4.0" 38 | }, 39 | "model": "starwars.starship", 40 | "pk": 9 41 | }, 42 | { 43 | "fields": { 44 | "pilots": [ 45 | 13, 46 | 14, 47 | 25, 48 | 31 49 | ], 50 | "MGLT": "75", 51 | "starship_class": "Light freighter", 52 | "hyperdrive_rating": "0.5" 53 | }, 54 | "model": "starwars.starship", 55 | "pk": 10 56 | }, 57 | { 58 | "fields": { 59 | "pilots": [], 60 | "MGLT": "80", 61 | "starship_class": "assault starfighter", 62 | "hyperdrive_rating": "1.0" 63 | }, 64 | "model": "starwars.starship", 65 | "pk": 11 66 | }, 67 | { 68 | "fields": { 69 | "pilots": [ 70 | 1, 71 | 9, 72 | 18, 73 | 19 74 | ], 75 | "MGLT": "100", 76 | "starship_class": "Starfighter", 77 | "hyperdrive_rating": "1.0" 78 | }, 79 | "model": "starwars.starship", 80 | "pk": 12 81 | }, 82 | { 83 | "fields": { 84 | "pilots": [ 85 | 4 86 | ], 87 | "MGLT": "105", 88 | "starship_class": "Starfighter", 89 | "hyperdrive_rating": "1.0" 90 | }, 91 | "model": "starwars.starship", 92 | "pk": 13 93 | }, 94 | { 95 | "fields": { 96 | "pilots": [], 97 | "MGLT": "40", 98 | "starship_class": "Star dreadnought", 99 | "hyperdrive_rating": "2.0" 100 | }, 101 | "model": "starwars.starship", 102 | "pk": 15 103 | }, 104 | { 105 | "fields": { 106 | "pilots": [], 107 | "MGLT": "20", 108 | "starship_class": "Medium transport", 109 | "hyperdrive_rating": "4.0" 110 | }, 111 | "model": "starwars.starship", 112 | "pk": 17 113 | }, 114 | { 115 | "fields": { 116 | "pilots": [ 117 | 22 118 | ], 119 | "MGLT": "70", 120 | "starship_class": "Patrol craft", 121 | "hyperdrive_rating": "3.0" 122 | }, 123 | "model": "starwars.starship", 124 | "pk": 21 125 | }, 126 | { 127 | "fields": { 128 | "pilots": [ 129 | 1, 130 | 13, 131 | 14 132 | ], 133 | "MGLT": "50", 134 | "starship_class": "Armed government transport", 135 | "hyperdrive_rating": "1.0" 136 | }, 137 | "model": "starwars.starship", 138 | "pk": 22 139 | }, 140 | { 141 | "fields": { 142 | "pilots": [], 143 | "MGLT": "40", 144 | "starship_class": "Escort ship", 145 | "hyperdrive_rating": "2.0" 146 | }, 147 | "model": "starwars.starship", 148 | "pk": 23 149 | }, 150 | { 151 | "fields": { 152 | "pilots": [], 153 | "MGLT": "60", 154 | "starship_class": "Star Cruiser", 155 | "hyperdrive_rating": "1.0" 156 | }, 157 | "model": "starwars.starship", 158 | "pk": 27 159 | }, 160 | { 161 | "fields": { 162 | "pilots": [ 163 | 29 164 | ], 165 | "MGLT": "120", 166 | "starship_class": "Starfighter", 167 | "hyperdrive_rating": "1.0" 168 | }, 169 | "model": "starwars.starship", 170 | "pk": 28 171 | }, 172 | { 173 | "fields": { 174 | "pilots": [], 175 | "MGLT": "91", 176 | "starship_class": "Assault Starfighter", 177 | "hyperdrive_rating": "2.0" 178 | }, 179 | "model": "starwars.starship", 180 | "pk": 29 181 | }, 182 | { 183 | "fields": { 184 | "pilots": [], 185 | "MGLT": "unknown", 186 | "starship_class": "Space cruiser", 187 | "hyperdrive_rating": "2.0" 188 | }, 189 | "model": "starwars.starship", 190 | "pk": 31 191 | }, 192 | { 193 | "fields": { 194 | "pilots": [], 195 | "MGLT": "unknown", 196 | "starship_class": "Droid control ship", 197 | "hyperdrive_rating": "2.0" 198 | }, 199 | "model": "starwars.starship", 200 | "pk": 32 201 | }, 202 | { 203 | "fields": { 204 | "pilots": [ 205 | 11, 206 | 35, 207 | 60 208 | ], 209 | "MGLT": "unknown", 210 | "starship_class": "Starfighter", 211 | "hyperdrive_rating": "1.0" 212 | }, 213 | "model": "starwars.starship", 214 | "pk": 39 215 | }, 216 | { 217 | "fields": { 218 | "pilots": [ 219 | 39 220 | ], 221 | "MGLT": "unknown", 222 | "starship_class": "yacht", 223 | "hyperdrive_rating": "1.8" 224 | }, 225 | "model": "starwars.starship", 226 | "pk": 40 227 | }, 228 | { 229 | "fields": { 230 | "pilots": [ 231 | 44 232 | ], 233 | "MGLT": "unknown", 234 | "starship_class": "Space Transport", 235 | "hyperdrive_rating": "1.5" 236 | }, 237 | "model": "starwars.starship", 238 | "pk": 41 239 | }, 240 | { 241 | "fields": { 242 | "pilots": [], 243 | "MGLT": "unknown", 244 | "starship_class": "Diplomatic barge", 245 | "hyperdrive_rating": "0.7" 246 | }, 247 | "model": "starwars.starship", 248 | "pk": 43 249 | }, 250 | { 251 | "fields": { 252 | "pilots": [], 253 | "MGLT": "unknown", 254 | "starship_class": "freighter", 255 | "hyperdrive_rating": "unknown" 256 | }, 257 | "model": "starwars.starship", 258 | "pk": 47 259 | }, 260 | { 261 | "fields": { 262 | "pilots": [ 263 | 10, 264 | 58 265 | ], 266 | "MGLT": "unknown", 267 | "starship_class": "Starfighter", 268 | "hyperdrive_rating": "1.0" 269 | }, 270 | "model": "starwars.starship", 271 | "pk": 48 272 | }, 273 | { 274 | "fields": { 275 | "pilots": [ 276 | 35 277 | ], 278 | "MGLT": "unknown", 279 | "starship_class": "yacht", 280 | "hyperdrive_rating": "0.9" 281 | }, 282 | "model": "starwars.starship", 283 | "pk": 49 284 | }, 285 | { 286 | "fields": { 287 | "pilots": [], 288 | "MGLT": "unknown", 289 | "starship_class": "assault ship", 290 | "hyperdrive_rating": "0.6" 291 | }, 292 | "model": "starwars.starship", 293 | "pk": 52 294 | }, 295 | { 296 | "fields": { 297 | "pilots": [], 298 | "MGLT": "unknown", 299 | "starship_class": "yacht", 300 | "hyperdrive_rating": "1.5" 301 | }, 302 | "model": "starwars.starship", 303 | "pk": 58 304 | }, 305 | { 306 | "fields": { 307 | "pilots": [ 308 | 10, 309 | 11 310 | ], 311 | "MGLT": "unknown", 312 | "starship_class": "capital ship", 313 | "hyperdrive_rating": "1.5" 314 | }, 315 | "model": "starwars.starship", 316 | "pk": 59 317 | }, 318 | { 319 | "fields": { 320 | "pilots": [], 321 | "MGLT": "unknown", 322 | "starship_class": "transport", 323 | "hyperdrive_rating": "1.0" 324 | }, 325 | "model": "starwars.starship", 326 | "pk": 61 327 | }, 328 | { 329 | "fields": { 330 | "pilots": [], 331 | "MGLT": "unknown", 332 | "starship_class": "star destroyer", 333 | "hyperdrive_rating": "1.0" 334 | }, 335 | "model": "starwars.starship", 336 | "pk": 63 337 | }, 338 | { 339 | "fields": { 340 | "pilots": [ 341 | 10, 342 | 35 343 | ], 344 | "MGLT": "unknown", 345 | "starship_class": "yacht", 346 | "hyperdrive_rating": "0.5" 347 | }, 348 | "model": "starwars.starship", 349 | "pk": 64 350 | }, 351 | { 352 | "fields": { 353 | "pilots": [ 354 | 10, 355 | 11 356 | ], 357 | "MGLT": "unknown", 358 | "starship_class": "starfighter", 359 | "hyperdrive_rating": "1.0" 360 | }, 361 | "model": "starwars.starship", 362 | "pk": 65 363 | }, 364 | { 365 | "fields": { 366 | "pilots": [], 367 | "MGLT": "100", 368 | "starship_class": "starfighter", 369 | "hyperdrive_rating": "1.0" 370 | }, 371 | "model": "starwars.starship", 372 | "pk": 66 373 | }, 374 | { 375 | "fields": { 376 | "pilots": [], 377 | "MGLT": "unknown", 378 | "starship_class": "cruiser", 379 | "hyperdrive_rating": "1.0" 380 | }, 381 | "model": "starwars.starship", 382 | "pk": 68 383 | }, 384 | { 385 | "fields": { 386 | "pilots": [ 387 | 10, 388 | 79 389 | ], 390 | "MGLT": "unknown", 391 | "starship_class": "starfighter", 392 | "hyperdrive_rating": "6" 393 | }, 394 | "model": "starwars.starship", 395 | "pk": 74 396 | }, 397 | { 398 | "fields": { 399 | "pilots": [], 400 | "MGLT": "unknown", 401 | "starship_class": "starfighter", 402 | "hyperdrive_rating": "1.0" 403 | }, 404 | "model": "starwars.starship", 405 | "pk": 75 406 | } 407 | ] 408 | -------------------------------------------------------------------------------- /starwars/fixtures/vehicles.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "fields": { 4 | "vehicle_class": "wheeled", 5 | "pilots": [] 6 | }, 7 | "model": "starwars.vehicle", 8 | "pk": 4 9 | }, 10 | { 11 | "fields": { 12 | "vehicle_class": "repulsorcraft", 13 | "pilots": [] 14 | }, 15 | "model": "starwars.vehicle", 16 | "pk": 6 17 | }, 18 | { 19 | "fields": { 20 | "vehicle_class": "repulsorcraft", 21 | "pilots": [] 22 | }, 23 | "model": "starwars.vehicle", 24 | "pk": 7 25 | }, 26 | { 27 | "fields": { 28 | "vehicle_class": "starfighter", 29 | "pilots": [] 30 | }, 31 | "model": "starwars.vehicle", 32 | "pk": 8 33 | }, 34 | { 35 | "fields": { 36 | "vehicle_class": "airspeeder", 37 | "pilots": [ 38 | 1, 39 | 18 40 | ] 41 | }, 42 | "model": "starwars.vehicle", 43 | "pk": 14 44 | }, 45 | { 46 | "fields": { 47 | "vehicle_class": "space/planetary bomber", 48 | "pilots": [] 49 | }, 50 | "model": "starwars.vehicle", 51 | "pk": 16 52 | }, 53 | { 54 | "fields": { 55 | "vehicle_class": "assault walker", 56 | "pilots": [] 57 | }, 58 | "model": "starwars.vehicle", 59 | "pk": 18 60 | }, 61 | { 62 | "fields": { 63 | "vehicle_class": "walker", 64 | "pilots": [ 65 | 13 66 | ] 67 | }, 68 | "model": "starwars.vehicle", 69 | "pk": 19 70 | }, 71 | { 72 | "fields": { 73 | "vehicle_class": "repulsorcraft", 74 | "pilots": [] 75 | }, 76 | "model": "starwars.vehicle", 77 | "pk": 20 78 | }, 79 | { 80 | "fields": { 81 | "vehicle_class": "sail barge", 82 | "pilots": [] 83 | }, 84 | "model": "starwars.vehicle", 85 | "pk": 24 86 | }, 87 | { 88 | "fields": { 89 | "vehicle_class": "repulsorcraft cargo skiff", 90 | "pilots": [] 91 | }, 92 | "model": "starwars.vehicle", 93 | "pk": 25 94 | }, 95 | { 96 | "fields": { 97 | "vehicle_class": "starfighter", 98 | "pilots": [] 99 | }, 100 | "model": "starwars.vehicle", 101 | "pk": 26 102 | }, 103 | { 104 | "fields": { 105 | "vehicle_class": "speeder", 106 | "pilots": [ 107 | 1, 108 | 5 109 | ] 110 | }, 111 | "model": "starwars.vehicle", 112 | "pk": 30 113 | }, 114 | { 115 | "fields": { 116 | "vehicle_class": "starfighter", 117 | "pilots": [] 118 | }, 119 | "model": "starwars.vehicle", 120 | "pk": 33 121 | }, 122 | { 123 | "fields": { 124 | "vehicle_class": "repulsorcraft", 125 | "pilots": [] 126 | }, 127 | "model": "starwars.vehicle", 128 | "pk": 34 129 | }, 130 | { 131 | "fields": { 132 | "vehicle_class": "repulsorcraft", 133 | "pilots": [] 134 | }, 135 | "model": "starwars.vehicle", 136 | "pk": 35 137 | }, 138 | { 139 | "fields": { 140 | "vehicle_class": "repulsorcraft", 141 | "pilots": [] 142 | }, 143 | "model": "starwars.vehicle", 144 | "pk": 36 145 | }, 146 | { 147 | "fields": { 148 | "vehicle_class": "landing craft", 149 | "pilots": [] 150 | }, 151 | "model": "starwars.vehicle", 152 | "pk": 37 153 | }, 154 | { 155 | "fields": { 156 | "vehicle_class": "submarine", 157 | "pilots": [ 158 | 10, 159 | 32 160 | ] 161 | }, 162 | "model": "starwars.vehicle", 163 | "pk": 38 164 | }, 165 | { 166 | "fields": { 167 | "vehicle_class": "speeder", 168 | "pilots": [ 169 | 44 170 | ] 171 | }, 172 | "model": "starwars.vehicle", 173 | "pk": 42 174 | }, 175 | { 176 | "fields": { 177 | "vehicle_class": "repulsorcraft", 178 | "pilots": [ 179 | 11 180 | ] 181 | }, 182 | "model": "starwars.vehicle", 183 | "pk": 44 184 | }, 185 | { 186 | "fields": { 187 | "vehicle_class": "airspeeder", 188 | "pilots": [ 189 | 70 190 | ] 191 | }, 192 | "model": "starwars.vehicle", 193 | "pk": 45 194 | }, 195 | { 196 | "fields": { 197 | "vehicle_class": "airspeeder", 198 | "pilots": [ 199 | 11 200 | ] 201 | }, 202 | "model": "starwars.vehicle", 203 | "pk": 46 204 | }, 205 | { 206 | "fields": { 207 | "vehicle_class": "gunship", 208 | "pilots": [] 209 | }, 210 | "model": "starwars.vehicle", 211 | "pk": 50 212 | }, 213 | { 214 | "fields": { 215 | "vehicle_class": "gunship", 216 | "pilots": [] 217 | }, 218 | "model": "starwars.vehicle", 219 | "pk": 51 220 | }, 221 | { 222 | "fields": { 223 | "vehicle_class": "walker", 224 | "pilots": [] 225 | }, 226 | "model": "starwars.vehicle", 227 | "pk": 53 228 | }, 229 | { 230 | "fields": { 231 | "vehicle_class": "walker", 232 | "pilots": [] 233 | }, 234 | "model": "starwars.vehicle", 235 | "pk": 54 236 | }, 237 | { 238 | "fields": { 239 | "vehicle_class": "speeder", 240 | "pilots": [ 241 | 67 242 | ] 243 | }, 244 | "model": "starwars.vehicle", 245 | "pk": 55 246 | }, 247 | { 248 | "fields": { 249 | "vehicle_class": "transport", 250 | "pilots": [] 251 | }, 252 | "model": "starwars.vehicle", 253 | "pk": 56 254 | }, 255 | { 256 | "fields": { 257 | "vehicle_class": "starfighter", 258 | "pilots": [] 259 | }, 260 | "model": "starwars.vehicle", 261 | "pk": 57 262 | }, 263 | { 264 | "fields": { 265 | "vehicle_class": "wheeled walker", 266 | "pilots": [ 267 | 79 268 | ] 269 | }, 270 | "model": "starwars.vehicle", 271 | "pk": 60 272 | }, 273 | { 274 | "fields": { 275 | "vehicle_class": "fire suppression ship", 276 | "pilots": [] 277 | }, 278 | "model": "starwars.vehicle", 279 | "pk": 62 280 | }, 281 | { 282 | "fields": { 283 | "vehicle_class": "droid starfighter", 284 | "pilots": [] 285 | }, 286 | "model": "starwars.vehicle", 287 | "pk": 67 288 | }, 289 | { 290 | "fields": { 291 | "vehicle_class": "airspeeder", 292 | "pilots": [] 293 | }, 294 | "model": "starwars.vehicle", 295 | "pk": 69 296 | }, 297 | { 298 | "fields": { 299 | "vehicle_class": "air speeder", 300 | "pilots": [] 301 | }, 302 | "model": "starwars.vehicle", 303 | "pk": 70 304 | }, 305 | { 306 | "fields": { 307 | "vehicle_class": "wheeled walker", 308 | "pilots": [] 309 | }, 310 | "model": "starwars.vehicle", 311 | "pk": 71 312 | }, 313 | { 314 | "fields": { 315 | "vehicle_class": "droid tank", 316 | "pilots": [] 317 | }, 318 | "model": "starwars.vehicle", 319 | "pk": 72 320 | }, 321 | { 322 | "fields": { 323 | "vehicle_class": "airspeeder", 324 | "pilots": [] 325 | }, 326 | "model": "starwars.vehicle", 327 | "pk": 73 328 | }, 329 | { 330 | "fields": { 331 | "vehicle_class": "walker", 332 | "pilots": [] 333 | }, 334 | "model": "starwars.vehicle", 335 | "pk": 76 336 | } 337 | ] 338 | -------------------------------------------------------------------------------- /starwars/migrations/0001_initial.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from __future__ import unicode_literals 3 | 4 | from django.db import models, migrations 5 | 6 | 7 | class Migration(migrations.Migration): 8 | 9 | dependencies = [ 10 | ] 11 | 12 | operations = [ 13 | migrations.CreateModel( 14 | name='Film', 15 | fields=[ 16 | ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), 17 | ('created', models.DateTimeField(auto_now_add=True)), 18 | ('edited', models.DateTimeField(auto_now=True)), 19 | ('title', models.CharField(max_length=100)), 20 | ('episode_id', models.IntegerField()), 21 | ('opening_crawl', models.TextField(max_length=1000)), 22 | ('director', models.CharField(max_length=100)), 23 | ('producer', models.CharField(max_length=100)), 24 | ('release_date', models.DateField()), 25 | ], 26 | options={ 27 | 'abstract': False, 28 | }, 29 | ), 30 | migrations.CreateModel( 31 | name='People', 32 | fields=[ 33 | ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), 34 | ('created', models.DateTimeField(auto_now_add=True)), 35 | ('edited', models.DateTimeField(auto_now=True)), 36 | ('name', models.CharField(max_length=100)), 37 | ('height', models.CharField(max_length=10, blank=True)), 38 | ('mass', models.CharField(max_length=10, blank=True)), 39 | ('hair_color', models.CharField(max_length=20, blank=True)), 40 | ('skin_color', models.CharField(max_length=20, blank=True)), 41 | ('eye_color', models.CharField(max_length=20, blank=True)), 42 | ('birth_year', models.CharField(max_length=10, blank=True)), 43 | ('gender', models.CharField(max_length=40, blank=True)), 44 | ], 45 | options={ 46 | 'abstract': False, 47 | }, 48 | ), 49 | migrations.CreateModel( 50 | name='Planet', 51 | fields=[ 52 | ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), 53 | ('created', models.DateTimeField(auto_now_add=True)), 54 | ('edited', models.DateTimeField(auto_now=True)), 55 | ('name', models.CharField(max_length=100)), 56 | ('rotation_period', models.CharField(max_length=40)), 57 | ('orbital_period', models.CharField(max_length=40)), 58 | ('diameter', models.CharField(max_length=40)), 59 | ('climate', models.CharField(max_length=40)), 60 | ('gravity', models.CharField(max_length=40)), 61 | ('terrain', models.CharField(max_length=40)), 62 | ('surface_water', models.CharField(max_length=40)), 63 | ('population', models.CharField(max_length=40)), 64 | ], 65 | options={ 66 | 'abstract': False, 67 | }, 68 | ), 69 | migrations.CreateModel( 70 | name='Species', 71 | fields=[ 72 | ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), 73 | ('created', models.DateTimeField(auto_now_add=True)), 74 | ('edited', models.DateTimeField(auto_now=True)), 75 | ('name', models.CharField(max_length=40)), 76 | ('classification', models.CharField(max_length=40)), 77 | ('designation', models.CharField(max_length=40)), 78 | ('average_height', models.CharField(max_length=40)), 79 | ('skin_colors', models.CharField(max_length=200)), 80 | ('hair_colors', models.CharField(max_length=200)), 81 | ('eye_colors', models.CharField(max_length=200)), 82 | ('average_lifespan', models.CharField(max_length=40)), 83 | ('language', models.CharField(max_length=40)), 84 | ('homeworld', models.ForeignKey(blank=True, to='starwars.Planet', null=True, on_delete=models.CASCADE)), 85 | ('people', models.ManyToManyField(related_name='species', to='starwars.People')), 86 | ], 87 | options={ 88 | 'abstract': False, 89 | }, 90 | ), 91 | migrations.CreateModel( 92 | name='Transport', 93 | fields=[ 94 | ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), 95 | ('created', models.DateTimeField(auto_now_add=True)), 96 | ('edited', models.DateTimeField(auto_now=True)), 97 | ('name', models.CharField(max_length=40)), 98 | ('model', models.CharField(max_length=40)), 99 | ('manufacturer', models.CharField(max_length=80)), 100 | ('cost_in_credits', models.CharField(max_length=40)), 101 | ('length', models.CharField(max_length=40)), 102 | ('max_atmosphering_speed', models.CharField(max_length=40)), 103 | ('crew', models.CharField(max_length=40)), 104 | ('passengers', models.CharField(max_length=40)), 105 | ('cargo_capacity', models.CharField(max_length=40)), 106 | ('consumables', models.CharField(max_length=40)), 107 | ], 108 | options={ 109 | 'abstract': False, 110 | }, 111 | ), 112 | migrations.CreateModel( 113 | name='Starship', 114 | fields=[ 115 | ('transport_ptr', models.OneToOneField(parent_link=True, auto_created=True, primary_key=True, serialize=False, to='starwars.Transport', on_delete=models.CASCADE)), 116 | ('hyperdrive_rating', models.CharField(max_length=40)), 117 | ('MGLT', models.CharField(max_length=40)), 118 | ('starship_class', models.CharField(max_length=40)), 119 | ], 120 | options={ 121 | 'abstract': False, 122 | }, 123 | bases=('starwars.transport',), 124 | ), 125 | migrations.CreateModel( 126 | name='Vehicle', 127 | fields=[ 128 | ('transport_ptr', models.OneToOneField(parent_link=True, auto_created=True, primary_key=True, serialize=False, to='starwars.Transport', on_delete=models.CASCADE)), 129 | ('vehicle_class', models.CharField(max_length=40)), 130 | ], 131 | options={ 132 | 'abstract': False, 133 | }, 134 | bases=('starwars.transport',), 135 | ), 136 | migrations.AddField( 137 | model_name='people', 138 | name='homeworld', 139 | field=models.ForeignKey(related_name='residents', to='starwars.Planet', on_delete=models.CASCADE), 140 | ), 141 | migrations.AddField( 142 | model_name='film', 143 | name='characters', 144 | field=models.ManyToManyField(related_name='films', to='starwars.People', blank=True), 145 | ), 146 | migrations.AddField( 147 | model_name='film', 148 | name='planets', 149 | field=models.ManyToManyField(related_name='films', to='starwars.Planet', blank=True), 150 | ), 151 | migrations.AddField( 152 | model_name='film', 153 | name='species', 154 | field=models.ManyToManyField(related_name='films', to='starwars.Species', blank=True), 155 | ), 156 | migrations.AddField( 157 | model_name='vehicle', 158 | name='pilots', 159 | field=models.ManyToManyField(related_name='vehicles', to='starwars.People', blank=True), 160 | ), 161 | migrations.AddField( 162 | model_name='starship', 163 | name='pilots', 164 | field=models.ManyToManyField(related_name='starships', to='starwars.People', blank=True), 165 | ), 166 | migrations.AddField( 167 | model_name='film', 168 | name='starships', 169 | field=models.ManyToManyField(related_name='films', to='starwars.Starship', blank=True), 170 | ), 171 | migrations.AddField( 172 | model_name='film', 173 | name='vehicles', 174 | field=models.ManyToManyField(related_name='films', to='starwars.Vehicle', blank=True), 175 | ), 176 | ] 177 | -------------------------------------------------------------------------------- /starwars/migrations/0002_data.py: -------------------------------------------------------------------------------- 1 | from django.db import migrations 2 | from django.core.management import call_command 3 | 4 | 5 | def loadfixture(apps, schema_editor): 6 | fixtures = 'films people planets species starships transport vehicles'.split(' ') 7 | call_command('loaddata', *fixtures) 8 | 9 | 10 | class Migration(migrations.Migration): 11 | 12 | dependencies = [ 13 | ('starwars', '0001_initial'), 14 | ] 15 | 16 | operations = [ 17 | migrations.RunPython(loadfixture), 18 | ] 19 | -------------------------------------------------------------------------------- /starwars/migrations/0003_hero.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Generated by Django 1.9.2 on 2016-02-13 05:39 3 | from __future__ import unicode_literals 4 | 5 | from django.db import migrations, models 6 | import django.db.models.deletion 7 | 8 | 9 | class Migration(migrations.Migration): 10 | 11 | dependencies = [ 12 | ('starwars', '0002_data'), 13 | ] 14 | 15 | operations = [ 16 | migrations.CreateModel( 17 | name='Hero', 18 | fields=[ 19 | ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), 20 | ('created', models.DateTimeField(auto_now_add=True)), 21 | ('edited', models.DateTimeField(auto_now=True)), 22 | ('name', models.CharField(max_length=100)), 23 | ('homeworld', models.ForeignKey(on_delete=models.CASCADE, related_name='heroes', to='starwars.Planet')), 24 | ], 25 | options={ 26 | 'abstract': False, 27 | }, 28 | ), 29 | ] 30 | -------------------------------------------------------------------------------- /starwars/migrations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graphql-python/swapi-graphene/5d92929640c6280ffd8f4f56f6f2361b4246939b/starwars/migrations/__init__.py -------------------------------------------------------------------------------- /starwars/models.py: -------------------------------------------------------------------------------- 1 | # Models and fixtures taked from Swapi 2 | # Swapi URL project: https://github.com/phalt/swapi/ 3 | # https://github.com/phalt/swapi/blob/master/resources/models.py 4 | from __future__ import unicode_literals 5 | 6 | from django.db import models 7 | 8 | 9 | class DateTimeModel(models.Model): 10 | """ A base model with created and edited datetime fields """ 11 | 12 | created = models.DateTimeField(auto_now_add=True) 13 | edited = models.DateTimeField(auto_now=True) 14 | 15 | class Meta: 16 | abstract = True 17 | 18 | 19 | class Planet(DateTimeModel): 20 | """ A planet i.e. Tatooine """ 21 | 22 | name = models.CharField(max_length=100) 23 | rotation_period = models.CharField(max_length=40) 24 | orbital_period = models.CharField(max_length=40) 25 | diameter = models.CharField(max_length=40) 26 | climate = models.CharField(max_length=40) 27 | gravity = models.CharField(max_length=40) 28 | terrain = models.CharField(max_length=40) 29 | surface_water = models.CharField(max_length=40) 30 | population = models.CharField(max_length=40) 31 | 32 | def __unicode__(self): 33 | return self.name 34 | 35 | 36 | class People(DateTimeModel): 37 | """ A person i.e. - Luke Skywalker """ 38 | 39 | name = models.CharField(max_length=100) 40 | height = models.CharField(max_length=10, blank=True) 41 | mass = models.CharField(max_length=10, blank=True) 42 | hair_color = models.CharField(max_length=20, blank=True) 43 | skin_color = models.CharField(max_length=20, blank=True) 44 | eye_color = models.CharField(max_length=20, blank=True) 45 | birth_year = models.CharField(max_length=10, blank=True) 46 | gender = models.CharField(max_length=40, blank=True) 47 | homeworld = models.ForeignKey(Planet, related_name="residents", on_delete=models.CASCADE) 48 | 49 | def __unicode__(self): 50 | return self.name 51 | 52 | 53 | class Transport(DateTimeModel): 54 | 55 | name = models.CharField(max_length=40) 56 | model = models.CharField(max_length=40) 57 | manufacturer = models.CharField(max_length=80) 58 | cost_in_credits = models.CharField(max_length=40) 59 | length = models.CharField(max_length=40) 60 | max_atmosphering_speed = models.CharField(max_length=40) 61 | crew = models.CharField(max_length=40) 62 | passengers = models.CharField(max_length=40) 63 | cargo_capacity = models.CharField(max_length=40) 64 | consumables = models.CharField(max_length=40) 65 | 66 | def __unicode__(self): 67 | return self.name 68 | 69 | 70 | class Starship(Transport): 71 | """ A starship is a transport with a hypderdrive """ 72 | 73 | hyperdrive_rating = models.CharField(max_length=40) 74 | MGLT = models.CharField(max_length=40) 75 | starship_class = models.CharField(max_length=40) 76 | pilots = models.ManyToManyField( 77 | People, 78 | related_name="starships", 79 | blank=True 80 | ) 81 | 82 | 83 | class Vehicle(Transport): 84 | """ A vehicle is anything without hyperdrive capability """ 85 | 86 | vehicle_class = models.CharField(max_length=40) 87 | pilots = models.ManyToManyField( 88 | People, 89 | related_name="vehicles", 90 | blank=True 91 | ) 92 | 93 | 94 | class Species(DateTimeModel): 95 | "A species is a type of alien or person" 96 | 97 | name = models.CharField(max_length=40) 98 | classification = models.CharField(max_length=40) 99 | designation = models.CharField(max_length=40) 100 | average_height = models.CharField(max_length=40) 101 | skin_colors = models.CharField(max_length=200) 102 | hair_colors = models.CharField(max_length=200) 103 | eye_colors = models.CharField(max_length=200) 104 | average_lifespan = models.CharField(max_length=40) 105 | homeworld = models.ForeignKey(Planet, blank=True, null=True, on_delete=models.CASCADE) 106 | language = models.CharField(max_length=40) 107 | people = models.ManyToManyField(People, related_name="species") 108 | 109 | def __unicode__(self): 110 | return self.name 111 | 112 | 113 | class Film(DateTimeModel): 114 | """ A film i.e. The Empire Strikes Back (which is also the best film) """ 115 | 116 | title = models.CharField(max_length=100) 117 | episode_id = models.IntegerField() 118 | opening_crawl = models.TextField(max_length=1000) 119 | director = models.CharField(max_length=100) 120 | producer = models.CharField(max_length=100) 121 | release_date = models.DateField() 122 | characters = models.ManyToManyField( 123 | People, 124 | related_name="films", 125 | blank=True 126 | ) 127 | planets = models.ManyToManyField( 128 | Planet, 129 | related_name="films", 130 | blank=True 131 | ) 132 | starships = models.ManyToManyField( 133 | Starship, 134 | related_name="films", 135 | blank=True 136 | ) 137 | vehicles = models.ManyToManyField( 138 | Vehicle, 139 | related_name="films", 140 | blank=True 141 | ) 142 | species = models.ManyToManyField( 143 | Species, 144 | related_name="films", 145 | blank=True 146 | ) 147 | 148 | def __unicode__(self): 149 | return self.title 150 | 151 | 152 | class Hero(DateTimeModel): 153 | name = models.CharField(max_length=100) 154 | homeworld = models.ForeignKey(Planet, related_name="heroes", on_delete=models.CASCADE) 155 | -------------------------------------------------------------------------------- /starwars/schema.py: -------------------------------------------------------------------------------- 1 | from __future__ import unicode_literals 2 | import graphene 3 | from graphene import Node 4 | from graphene_django import DjangoObjectType 5 | from graphene_django.filter import DjangoFilterConnectionField 6 | from graphene_django.debug import DjangoDebug 7 | 8 | import starwars.models as models 9 | 10 | 11 | class Connection(graphene.Connection): 12 | class Meta: 13 | abstract = True 14 | 15 | total_count = graphene.Int() 16 | 17 | def resolve_total_count(self, info): 18 | return self.length 19 | 20 | 21 | class Person(DjangoObjectType): 22 | '''An individual person or character within the Star Wars universe.''' 23 | class Meta: 24 | model = models.People 25 | exclude_fields = ('created', 'edited') 26 | filter_fields = ('name', ) 27 | interfaces = (Node, ) 28 | connection_class = Connection 29 | 30 | 31 | class Planet(DjangoObjectType): 32 | '''A large mass, planet or planetoid in the Star Wars Universe, 33 | at the time of 0 ABY.''' 34 | climates = graphene.List(graphene.String) 35 | terrains = graphene.List(graphene.String) 36 | 37 | def resolve_climates(self, info): 38 | return [c.strip() for c in self.climate.split(',')] 39 | 40 | def resolve_terrains(self, info): 41 | return [c.strip() for c in self.terrain.split(',')] 42 | 43 | class Meta: 44 | model = models.Planet 45 | interfaces = (Node, ) 46 | exclude_fields = ('created', 'edited', 'climate', 'terrain') 47 | filter_fields = ('name', ) 48 | connection_class = Connection 49 | 50 | 51 | class Film(DjangoObjectType): 52 | '''A single film.''' 53 | producers = graphene.List(graphene.String) 54 | 55 | def resolve_producers(self, info): 56 | return [c.strip() for c in self.producer.split(',')] 57 | 58 | class Meta: 59 | model = models.Film 60 | interfaces = (Node, ) 61 | exclude_fields = ('created', 'edited', 'producer') 62 | filter_fields = {'episode_id': ('gt', )} 63 | connection_class = Connection 64 | 65 | 66 | class Specie(DjangoObjectType): 67 | '''A type of person or character within the Star Wars Universe.''' 68 | eye_colors = graphene.List(graphene.String) 69 | hair_colors = graphene.List(graphene.String) 70 | skin_colors = graphene.List(graphene.String) 71 | 72 | def resolve_eye_colors(self, info): 73 | return [c.strip() for c in self.eye_colors.split(',')] 74 | 75 | def resolve_hair_colors(self, info): 76 | return [c.strip() for c in self.hair_colors.split(',')] 77 | 78 | def resolve_skin_colors(self, info): 79 | return [c.strip() for c in self.skin_colors.split(',')] 80 | 81 | class Meta: 82 | model = models.Species 83 | interfaces = (Node, ) 84 | exclude_fields = ('created', 'edited', 'eye_colors', 'hair_colors', 85 | 'skin_colors') 86 | filter_fields = {'name': {'startswith', 'contains'}} 87 | connection_class = Connection 88 | 89 | 90 | class Vehicle(DjangoObjectType): 91 | '''A single transport craft that does not have hyperdrive capability''' 92 | manufacturers = graphene.List(graphene.String) 93 | 94 | def resolve_manufacturers(self, info): 95 | return [c.strip() for c in self.manufacturer.split(',')] 96 | 97 | class Meta: 98 | model = models.Vehicle 99 | interfaces = (Node, ) 100 | exclude_fields = ('created', 'edited', 'manufacturers') 101 | filter_fields = {'name': {'startswith'}} 102 | connection_class = Connection 103 | 104 | 105 | class Hero(DjangoObjectType): 106 | '''A hero created by fans''' 107 | 108 | class Meta: 109 | model = models.Hero 110 | interfaces = (Node, ) 111 | exclude_fields = ('created', 'edited') 112 | filter_fields = {'name': {'startswith', 'contains'}} 113 | connection_class = Connection 114 | 115 | 116 | class Starship(DjangoObjectType): 117 | '''A single transport craft that has hyperdrive capability.''' 118 | manufacturers = graphene.List(graphene.String) 119 | 120 | def resolve_manufacturers(self, info): 121 | return [c.strip() for c in self.manufacturer.split(',')] 122 | 123 | def resolve_max_atmosphering_speed(self, info): 124 | if self.max_atmosphering_speed == 'n/a': 125 | return None 126 | return self.max_atmosphering_speed 127 | 128 | class Meta: 129 | model = models.Starship 130 | interfaces = (Node, ) 131 | exclude_fields = ('created', 'edited', 'manufacturers') 132 | filter_fields = {'name': {'startswith', 'contains'}} 133 | connection_class = Connection 134 | 135 | 136 | class Query(graphene.ObjectType): 137 | all_films = DjangoFilterConnectionField(Film) 138 | all_species = DjangoFilterConnectionField(Specie) 139 | all_characters = DjangoFilterConnectionField(Person) 140 | all_vehicles = DjangoFilterConnectionField(Vehicle) 141 | all_planets = DjangoFilterConnectionField(Planet) 142 | all_starships = DjangoFilterConnectionField(Starship) 143 | all_heroes = DjangoFilterConnectionField(Hero) 144 | film = Node.Field(Film) 145 | specie = Node.Field(Specie) 146 | character = Node.Field(Person) 147 | vehicle = Node.Field(Vehicle) 148 | planet = Node.Field(Planet) 149 | starship = Node.Field(Starship) 150 | hero = Node.Field(Hero) 151 | node = Node.Field() 152 | viewer = graphene.Field(lambda: Query) 153 | 154 | debug = graphene.Field(DjangoDebug, name='__debug') 155 | 156 | def resolve_viewer(self, info): 157 | return self 158 | 159 | 160 | class CreateHero(graphene.ClientIDMutation): 161 | 162 | class Input: 163 | name = graphene.String(required=True) 164 | homeworld_id = graphene.String(required=True) 165 | 166 | hero = graphene.Field(Hero) 167 | ok = graphene.Boolean() 168 | 169 | def mutate_and_get_payload(self, info, name, homeworld_id, client_id_mutation=None): 170 | try: 171 | homeworld_id = int(homeworld_id) 172 | except ValueError: 173 | try: 174 | _type, homeworld_id = Node.from_global_id(homeworld_id) 175 | assert _type == 'planet', 'The homeworld should be a Planet, but found {}'.format(resolved.type) 176 | except: 177 | raise Exception("Received wrong Planet id: {}".format(homeworld_id)) 178 | 179 | homeworld = Planet._meta.model.objects.get(id=homeworld_id) 180 | hero = Hero._meta.model(name=name, homeworld=homeworld) 181 | hero.save() 182 | 183 | return CreateHero(hero=hero, ok=bool(hero.id)) 184 | 185 | 186 | class Mutation(graphene.ObjectType): 187 | create_hero = CreateHero.Field() 188 | 189 | 190 | schema = graphene.Schema( 191 | query=Query, 192 | mutation=Mutation 193 | ) 194 | -------------------------------------------------------------------------------- /starwars/static/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graphql-python/swapi-graphene/5d92929640c6280ffd8f4f56f6f2361b4246939b/starwars/static/favicon.png -------------------------------------------------------------------------------- /starwars/static/starwars.min.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /starwars/static/starwars.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /starwars/static/style.css: -------------------------------------------------------------------------------- 1 | /* RESET */ 2 | /*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0} 3 | /* Main styles */ 4 | html{ 5 | min-height: 100%; 6 | } 7 | 8 | body { 9 | font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; 10 | font-weight: 300; 11 | background: #1A1A1A url('vader_background.png') center bottom no-repeat; 12 | font-size: 16px; 13 | color: #606060; 14 | line-height: 1.5; 15 | min-height: 100%; 16 | } 17 | 18 | a { 19 | color: #4A4A4A; 20 | } 21 | a:hover { 22 | color: #222; 23 | } 24 | 25 | 26 | /* LOGO ANIMATION */ 27 | #main-logo { 28 | display: inline-block; 29 | vertical-align: middle; 30 | text-decoration: none; 31 | width: 100px; 32 | height: 100px; 33 | } 34 | 35 | #main-logo svg { 36 | display: inline-block; 37 | } 38 | 39 | .animated-logo path { 40 | stroke-dasharray: 250; 41 | stroke-dashoffset: 250; 42 | animation: logo-dash .9s ease-in-out forwards; 43 | animation-delay: .12s; 44 | } 45 | 46 | .animated-logo g ellipse { 47 | animation: logo-dot .3s ease forwards; 48 | animation-fill-mode: both; 49 | transform-origin: 50% 50%; 50 | } 51 | 52 | .animated-logo g:nth-child(2) ellipse { 53 | animation-delay: .1s; 54 | } 55 | 56 | .animated-logo g:nth-child(3) ellipse { 57 | animation-delay: .2s; 58 | } 59 | 60 | .animated-logo g:nth-child(4) ellipse { 61 | animation-delay: .3s; 62 | } 63 | 64 | .animated-logo g:nth-child(5) ellipse { 65 | animation-delay: .4s; 66 | } 67 | 68 | .animated-logo g:nth-child(6) ellipse { 69 | animation-delay: .5s; 70 | } 71 | 72 | .animated-logo g:nth-child(7) ellipse { 73 | animation-delay: .6s; 74 | } 75 | 76 | .animated-logo g:nth-child(8) ellipse { 77 | animation-delay: .7s; 78 | } 79 | 80 | #header { 81 | background: #222222; 82 | text-align: center; 83 | padding: 60px 0; 84 | } 85 | 86 | #starwars { 87 | vertical-align: middle; 88 | display: inline-block; 89 | margin-left: 16px; 90 | animation: starwars .6s ease-out forwards; 91 | animation-delay: .4s; 92 | animation-fill-mode: both; 93 | transform-origin: 50% 50%; 94 | } 95 | #headline { 96 | position: relative; 97 | } 98 | 99 | #headline h1 { 100 | margin-top: 60px; 101 | padding: 0 20px; 102 | font-family: 'Helvetica Neue'; 103 | font-weight: 100; 104 | font-size: 36px; 105 | color: #797979; 106 | line-height: 44px; 107 | } 108 | 109 | #headline h2 { 110 | font-family: 'Helvetica Neue'; 111 | font-weight: 400; 112 | font-size: 16px; 113 | padding: 0 20px; 114 | color: #4A4A4A; 115 | line-height: 20px; 116 | text-transform: uppercase; 117 | margin-top: -20px; 118 | margin-bottom: -10px; 119 | } 120 | 121 | #headline a:hover { 122 | color: #666; 123 | } 124 | 125 | #nav { 126 | text-align: center; 127 | margin: 40px 0; 128 | } 129 | 130 | .nav-item { 131 | display: inline-block; 132 | vertical-align: top; 133 | text-decoration: none; 134 | position: relative; 135 | } 136 | .nav-box { 137 | background: #3C3C3C; 138 | width: 200px; 139 | margin: 16px; 140 | height: 160px; 141 | padding: 40px 15px; 142 | box-sizing: border-box; 143 | transition: all .2s ease-in-out; 144 | 145 | } 146 | #nav:hover .nav-box{ 147 | background: #222; 148 | /*opacity: .3;*/ 149 | } 150 | 151 | #nav .nav-item:hover .nav-box{ 152 | transform: scale(1.05); 153 | box-shadow: 0 0px 0px 3px #D06D6D; 154 | background: #444; 155 | } 156 | 157 | #nav .nav-item span, 158 | #nav .nav-item strong { 159 | transition: all .2s ease-in-out; 160 | } 161 | 162 | #nav:hover .nav-item span, 163 | #nav:hover .nav-item strong { 164 | opacity: .4; 165 | } 166 | #nav .nav-item:hover span, 167 | #nav .nav-item:hover strong { 168 | opacity: 1; 169 | } 170 | 171 | .nav-item strong { 172 | font-family: 'Helvetica Neue'; 173 | font-weight: 100; 174 | font-size: 26px; 175 | color: #FFFFFF; 176 | display: block; 177 | line-height: 31px; 178 | margin-bottom: 20px; 179 | } 180 | .nav-item span { 181 | font-family: 'Helvetica Neue'; 182 | font-weight: 100; 183 | font-size: 14px; 184 | display: block; 185 | color: #B3B3B3; 186 | line-height: 15px; 187 | } 188 | 189 | @keyframes logo-dash { 190 | to { 191 | stroke-dashoffset: 0; 192 | } 193 | } 194 | 195 | @keyframes logo-dot { 196 | from { 197 | opacity: 0.5; 198 | transform:scale(0); 199 | } 200 | to { 201 | opacity: 1; 202 | transform:scale(1); 203 | } 204 | } 205 | @keyframes starwars { 206 | from { 207 | opacity: 0; 208 | transform: translateX(-20px); 209 | } 210 | to { 211 | opacity: 1; 212 | transform: none; 213 | } 214 | } 215 | 216 | -------------------------------------------------------------------------------- /starwars/static/vader_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/graphql-python/swapi-graphene/5d92929640c6280ffd8f4f56f6f2361b4246939b/starwars/static/vader_background.png -------------------------------------------------------------------------------- /starwars/templates/index.html: -------------------------------------------------------------------------------- 1 | 34 | 35 | 36 |
37 |