Django Models for OJS
For those of you who don’t know — OJS (Open Journal Systems) is a PHP application developed by PKP (Public Knowledge Project). PKP have been around since they were founded by John Willinsky in 1998 and OJS came around not long after that.
Ubiquity Press is currently in the process of developing an offline tool that will allow Editors to load up manuscripts and publish them into OJS journals. As fans of the Django Framework, we thought it would be interesting to attempt to generate a working models file for OJS and use it alongside Django Rest Framework for an API that the offline tool would use.
The project we started is called Intersect (taken from the name of a super computer developed by the CIA and NSA for data sharing in the TV show Chuck)
OJS’ database is not suited to Django’s ORM. There are a distinct lack of foreign keys and constraints and there are many tables that make use of compound primary keys (which Django particularly hates). To get around this, we will be making some relatively harmless changes to our DBs:
- Article Settings : id (auto_increment, primary key)
- Issue Settings : id (auto_increment, primary key)
- Journal Settings : id (auto_increment, primary key)
- Author Settings : id (auto_increment, primary key)
- user_profiles table : foreignkey ids :intersect_user (auth_users) [PK] + journal (Journals) + user (users)
The project is still being developed, but the models.py can be found on Github.