120 Commits

Author SHA1 Message Date
Sebastian Spaeth
066d49b2c1 user.get('moo') -> user.moo
User fields are always existent, so there is no need to .get() them,
just use them directly.

Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
2013-01-22 22:18:08 +01:00
Christopher Allan Webber
79f7cfd900 Merge remote-tracking branch 'refs/remotes/spaetz/521_license_preference' into mergetest 2013-01-22 13:43:02 -06:00
Mark Holmquist
dc4dfbde35 Add a license preference field
This feature is absolutely necessary. Now a user can simply define
their default license and quickly go through a form, as opposed to
stopping to click on the select and choosing the same option over
and over again.

Also added DB migration for the field, so that's working now, too.

Rebased by Sebastian and made the default value to be unicode.

Reviewed-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
2013-01-17 21:34:04 +01:00
Sebastian Spaeth
c7b3d070b6 Don't pass request into run_process_media
People(tm) want to start run_process_media from the CLI and might not
have a request object handy. So pass in the feed_url into
run_process_media rather than the request object and allow the feed url
to be empty (resulting in no PuSH notification at all then).

Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
2013-01-15 15:03:00 +01:00
Sebastian Spaeth
2cfffd5ed8 Make PuSHing the Pubhubsubbub server an async task (#436, #585)
Notifying the PuSH servers had 3 problems. 

1) it was done immediately after sending of the processing task to celery. So if celery was run in a separate
process we would notify the PuSH servers before the new media was processed/
visible. (#436)

2) Notification code was called in submit/views.py, so submitting via the
   API never resulted in notifications. (#585)

3) If Notifying the PuSH server failed, we would never retry.

The solution was to make the PuSH notification an asynchronous subtask. This
way: 1) it will only be called once async processing has finished, 2) it
is in the main processing code path, so even API calls will result in
notifications, and 3) We retry 3 times in case of failure before giving up.
If the server is in a separate process, we will wait 3x 2 minutes before
retrying the notification.

The only downside is that the celery server needs to have access to the internet
to ping the PuSH server. If that is a problem, we need to make the task belong
to a special group of celery servers that has access to the internet.

As a side effect, I believe I removed the limitation that prevented us from
upgrading celery.

Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
2013-01-15 14:53:08 +01:00
Elrond
b228d89715 prepare_queue_task: Take app not request.
First rename prepare_entry to prepare_queue_task, because
this is really more like what this thing does.

Thanks to Velmont for noting that we do not need a request
in here, but an "app" is good enough. Which means, that
this stuff can be called from tool scripts too.
2012-12-26 23:42:26 +01:00
Elrond
8eb47d02d9 Processing: Factor out prepare_entry.
prepare_entry handles the task_id setup and generating a
queue filename and file. it returns the queue file.
2012-12-26 23:42:26 +01:00
Elrond
86bb44ef12 Factor out the actual calling of the processing.
Calling the processing task and handling the exceptions is
easy, but has a bunch of caveats, so factor it out into an
easy callable function.
2012-12-26 23:42:26 +01:00
Elrond
be1f0f7d33 upload refactor: push url handling
Start to refactor our upload handling in main submit and
the api. Start factoring out the handling of PuSH url
handling.
2012-12-26 23:42:26 +01:00
Elrond
ac8212fe65 Remove mongo style .id = ObjectId()
On SQL we can't generate the primary key on our own. So
just remove this stuff.
2012-12-24 00:07:24 +01:00
Elrond
b39d1f2351 Mongo removal: Remove the validate=True arg to obj.save()
all callers were forced to use validate=True anyway. So
remove this useless stuff.
2012-12-24 00:07:24 +01:00
Elrond
3d91433230 Move things from routing.py to tools/routing.py
This stops a cyclic import.

Move add_route, mount and endpoint_to_controller into
tools/routing.py and change all callers.
2012-12-23 12:26:34 +01:00
Sebastian Spaeth
5c2b84869f Move DBModel._id -> DBModel.id
We were refering to model._id in most of the code base as this is
what Mongo uses. However, each use of _id required a) fixup of queries:
e.g. what we did in our find() and find_one() functions moving all
'_id' to 'id'. It also required using AliasFields to make the ._id
attribute available. This all means lots of superfluous fixing and
transitioning in a SQL world.

It will also not work in the long run. Much newer code already refers
to the objects by model.id (e.g. in the oauth plugin), which will break
with Mongo. So let's be honest, rip out the _id mongoism and live with
.id as the one canonical way to address objects.

This commit modifies all users and providers of model._id to use
model.id instead. This patch works with or without Mongo removed first,
but will break Mongo usage (even more than before)

I have not bothered to fixup db.mongo.* and db.sql.convert
(which converts from Mongo to SQL)

Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
2012-12-21 00:30:48 +01:00
Christopher Allan Webber
0d857844b1 Added rudimentary route "mounting" w/ werkzeug routes; fixed auth routes
auth routes fixes:
 - mounted the auth routes at /auth/
 - removed crufty old verification email route
2012-10-14 16:26:23 -05:00
Joar Wandborg
7742dcc1fb Switched most stuff over from Routes
Removed the Routes routing functionality and replaced it with
werkzeug.routes. Most views are functional.

Known issues:

 - Translation integration with the request object is not yet figured
   out. This breaks 404 pages.
2012-10-14 13:46:31 +02:00
Joar Wandborg
111a609df5 Replaced all request.POST with request.form, ...
- Fixed error handling in OAuth plugin
- Changed request.POST file fields to request.files
2012-09-29 21:08:20 +02:00
Joar Wandborg
f1d06e1d6c Switch from webob.Request to werkzeug.wrappers.Request 2012-09-29 21:08:20 +02:00
Aaron Williamson
be5be1154f Added basic collection functionality 2012-09-18 18:10:36 +02:00
Brett Smith
7a258b1408 Fix docstring typo. 2012-07-08 10:04:58 -04:00
Joar Wandborg
deea3f6661 Merge remote-tracking branch 'joar/audio+sniffing'
Conflicts:
	mediagoblin/media_types/image/processing.py
	mediagoblin/media_types/video/__init__.py
	mediagoblin/media_types/video/processing.py
	mediagoblin/tests/test_submission.py
2012-03-27 12:05:09 +02:00
Jakob Kramer
32d8cf4511 remove unused `mg.submit.security' module 2012-03-23 22:13:48 +01:00
Elrond
eace050a7d Move celery task into own task.py
Move the actual celery task from processing/__init__.py
into its own .../task.py. That way it can be imported as
needed.
2012-03-21 12:12:07 +01:00
Elrond
58f96a13e4 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).
2012-02-25 14:10:57 +01:00
Elrond
572d4f01ff 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.
2012-02-21 20:47:26 +01:00
Elrond
1e72e075f8 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.
2012-02-18 12:41:25 +01:00
Joar Wandborg
ec4261a449 Changed media processing delegation to a 'sniffing' method
- Added sniff handlers to all media plugins
  All of them except audio returning False for ANYTHING
  at the moment.
2012-02-15 01:15:29 +01:00
Christopher Allan Webber
cf29e8a824 It's 2012 all up in here 2012-02-02 09:44:13 -06:00
Elrond
de91730336 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.
2012-01-28 19:32:43 +01:00
Christopher Allan Webber
2788e6a164 License "all rights reserved" default should be None/NULL, not empty string 2012-01-21 16:40:39 -06:00
Elrond
3c351460e1 Fix unit tests with new license support
Make the license field in the forms optional and let them
properly be defaulted to "".
2012-01-21 19:24:36 +01:00
Aaron Williamson
97ec97dbc7 Minor formatting and syntax fix. 2012-01-18 21:21:49 -05:00
Aaron Williamson
291e24f397 Merge branch 'mediagoblin-upstream' into feature544_basic_license_data 2012-01-18 20:40:18 -05:00
Michele Azzolari
c03d13cd79 Cleaned the code 2012-01-17 23:15:47 +01:00
Michele Azzolari
77b91efcc2 We handle exceptions if PuSH fails 2012-01-17 22:42:36 +01:00
Aaron Williamson
99a270e952 Merged changes with upstream 2012-01-17 00:59:21 -05:00
Aaron Williamson
25b48323a8 First crack at basic license support. 2012-01-17 00:33:55 -05:00
Michele Azzolari
bb025ebda1 As per spec, we permit to have more then 1 hub 2012-01-12 11:05:05 +01:00
Michele Azzolari
7f251b037b As suggested by Elrond, we use only one setting 2012-01-12 00:00:28 +01:00
Michele Azzolari
5b1a7bae3c Added PuSH capability 2012-01-11 15:48:37 +01:00
Jef van Schendel
9c196287ad Add Markdown for submit page, edit page, profile edit page; thus fixing ticket #690 2012-01-04 17:48:16 +01:00
Elrond
8545cfc97d Dot-Notation for MediaEntry.queued_media_file 2012-01-04 11:57:39 +01:00
Joar Wandborg
4601c30c2e Fixed submission error handling and broken tests
- Fixed broken test_auth test
- Fixed error handling on submission, it now raises the exception
  if it is not explicitly relevant to file submission.
2011-12-31 22:57:08 +01:00
Joar Wandborg
a246ccca69 ASCII media type support & fix a bug in file submission error handling
* Added ASCII media processing
* Added ASCII media display
* Added ASCII media type

Rebased from Joar Wandborg's ascii art branch (squashed to remove the
commits borrowing code of dubious license)

Fixed a bug in file submission error handling:
 - Moved file-extension condition out of loop (what did it do there?)
 - Updated file submission tests
 - Changed error handling in file submission, should now report more
   than absolutely necessary.
2011-12-31 10:32:52 -06:00
Jef van Schendel
6f55906078 Fix #715: On media submit page, "Separate" is misspelled 2011-12-30 19:45:00 +01:00
Elrond
f4ee839939 Dot-Notation for MediaEntry.media_type 2011-12-05 21:08:58 +01:00
Elrond
1d93996604 Dot-Notation for MediaEntry.description(_html) 2011-12-05 21:08:58 +01:00
Elrond
ec82fbd85c Dot-Notation for MediaEntry.title 2011-12-05 21:08:58 +01:00
Elrond
1ceb4fc868 Dot-Notation for MediaEntry.uploader 2011-12-05 21:08:58 +01:00
Elrond
5a4e3ff1e2 Dot-Notation for Users.username 2011-12-05 21:08:57 +01:00
Elrond
088c59545f Merge remote branch 'remotes/manolinux/683_text_separate_tags_by_commas_and_spaces'
* remotes/manolinux/683_text_separate_tags_by_commas_and_spaces:
  Fix the text "Seperate tags by commas and spaces" since spaces are not used to seperate anymore.
2011-11-27 23:23:20 +01:00