With the front end design of the repository complete, I’ve been working on the backend. So far, most of the pages have been implemented, namely the homepage and the model information and search results pages.
The search page. Note that there's a single result per page, for testing.
The user page has also begun to be implemented.
The current state of the user page. Notice the presence of my avatar.
It was decided to use the PostgreSQL database, and the Django framework for quickly implementing all these pages. The database schema has also been agreed upon since the last diary entry.
The conceptual model that was decided on.
In terms of implementation of this schema into Django models, it was almost a direct conversion, except the tags: we used a HStore field for them, as suggested by pnorman on IRC. The banned_by and banned_date fields were also removed from the user, and a Ban Table was made instead.
Furthermore, since no major issues have come up, I’ve managed to add a commenting feature, so that users can comment on models, and model revisions, to serve as a beginning for editing models. Hopefully this feature will be present at the end of GSoC. I’ve also implemented the live preview, one of the most interesting parts of the project, using THREE.js so that users can see a preview of the model right in the repository, in their browsers, without explicitely downloading a file and opening it themselves. Starting off, it will just support the Wavefront OBJ format.
The current state of the model information page, showcasing the commenting feature and a model of the Eiffel Tower being displayed in the live preview.
The REST API is also progressing fairly well, most of the endpoints have been implemented, namely the info get and model get endpoints, search by latitude and longitude and the author, category and tag lookups. In the next couple weeks, I will be working on the upload model page, and the administration of the repository.
Copyright note: the Eiffel Tower model was taken from https://3dwarehouse.sketchup.com/model/98810fe9c4f57f1141ba0f9fe83c1fd/eiffel-tower, in OpenCOLLADA format, then converted with Blender to Wavefront OBJ.