mediagoblin.git
12 years agoLet Main Server emit startup notice including version
Elrond [Sun, 26 Feb 2012 17:45:35 +0000 (18:45 +0100)]
Let Main Server emit startup notice including version

There was no place in the software telling the user the
version in use. So start by having the main server emit a
startup notice including the version string. Uses python
logging, so should be easy to reconfigure, etc.

12 years agoAllow .id instead of ._id for the Mongo backend
Elrond [Sun, 25 Dec 2011 15:01:59 +0000 (16:01 +0100)]
Allow .id instead of ._id for the Mongo backend

To allow easier migration to the SQLAlchemy style .id give
the User and MediaEntry mongo classes an alias attribute of
.id that maps to ['_id'].

Use it in the upload process, because this was one of the
last positions with a ['_id'] instead of ._id (due to a bug
in mongokit).

12 years agoCreate "gmg convert_mongo_to_sql" command
Elrond [Thu, 16 Feb 2012 23:09:30 +0000 (00:09 +0100)]
Create "gmg convert_mongo_to_sql" command

Finally, to make testing of sql a bit easier, create a
bin/gmg command to do the conversion from mongo to sql.
It's currently named "convert_mongo_to_sql".

The most important option is the gmg -cf option to give a
configfile with the appropiate sql_engine definition.

12 years agomongo to sql convert: Better Ordering
Elrond [Sun, 22 Jan 2012 15:57:56 +0000 (16:57 +0100)]
mongo to sql convert: Better Ordering

Order the conversion by the "created" attribute. That way
the sql ids are mostly in the order they would have been,
if sql was used earlier.

Makes things nicer to look at in a db dump.

12 years agoUse task_id in generating the queue file path
Elrond [Sun, 19 Feb 2012 11:13:26 +0000 (12:13 +0100)]
Use task_id in generating the queue file path

The task_id is created anyway as a UUID. So it is very
unique per definition. The only thing needed for the queue
file path is a unique part.

Before the objectid of the MediaEntry was used instead. But
in the sql world the objectid is only available after an
"insert" on the db. And creating the queue_file_path
afterwards would require an "update" on the db. We can save
that. ... for now.

12 years agoWe now require sqlalchemy and sqlalchemy-migrate
Christopher Allan Webber [Sun, 19 Feb 2012 21:30:38 +0000 (15:30 -0600)]
We now require sqlalchemy and sqlalchemy-migrate

12 years agoCommenting out the migrations that don't exist yet
Christopher Allan Webber [Sun, 19 Feb 2012 05:19:41 +0000 (23:19 -0600)]
Commenting out the migrations that don't exist yet

12 years agoUpdates so that dbupdate command works
Christopher Allan Webber [Sun, 19 Feb 2012 05:19:09 +0000 (23:19 -0600)]
Updates so that dbupdate command works

 - Various fixes to dbupdate itself
 - Switching db/sql/migrations.py to use a dict instead of a list
 - Registering the function

12 years agoMerge branch 'master' into sqlmigrate
Christopher Allan Webber [Sat, 18 Feb 2012 21:33:29 +0000 (15:33 -0600)]
Merge branch 'master' into sqlmigrate

12 years agoStart having useful defaults for SQL
Elrond [Sat, 18 Feb 2012 10:00:13 +0000 (11:00 +0100)]
Start having useful defaults for SQL

Mostly this means: Havintg a config_spec.ini that has a
local (relative to mediagoblin.ini) sqlite db with the name
"mediagoblin.db".

Also:
- Add to .gitignore
- Add a notice to mediagoblin.ini about the db

12 years agoFix MediaTag __init__ to handle no args
Elrond [Sat, 18 Feb 2012 18:22:00 +0000 (19:22 +0100)]
Fix MediaTag __init__ to handle no args

Let the init code also handle createing a fresh clean
instance without any attrs set.

12 years agoSQL: fail_metadata as JSON encoded field
Elrond [Sun, 12 Feb 2012 22:49:01 +0000 (23:49 +0100)]
SQL: fail_metadata as JSON encoded field

fail_metadata used to be a dict in mongo. So a json encoded
field should be okay too.

We could use a pickled field instead, which would be more
flexible.

12 years agoMerge branch 'master' into sqlmigrate
Christopher Allan Webber [Sat, 18 Feb 2012 16:01:47 +0000 (10:01 -0600)]
Merge branch 'master' into sqlmigrate

Conflicts:
mediagoblin/db/sql/models.py

12 years agoDrop pre-rendered html: MediaComment.content_html
Elrond [Sat, 18 Feb 2012 10:32:28 +0000 (11:32 +0100)]
Drop pre-rendered html: MediaComment.content_html

After a bit of discussion, we decided to drop the
pre-rendered html from the database and render it on
the fly.

In another step, we will use some proper caching method to
cache this stuff.

This commit affects the MediaComment.content_html part.

12 years agoDrop pre-rendered html: MediaEntry.description_html
Elrond [Mon, 13 Feb 2012 12:42:59 +0000 (13:42 +0100)]
Drop pre-rendered html: MediaEntry.description_html

After a bit of discussion, we decided to drop the
pre-rendered html from the database and render it on
the fly.

In another step, we will use some proper caching method to
cache this stuff.

This commit affects the MediaEntry.description_html part.

12 years agoDrop pre-rendered html: User.bio_html
Elrond [Sat, 4 Feb 2012 19:55:55 +0000 (20:55 +0100)]
Drop pre-rendered html: User.bio_html

After a bit of discussion, we decided to drop the
pre-rendered html from the database and render it on
the fly.

In another step, we will use some proper caching method to
cache this stuff.

This commit affects the User.bio_html part.

12 years agoRevert "Layout overhaul time!"
Christopher Allan Webber [Tue, 14 Feb 2012 03:31:11 +0000 (21:31 -0600)]
Revert "Layout overhaul time!"

This reverts a whole bunch of commits, fb1dc4f5 thru 92e8ca79, where
an experimental new layout was played with.  Unfortunately, this
layout broke the look and feel of master, even though it was going in
the right direction for mobile stuff.  Jef said he'll do things in a
branch!

12 years ago47: Only lowercase host part of email
Elrond [Mon, 13 Feb 2012 22:11:49 +0000 (23:11 +0100)]
47: Only lowercase host part of email

According to most documentation it seems that the local
part of an email adress is/can be case sensitive. While
the host part is not.
So we lowercase only the host part of the given adress.

See: http://issues.mediagoblin.org/ticket/47

12 years agoOur javascript is actually AGPLv3+, not LGPL*. Correcting.
Christopher Allan Webber [Mon, 13 Feb 2012 02:36:46 +0000 (20:36 -0600)]
Our javascript is actually AGPLv3+, not LGPL*.  Correcting.

12 years agoWait, scratch that. This commit uses a better way.
Jef van Schendel [Sun, 12 Feb 2012 20:02:02 +0000 (21:02 +0100)]
Wait, scratch that. This commit uses a better way.

12 years agoAdd navigation button styles for mobile
Jef van Schendel [Sun, 12 Feb 2012 20:00:20 +0000 (21:00 +0100)]
Add navigation button styles for mobile

12 years agoFix comment input field width/padding; change some text; remove weird #form_comment...
Jef van Schendel [Sun, 12 Feb 2012 19:47:25 +0000 (20:47 +0100)]
Fix comment input field width/padding; change some text; remove weird #form_comment duplicate rules; move Edit/Delete buttons next to title

12 years agoMake media thumbnail gallery a list instead of a table
Jef van Schendel [Sun, 12 Feb 2012 18:33:05 +0000 (19:33 +0100)]
Make media thumbnail gallery a list instead of a table

12 years agoCorrections for mobile layout
Jef van Schendel [Sun, 12 Feb 2012 17:39:55 +0000 (18:39 +0100)]
Corrections for mobile layout

12 years agoMove "Added on" date to sidebar
Jef van Schendel [Sun, 12 Feb 2012 17:25:52 +0000 (18:25 +0100)]
Move "Added on" date to sidebar

12 years agoStyle sidedata h3; revert sidebar margin change
Jef van Schendel [Sun, 12 Feb 2012 17:23:18 +0000 (18:23 +0100)]
Style sidedata h3; revert sidebar margin change

12 years agoFix sidebar margins
Jef van Schendel [Sun, 12 Feb 2012 17:12:23 +0000 (18:12 +0100)]
Fix sidebar margins

12 years agoMove Attachments from sidebar to default pane
Jef van Schendel [Sun, 12 Feb 2012 15:30:21 +0000 (16:30 +0100)]
Move Attachments from sidebar to default pane

12 years agoConsistencify sidebar bits (same headers and such)
Jef van Schendel [Sun, 12 Feb 2012 15:28:42 +0000 (16:28 +0100)]
Consistencify sidebar bits (same headers and such)

12 years agoRestore sidebar
Jef van Schendel [Sun, 12 Feb 2012 15:18:58 +0000 (16:18 +0100)]
Restore sidebar

12 years agoLayout overhaul time!
Jef van Schendel [Sat, 11 Feb 2012 22:04:02 +0000 (23:04 +0100)]
Layout overhaul time!

12 years agosql db design suggestions by Svavar Kjarrval
Elrond [Fri, 10 Feb 2012 23:38:21 +0000 (00:38 +0100)]
sql db design suggestions by Svavar Kjarrval

Many thanks go to Svavar Kjarrval who has taken a deeper
look at our current sql db design and made a bunch of
suggestions.  The suggestions are currently put as TODO
items in the docstrings.  This way we can keep track of
them directly where we need it.

12 years agoFix for ticket #386
Jef van Schendel [Thu, 9 Feb 2012 20:46:57 +0000 (21:46 +0100)]
Fix for ticket #386

12 years agoFix docs version
Will Kahn-Greene [Thu, 9 Feb 2012 16:00:30 +0000 (11:00 -0500)]
Fix docs version

12 years agoUpdate version to 0.3.0-dev
Will Kahn-Greene [Thu, 9 Feb 2012 15:49:50 +0000 (10:49 -0500)]
Update version to 0.3.0-dev

12 years agoUpdate version numbers
Will Kahn-Greene [Thu, 9 Feb 2012 15:44:36 +0000 (10:44 -0500)]
Update version numbers

12 years agoCommitting extracted and compiled translations
Christopher Allan Webber [Thu, 9 Feb 2012 15:30:26 +0000 (09:30 -0600)]
Committing extracted and compiled translations

12 years agoRemoving youcanhelp stuff
Will Kahn-Greene [Thu, 9 Feb 2012 15:23:03 +0000 (10:23 -0500)]
Removing youcanhelp stuff

This was never used. It doesn't support Texinfo files. It was only half
completed. Best to remove it.

12 years agoUpdate copyright headers for shell scripts
Will Kahn-Greene [Thu, 9 Feb 2012 15:20:42 +0000 (10:20 -0500)]
Update copyright headers for shell scripts

12 years agoAdded info on how to enable ascii art
Christopher Allan Webber [Thu, 9 Feb 2012 15:15:23 +0000 (09:15 -0600)]
Added info on how to enable ascii art

12 years agoUpdating codebase.rst to reflect the modern mediagoblin world
Christopher Allan Webber [Thu, 9 Feb 2012 15:10:08 +0000 (09:10 -0600)]
Updating codebase.rst to reflect the modern mediagoblin world

 - adding/removing libraries listed as appropriate
 - buildout->virtualenv references
 - Updating directory structure description to reflect current reality

12 years agoMinor rewording
Will Kahn-Greene [Wed, 8 Feb 2012 16:07:19 +0000 (11:07 -0500)]
Minor rewording

Tried to address confusion I had when I read the document and tweaked
some formatting.

12 years agoFix copyright statements; add LICENSE for EXIF.py
Will Kahn-Greene [Wed, 8 Feb 2012 15:46:33 +0000 (10:46 -0500)]
Fix copyright statements; add LICENSE for EXIF.py

12 years agoFully qualify the import of asciitoimage
Christopher Allan Webber [Wed, 8 Feb 2012 15:29:24 +0000 (09:29 -0600)]
Fully qualify the import of asciitoimage

12 years agoAdded CC0 header to all MediaGoblin docs in docs/source/
Christopher Allan Webber [Wed, 8 Feb 2012 03:25:41 +0000 (21:25 -0600)]
Added CC0 header to all MediaGoblin docs in docs/source/

12 years agoCommitting extracted and compiled translations
Christopher Allan Webber [Sun, 5 Feb 2012 22:23:29 +0000 (16:23 -0600)]
Committing extracted and compiled translations

12 years agoCommitting present MediaGoblin translations before pushing extracted messages
Christopher Allan Webber [Sun, 5 Feb 2012 22:23:18 +0000 (16:23 -0600)]
Committing present MediaGoblin translations before pushing extracted messages

12 years agoCommitting present MediaGoblin translations before pushing extracted messages
Christopher Allan Webber [Sun, 5 Feb 2012 22:21:14 +0000 (16:21 -0600)]
Committing present MediaGoblin translations before pushing extracted messages

12 years agoFix EXIF based image rotation test
Elrond [Sat, 4 Feb 2012 19:54:14 +0000 (20:54 +0100)]
Fix EXIF based image rotation test

The test checks for a pixel value after rotation (good
idea!). But the value seems to be a bit different on some
platforms, so use a list of seen values.

Not the perfect solution, but it works.

12 years agoASCII media support - Fixes
Joar Wandborg [Sat, 4 Feb 2012 19:51:05 +0000 (20:51 +0100)]
ASCII media support - Fixes

- Added debug logging in
  - mediagoblin.processing
  - mediagoblin.media_types.ascii.processing
  - mediagoblin.media_types.ascii.asciitoimage

12 years agoASCII art support - Fixes
Joar Wandborg [Thu, 2 Feb 2012 20:28:21 +0000 (21:28 +0100)]
ASCII art support - Fixes

- Improved(?) character set detection, chardet will not win
  over UTF-8 unless it is >= 90% sure.
- Changed the unicode.txt to ascii-portable.txt, since there is
  no unicode in the file.
- etc.

12 years agoAdded extensions 'asc' and 'nfo' to ASCII media type
Joar Wandborg [Thu, 2 Feb 2012 18:54:47 +0000 (19:54 +0100)]
Added extensions 'asc' and 'nfo' to ASCII media type

12 years agoIt's 2012 all up in here
Christopher Allan Webber [Thu, 2 Feb 2012 15:44:13 +0000 (09:44 -0600)]
It's 2012 all up in here

12 years agoUpdating deployment guide so that it can handle the current virtualenv site-packages...
Christopher Allan Webber [Thu, 2 Feb 2012 15:29:25 +0000 (09:29 -0600)]
Updating deployment guide so that it can handle the current virtualenv site-packages changes

Now it should try using --system-site-packages and if that
fails (older version) it tries it without the argument.

12 years agoExplained why migration #1 commented out.
Christopher Allan Webber [Mon, 30 Jan 2012 04:19:53 +0000 (22:19 -0600)]
Explained why migration #1 commented out.

12 years agoExcepting that migration 1 doesn't work(!), sqlalchemy migration branch working
Christopher Allan Webber [Mon, 30 Jan 2012 04:19:03 +0000 (22:19 -0600)]
Excepting that migration 1 doesn't work(!), sqlalchemy migration branch working

The reason migration 1 doesn't work, and is commented out, is because
of sqlalchemy-migrate not handling certain constraints while dropping
binary sqlite columns right.  See also:
http://code.google.com/p/sqlalchemy-migrate/issues/detail?id=143&thanks=143&ts=1327882242

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