]> git.0d.be Git - earwig.git/commitdiff
add filter arguments to update sounds management command
authorFrédéric Péters <fpeters@0d.be>
Sun, 2 Sep 2018 06:33:49 +0000 (08:33 +0200)
committerFrédéric Péters <fpeters@0d.be>
Sun, 2 Sep 2018 10:12:23 +0000 (12:12 +0200)
earwig/sounds/management/commands/update_sounds.py

index 5f212369ac3be785b57d9564c8ca9c0f57f818de..306731a25e5475910c8171e0c0dfbfb794b6c727 100644 (file)
 # You should have received a copy of the GNU Affero General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+import datetime
+import sys
+
 from django.core.management.base import BaseCommand
+from django.db.models import Q
+from django.utils.timezone import now
 
 from ...models import Channel
 
 
 class Command(BaseCommand):
+    def add_arguments(self, parser):
+        parser.add_argument('--channel', dest='channel', metavar='CHANNEL', type=str)
+        parser.add_argument('--delay', dest='delay', metavar='DELAY',
+                type=int, default=3600)
+
     def handle(self, *args, **options):
-        for channel in Channel.objects.all():
+        qs = Channel.objects.all()
+        if options.get('channel'):
+            qs = qs.filter(Q(title__icontains=options.get('channel')) |
+                           Q(channel_url__icontains=options.get('channel')))
+        if options.get('delay'):
+            qs = qs.filter(last_update_timestamp__lt=now() -
+                    datetime.timedelta(seconds=options.get('delay')))
+        for channel in qs:
+            if options.get('verbosity'):
+                sys.stderr.write('Updating %s\n' % channel)
             channel.update()
+            channel.save()