Add unseralize for API objects
[mediagoblin.git] / mediagoblin / federation / task.py
CommitLineData
0679545f
JT
1# GNU MediaGoblin -- federated, autonomous media hosting
2# Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS.
3#
4# This program is free software: you can redistribute it and/or modify
5# it under the terms of the GNU Affero General Public License as published by
6# the Free Software Foundation, either version 3 of the License, or
7# (at your option) any later version.
8#
9# This program is distributed in the hope that it will be useful,
10# but WITHOUT ANY WARRANTY; without even the implied warranty of
11# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12# GNU Affero General Public License for more details.
13#
14# You should have received a copy of the GNU Affero General Public License
15# along with this program. If not, see <http://www.gnu.org/licenses/>.
16
17import celery
18import datetime
19import logging
20import pytz
21
22from mediagoblin.db.models import MediaEntry
23
24_log = logging.getLogger(__name__)
25logging.basicConfig()
26_log.setLevel(logging.DEBUG)
27
28@celery.task()
29def collect_garbage():
30 """
31 Garbage collection to clean up media
32
33 This will look for all critera on models to clean
34 up. This is primerally written to clean up media that's
35 entered a erroneous state.
36 """
37 _log.info("Garbage collection is running.")
38 now = datetime.datetime.now(pytz.UTC) - datetime.timedelta(days=1)
39
40 garbage = MediaEntry.query.filter(MediaEntry.created > now)
41 garbage = garbage.filter(MediaEntry.state == "unprocessed")
42
43 for entry in garbage.all():
44 _log.info("Garbage media found with ID '{0}'".format(entry.id))
45 entry.delete()
46
47
48
49