mediagoblin.git
12 years agoUpdate the string outputs to match our tests: newlines, ...->:, etc.
Christopher Allan Webber [Mon, 30 Jan 2012 03:45:05 +0000 (21:45 -0600)]
Update the string outputs to match our tests: newlines, ...->:, etc.

12 years agodb_conn.engine -> db_conn.bind
Christopher Allan Webber [Sun, 29 Jan 2012 23:28:25 +0000 (17:28 -0600)]
db_conn.engine -> db_conn.bind

12 years agomigrations_to_run here a list, so no reason to call it
Christopher Allan Webber [Sun, 29 Jan 2012 23:26:23 +0000 (17:26 -0600)]
migrations_to_run here a list, so no reason to call it

12 years agoMigration manager's current migration should be 3, not 7, after running all migrations!
Christopher Allan Webber [Sun, 29 Jan 2012 23:23:27 +0000 (17:23 -0600)]
Migration manager's current migration should be 3, not 7, after running all migrations!

12 years agoFixed the descriptions for the necroplex!
Christopher Allan Webber [Sun, 29 Jan 2012 23:22:29 +0000 (17:22 -0600)]
Fixed the descriptions for the necroplex!

12 years agoassert column type from Unicode -> VARCHAR. SQLAlchemy reflection only so smart ;)
Christopher Allan Webber [Sun, 29 Jan 2012 23:21:44 +0000 (17:21 -0600)]
assert column type from Unicode -> VARCHAR.  SQLAlchemy reflection only so smart ;)

12 years agoprinter = CollectingPrinter -> printer = CollectingPrinter()
Christopher Allan Webber [Sun, 29 Jan 2012 23:11:41 +0000 (17:11 -0600)]
printer = CollectingPrinter -> printer = CollectingPrinter()

12 years agoCollectingPrinter is a class, not a function!
Christopher Allan Webber [Sun, 29 Jan 2012 23:10:18 +0000 (17:10 -0600)]
CollectingPrinter is a class, not a function!

12 years agoself.latest_migration now a property, so we shouldn't __call__ it!
Christopher Allan Webber [Sun, 29 Jan 2012 23:08:38 +0000 (17:08 -0600)]
self.latest_migration now a property, so we shouldn't __call__ it!

12 years agoFor clarity, self.database -> self.session.
Christopher Allan Webber [Sun, 29 Jan 2012 23:07:47 +0000 (17:07 -0600)]
For clarity, self.database -> self.session.

Actually, I'm not even sure *that* is ideal!  But better than what we
had...

12 years agoYet *another* self.database -> self.database.bind fix!
Christopher Allan Webber [Sun, 29 Jan 2012 23:06:19 +0000 (17:06 -0600)]
Yet *another* self.database -> self.database.bind fix!

12 years agoFix database_current_version for when self.migration_data is None.
Christopher Allan Webber [Sun, 29 Jan 2012 23:05:16 +0000 (17:05 -0600)]
Fix database_current_version for when self.migration_data is None.

12 years agoanother db -> db.bind fix.
Christopher Allan Webber [Sun, 29 Jan 2012 23:00:39 +0000 (17:00 -0600)]
another db -> db.bind fix.

12 years agoA few basic fixes to sql/util.py
Christopher Allan Webber [Sun, 29 Jan 2012 22:58:58 +0000 (16:58 -0600)]
A few basic fixes to sql/util.py

 - MigrationRecord to MigrationData, again
 - If the table doesn't exist, return None for database_current_migration
 - database.engine -> database.bind

12 years agomagical_powers relationship set on wrong table, fixed
Christopher Allan Webber [Sun, 29 Jan 2012 22:48:44 +0000 (16:48 -0600)]
magical_powers relationship set on wrong table, fixed

12 years agoAlso switch database_current_migration to a property
Christopher Allan Webber [Sun, 29 Jan 2012 22:40:46 +0000 (16:40 -0600)]
Also switch database_current_migration to a property

12 years agoMigration records are dicts, not lists. Fix SET1_MIGATIONS!
Christopher Allan Webber [Sun, 29 Jan 2012 22:39:08 +0000 (16:39 -0600)]
Migration records are dicts, not lists.  Fix SET1_MIGATIONS!

12 years agoMake latest_migration a property
Christopher Allan Webber [Sun, 29 Jan 2012 22:36:33 +0000 (16:36 -0600)]
Make latest_migration a property

12 years agoImport MigrationData, not MigrationRecord
Christopher Allan Webber [Sun, 29 Jan 2012 22:32:10 +0000 (16:32 -0600)]
Import MigrationData, not MigrationRecord

12 years agotest_set1_to_set3() now has appropriate amount of code, even if it doesn't run :)
Christopher Allan Webber [Sun, 29 Jan 2012 22:07:16 +0000 (16:07 -0600)]
test_set1_to_set3() now has appropriate amount of code, even if it doesn't run :)

12 years agoFixing some obvious errors caught by pyflakes
Christopher Allan Webber [Sun, 29 Jan 2012 21:27:45 +0000 (15:27 -0600)]
Fixing some obvious errors caught by pyflakes

12 years agoMore stuff even yet per sql migration stuff! And still not ready!
Christopher Allan Webber [Sun, 29 Jan 2012 20:57:42 +0000 (14:57 -0600)]
More stuff even yet per sql migration stuff!  And still not ready!

12 years agoCloser to the end of this migration test...
Christopher Allan Webber [Sun, 29 Jan 2012 19:14:56 +0000 (13:14 -0600)]
Closer to the end of this migration test...

12 years agounicode stuff and more bits on the actual migration method
Christopher Allan Webber [Sun, 29 Jan 2012 14:58:34 +0000 (08:58 -0600)]
unicode stuff and more bits on the actual migration method

12 years agoA ton more work on the SQL migration unit tests...
Christopher Allan Webber [Sat, 28 Jan 2012 00:19:34 +0000 (18:19 -0600)]
A ton more work on the SQL migration unit tests...

12 years agoWrote up some scaffolding for the actual tests
Christopher Allan Webber [Sat, 21 Jan 2012 22:14:32 +0000 (16:14 -0600)]
Wrote up some scaffolding for the actual tests

12 years agoInsert migration objects round 3
Christopher Allan Webber [Fri, 20 Jan 2012 03:32:37 +0000 (21:32 -0600)]
Insert migration objects round 3

12 years agoimport changeset into sql models
Christopher Allan Webber [Fri, 20 Jan 2012 03:30:47 +0000 (21:30 -0600)]
import changeset into sql models

12 years agoWrote some (semi-silly) descriptions of each migration
Christopher Allan Webber [Mon, 16 Jan 2012 22:59:14 +0000 (16:59 -0600)]
Wrote some (semi-silly) descriptions of each migration

12 years agoDocstrings for stage 2 migrations
Christopher Allan Webber [Mon, 16 Jan 2012 22:40:51 +0000 (16:40 -0600)]
Docstrings for stage 2 migrations

12 years agoTheoretical full set of migration2 objects to insert for testing
Christopher Allan Webber [Mon, 16 Jan 2012 22:22:25 +0000 (16:22 -0600)]
Theoretical full set of migration2 objects to insert for testing

12 years agoInsert migration1 objects. Also, Level1 id from Integer->Unicode
Christopher Allan Webber [Mon, 16 Jan 2012 20:39:24 +0000 (14:39 -0600)]
Insert migration1 objects.  Also, Level1 id from Integer->Unicode

12 years agoAll theoretical migrations written!
Christopher Allan Webber [Sun, 15 Jan 2012 22:43:14 +0000 (16:43 -0600)]
All theoretical migrations written!

12 years agobinding migration metadata to engine, and level_exits_new_table should now work
Christopher Allan Webber [Sun, 15 Jan 2012 21:43:59 +0000 (15:43 -0600)]
binding migration metadata to engine, and level_exits_new_table should now work

12 years agoMore test migration work. Closing to working migrations for set 2...
Christopher Allan Webber [Sun, 15 Jan 2012 20:55:07 +0000 (14:55 -0600)]
More test migration work.  Closing to working migrations for set 2...

Also, this file is written in 2012, correct that ;)

12 years agoMight as well call it "set2 migrations"
Christopher Allan Webber [Sun, 15 Jan 2012 17:36:00 +0000 (11:36 -0600)]
Might as well call it "set2 migrations"

12 years agoA theoretical set of models to migrate about with, plus one migration ;)
Christopher Allan Webber [Sun, 15 Jan 2012 17:35:26 +0000 (11:35 -0600)]
A theoretical set of models to migrate about with, plus one migration ;)

12 years agoAnother db->db.engine because I'm bad at things ;)
Christopher Allan Webber [Mon, 2 Jan 2012 22:14:55 +0000 (16:14 -0600)]
Another db->db.engine because I'm bad at things ;)

Thanks again Elrond.

12 years agoNo need for self here (thanks again Elrond ;))
Christopher Allan Webber [Mon, 2 Jan 2012 22:08:32 +0000 (16:08 -0600)]
No need for self here (thanks again Elrond ;))

12 years agoAnother MigrationManager fix.
Christopher Allan Webber [Mon, 2 Jan 2012 20:56:05 +0000 (14:56 -0600)]
Another MigrationManager fix.

self.database -> self.database.engine (thanks again Elrond for the catch)

12 years agoMake name the primary key in migration records
Christopher Allan Webber [Mon, 2 Jan 2012 20:40:32 +0000 (14:40 -0600)]
Make name the primary key in migration records

12 years agoassert was positive when it should be negative, fixed
Christopher Allan Webber [Mon, 2 Jan 2012 20:04:16 +0000 (14:04 -0600)]
assert was positive when it should be negative, fixed

12 years agoUse .first() instead of [0]... thanks elrond :)
Christopher Allan Webber [Mon, 2 Jan 2012 19:59:36 +0000 (13:59 -0600)]
Use .first() instead of [0]... thanks elrond :)

12 years agoWe should probably add that object to the DB also :P
Christopher Allan Webber [Mon, 2 Jan 2012 19:38:08 +0000 (13:38 -0600)]
We should probably add that object to the DB also :P

12 years agoCommit that new migration record ;)
Christopher Allan Webber [Mon, 2 Jan 2012 19:36:19 +0000 (13:36 -0600)]
Commit that new migration record ;)

12 years agoAdd create_new_migration_record method to MigrationManager
Christopher Allan Webber [Mon, 2 Jan 2012 15:12:11 +0000 (09:12 -0600)]
Add create_new_migration_record method to MigrationManager

12 years agoAdded init_tables method to MigrationManager
Christopher Allan Webber [Mon, 2 Jan 2012 14:55:25 +0000 (08:55 -0600)]
Added init_tables method to MigrationManager

12 years agoMore work on SQL MigrationManager
Christopher Allan Webber [Sun, 1 Jan 2012 22:02:14 +0000 (16:02 -0600)]
More work on SQL MigrationManager

Added methods:
 - migration_data
 - database_current_migration
 - migrations_to_run

12 years agoRemoving printer argument now that we use self.printer
Christopher Allan Webber [Sun, 1 Jan 2012 17:47:39 +0000 (11:47 -0600)]
Removing printer argument now that we use self.printer

12 years agoFinishing the init_or_migrate function
Christopher Allan Webber [Sun, 1 Jan 2012 17:47:05 +0000 (11:47 -0600)]
Finishing the init_or_migrate function

12 years agoMore work on migration manager, including adding a dry run function
Christopher Allan Webber [Sat, 31 Dec 2011 14:45:41 +0000 (08:45 -0600)]
More work on migration manager, including adding a dry run function

12 years agoBeginnings of the SQL migration manager
Christopher Allan Webber [Thu, 29 Dec 2011 20:44:21 +0000 (14:44 -0600)]
Beginnings of the SQL migration manager

12 years agoBig ol' start of the SQL migrations system.
Christopher Allan Webber [Thu, 29 Dec 2011 17:15:55 +0000 (11:15 -0600)]
Big ol' start of the SQL migrations system.

Things definitely don't work yet, but should be heading in the right direction.

12 years agoCommitting extracted and compiled translations
Christopher Allan Webber [Sun, 29 Jan 2012 19:47:51 +0000 (13:47 -0600)]
Committing extracted and compiled translations

12 years agoCommitting present MediaGoblin translations before pushing extracted messages
Christopher Allan Webber [Sun, 29 Jan 2012 19:47:36 +0000 (13:47 -0600)]
Committing present MediaGoblin translations before pushing extracted messages

12 years agoAdding a line reminding user to push up commits
Christopher Allan Webber [Sun, 29 Jan 2012 19:32:41 +0000 (13:32 -0600)]
Adding a line reminding user to push up commits

12 years agoCommitting extracted and compiled translations
Christopher Allan Webber [Sun, 29 Jan 2012 19:31:47 +0000 (13:31 -0600)]
Committing extracted and compiled translations

12 years agoHm, maybe this is better... that didn't fix the stop-in-the-middle issue.
Christopher Allan Webber [Sun, 29 Jan 2012 19:30:18 +0000 (13:30 -0600)]
Hm, maybe this is better... that didn't fix the stop-in-the-middle issue.

12 years agoUpdate update_translations script to consider several things conditionally
Christopher Allan Webber [Sun, 29 Jan 2012 19:22:21 +0000 (13:22 -0600)]
Update update_translations script to consider several things conditionally

Specifically, previously if there was nothing to git add, whole script would just die

12 years agoNearly complete support for Tags
Elrond [Wed, 4 Jan 2012 21:00:44 +0000 (22:00 +0100)]
Nearly complete support for Tags

These changes allow all of the rest of the code to use tags
in sql as they were used on mongo. It's not efficient at
all, as changing tags usually means to remove all old tags
and adding all new.

The only problem here is: Old slugs for tags are not
removed, because they're shared across all MediaTags and
dropping orphans is not always easy.

12 years agoResized a test_exif test image. 1.9M is unnecessarily large.
Joar Wandborg [Sat, 28 Jan 2012 17:53:36 +0000 (18:53 +0100)]
Resized a test_exif test image. 1.9M is unnecessarily large.

12 years agoMerge remote-tracking branch 'joar/exif-rebase'
Joar Wandborg [Sat, 28 Jan 2012 17:47:01 +0000 (18:47 +0100)]
Merge remote-tracking branch 'joar/exif-rebase'

12 years agoAdd develover sql switch
Elrond [Sat, 24 Dec 2011 15:53:32 +0000 (16:53 +0100)]
Add develover sql switch

If you want to play with the current state of sql, you need
a switch to turn it on. So here is the super secret
developer switch.

So you want to know where it is?

Here it is:

Create a file mediagoblin/db/sql_switch.py and put one line
in it: "use_sql = True" (or False to disable again). Right,
that's it. If you want to delete it, remember to delete the
*.pyc too.

Be careful not to "git add" it by accident!

12 years agoWe were using translitcodec and I didn't understand how it worked ;)
Christopher Allan Webber [Sat, 28 Jan 2012 17:31:26 +0000 (11:31 -0600)]
We were using translitcodec and I didn't understand how it worked ;)

My bad!

12 years agoWe aren't using translitcodec anymore. Kill it!
Christopher Allan Webber [Sat, 28 Jan 2012 17:13:03 +0000 (11:13 -0600)]
We aren't using translitcodec anymore.  Kill it!

12 years agoLet some code support "media without slug"
Elrond [Sun, 22 Jan 2012 16:11:43 +0000 (17:11 +0100)]
Let some code support "media without slug"

The upcoming SQL database will allow having media without a
slug again. This might especially be useful for API
support, where the uploaded image (media) does not have
*any* information to generate a slug from.

This code change mostly allows the sql backend to have no
slug in its model and improves some parts to properly
handle that.

It specifically does not have any web frontend support to
edit/create MediaEntries with no slug.

12 years agoJavaScript fixes - AGPL headers, etc
Joar Wandborg [Sat, 28 Jan 2012 00:31:56 +0000 (01:31 +0100)]
JavaScript fixes - AGPL headers, etc

- Added AGPL header to comment_show.js, show_password.js
  and geolocation-map.js
- Removed console.log from geolocation-map.js

12 years agoScripts and styleshets for geolocation map - Conditional
Joar Wandborg [Fri, 27 Jan 2012 01:13:07 +0000 (02:13 +0100)]
Scripts and styleshets for geolocation map - Conditional

Scripts and stylesheets for the geolocation map are now
switched on/off with the geolocation map itself.

12 years agoAdding previously erroneously gitignored extlib/leaflet/{lib,dist,build}/ files
Joar Wandborg [Fri, 27 Jan 2012 00:55:50 +0000 (01:55 +0100)]
Adding previously erroneously gitignored extlib/leaflet/{lib,dist,build}/ files

12 years agoUpdated .gitignore due to it blacking out the extlib/leaflet/dist/ directory
Joar Wandborg [Fri, 27 Jan 2012 00:52:57 +0000 (01:52 +0100)]
Updated .gitignore due to it blacking out the extlib/leaflet/dist/ directory

12 years agoMove declarative_base Base into base.py
Elrond [Sun, 22 Jan 2012 19:17:43 +0000 (20:17 +0100)]
Move declarative_base Base into base.py

The base class of all models "Base" should be in base.py.

12 years agoAdd "mediagoblin/templates *.txt" to packaging
Elrond [Thu, 26 Jan 2012 21:14:48 +0000 (22:14 +0100)]
Add "mediagoblin/templates *.txt" to packaging

Again thanks to Clint Byrum!

12 years agoDrop all buildout things
Elrond [Thu, 26 Jan 2012 21:10:46 +0000 (22:10 +0100)]
Drop all buildout things

virtualenv is working for everyone.
No need for the buildout stuff any more.

12 years agoPackaging improvement by Clint Byrum from Debian/Ubuntu
Elrond [Thu, 26 Jan 2012 20:33:49 +0000 (21:33 +0100)]
Packaging improvement by Clint Byrum from Debian/Ubuntu

1) MANIFEST.in missed a bunch of things, especially
   config_spec.ini.

2) You need to specify include_package_data=True in
   setup.py to actually activate MANIFEST.in it seems.

Thanks go to Clint Byrum!

12 years agoRefractored media.html template and related includes
Joar Wandborg [Wed, 25 Jan 2012 22:53:02 +0000 (23:53 +0100)]
Refractored media.html template and related includes

- Added <p> around license part to separate it properly
  from other sidebar content
- Moved exif part to mediagoblin/utils/exif.html
- Moved geolocation map to mediagoblin/utils/geolocation_map.html

12 years agoActs on feedback from Chris
Joar Wandborg [Wed, 25 Jan 2012 22:05:47 +0000 (23:05 +0100)]
Acts on feedback from Chris

- Added EXIF tests
- Removed pdb from image processing "ifmain"
- Fixed comment typo in image processing
- Removed unused import in tools.exif

12 years agoMoved EXIF to sidebar, added conditions for visibility configuration settings
Joar Wandborg [Fri, 20 Jan 2012 09:27:26 +0000 (10:27 +0100)]
Moved EXIF to sidebar, added conditions for visibility configuration settings

12 years agoAdded exif_visisble and geolocation_map_visible to config_spec
Joar Wandborg [Fri, 20 Jan 2012 01:31:29 +0000 (02:31 +0100)]
Added exif_visisble and geolocation_map_visible to config_spec

12 years agoEXIF fixes
Joar Wandborg [Mon, 16 Jan 2012 02:45:58 +0000 (03:45 +0100)]
EXIF fixes

- Moved exif functions from mediagoblin.media_types.image.processing
  to mediagoblin.tools.exif
- Moved EXIF.py link from mediagoblin.media_types to mediagoblin.tools.extlib
- Refractored and updated EXIF exctraction and presentation

12 years agoRemoved link to EXIF.py in media_types.image
Joar Wandborg [Mon, 16 Jan 2012 02:25:57 +0000 (03:25 +0100)]
Removed link to EXIF.py in media_types.image

12 years agoEXIF extraction, geolocation map, image rotation
Joar Wandborg [Tue, 10 Jan 2012 01:59:07 +0000 (02:59 +0100)]
EXIF extraction, geolocation map, image rotation

- Images are now rotated based on EXIF image orientation
  (in case the image isn't flipped on X or Y axis or
  correctly oriented, then we do nothing)
- *Always* create a medium.jpg in image.processing, for
  the sake of rotation of display image
- Extract EXIF and GPS tags from images and insert them
  into media_data
- Geolocation map display added to media.html
- EXIF display added, then removed. It is not in this
  revision, although some of it is (the "EXIF" h4
  header). Need to make it presentable, filtering out
  purely robotical tags, perhaps.

12 years agoAdded code for leaflet geolocation map
Joar Wandborg [Tue, 10 Jan 2012 01:53:46 +0000 (02:53 +0100)]
Added code for leaflet geolocation map

12 years agoInstalled EXIF.py in extlibs/
Joar Wandborg [Tue, 10 Jan 2012 01:14:37 +0000 (02:14 +0100)]
Installed EXIF.py in extlibs/

12 years agoInstalled leaflet in extlib
Joar Wandborg [Tue, 10 Jan 2012 00:54:37 +0000 (01:54 +0100)]
Installed leaflet in extlib

12 years agoProper url_to_{prev,next} for SQL
Elrond [Wed, 4 Jan 2012 21:13:19 +0000 (22:13 +0100)]
Proper url_to_{prev,next} for SQL

Uses complete sqlalchemy syntax now.

12 years agoCreate a fully functional get_comments for SQL
Elrond [Mon, 2 Jan 2012 12:07:16 +0000 (13:07 +0100)]
Create a fully functional get_comments for SQL

Using proper sqlalchemy syntax instead of the emulated
mongo one.

12 years agoCanonical license URIS for CC stuff should have a trailing slash.
Christopher Allan Webber [Sat, 21 Jan 2012 23:00:42 +0000 (17:00 -0600)]
Canonical license URIS for CC stuff should have a trailing slash.

12 years agoShow the license list in sorted form
Christopher Allan Webber [Sat, 21 Jan 2012 22:58:03 +0000 (16:58 -0600)]
Show the license list in sorted form

12 years agoOops, I broke teh all rights reserved ;)
Christopher Allan Webber [Sat, 21 Jan 2012 22:56:49 +0000 (16:56 -0600)]
Oops, I broke teh all rights reserved ;)

12 years agoProvided a SORTED_SUPPORTED_LICENSES (but keep the old unsorted dict!)
Christopher Allan Webber [Sat, 21 Jan 2012 22:51:21 +0000 (16:51 -0600)]
Provided a SORTED_SUPPORTED_LICENSES (but keep the old unsorted dict!)

12 years agoConvert over the license field, too!
Christopher Allan Webber [Sat, 21 Jan 2012 22:41:07 +0000 (16:41 -0600)]
Convert over the license field, too!

12 years agoLicense "all rights reserved" default should be None/NULL, not empty string
Christopher Allan Webber [Sat, 21 Jan 2012 22:40:39 +0000 (16:40 -0600)]
License "all rights reserved" default should be None/NULL, not empty string

12 years agoFix unit tests with new license support
Elrond [Sat, 21 Jan 2012 18:24:36 +0000 (19:24 +0100)]
Fix unit tests with new license support

Make the license field in the forms optional and let them
properly be defaulted to "".

12 years agoAdded migration for license field, resolved conflict in db/sql/models.py
Aaron Williamson [Fri, 20 Jan 2012 03:00:08 +0000 (22:00 -0500)]
Added migration for license field, resolved conflict in db/sql/models.py

12 years agoAdd copyright header and a bit of pep8ification
Elrond [Thu, 19 Jan 2012 23:17:05 +0000 (00:17 +0100)]
Add copyright header and a bit of pep8ification

Nearly all the sql files missed a copyright header.
So added it!
And while there fixed a few pep8 things.

12 years agoUse custom query class
Elrond [Sat, 24 Dec 2011 17:20:20 +0000 (18:20 +0100)]
Use custom query class

A custom query class allows to add more methods on
queries (read: "cursors").

This custom query class especially adds a .sort with a
calling convention exactly like the mongo one.
Makes a lot of existing code happy!

12 years agoMinor formatting and syntax fix.
Aaron Williamson [Thu, 19 Jan 2012 02:21:49 +0000 (21:21 -0500)]
Minor formatting and syntax fix.

12 years agoMoved get_license_data to mixin.py, added license to sql media model, added translati...
Aaron Williamson [Thu, 19 Jan 2012 02:07:55 +0000 (21:07 -0500)]
Moved get_license_data to mixin.py, added license to sql media model, added translation tags to license template.

12 years agoMerge branch 'mediagoblin-upstream' into feature544_basic_license_data
Aaron Williamson [Thu, 19 Jan 2012 01:40:18 +0000 (20:40 -0500)]
Merge branch 'mediagoblin-upstream' into feature544_basic_license_data

12 years agosql/fake.py: Some fake objects/methods to calm the code
Elrond [Thu, 29 Dec 2011 10:07:58 +0000 (11:07 +0100)]
sql/fake.py: Some fake objects/methods to calm the code

sql/fake.py contains some fake classes and functions to
calm the rest of the code base. Or provide super minimal
implementations.

Currently:
- ObjectId "class": It's a function mostly doing
  int(first_arg) to convert string primary keys into
  integer primary keys.
- InvalidId exception
- DESCENING "constant"