mirror of
				https://github.com/peeringdb/peeringdb.git
				synced 2024-05-11 05:55:09 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			50 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
from django.core.management.base import BaseCommand
 | 
						|
 | 
						|
from peeringdb_server.models import DeskProTicket
 | 
						|
 | 
						|
import re
 | 
						|
 | 
						|
 | 
						|
class Command(BaseCommand):
 | 
						|
    help = "Reset a deskpro ticket and queue again for publish"
 | 
						|
 | 
						|
    def add_arguments(self, parser):
 | 
						|
        parser.add_argument("id", nargs="?", help="ticket id")
 | 
						|
        parser.add_argument('--commit', action='store_true',
 | 
						|
                            help="will commit the changes")
 | 
						|
        parser.add_argument('--only-failed', action='store_true',
 | 
						|
                            help="only requeue failed tickets")
 | 
						|
 | 
						|
    def log(self, msg):
 | 
						|
        if self.commit:
 | 
						|
            self.stdout.write(msg)
 | 
						|
        else:
 | 
						|
            self.stdout.write("[pretend] {}".format(msg))
 | 
						|
 | 
						|
    def handle(self, *args, **options):
 | 
						|
        _id = options.get("id")
 | 
						|
        self.commit = options.get("commit")
 | 
						|
        self.only_failed = options.get("only_failed")
 | 
						|
 | 
						|
        qset = DeskProTicket.objects
 | 
						|
        if _id[0] == "g":
 | 
						|
            self.log("Requeuing tickets with id greater than {}".format(
 | 
						|
                _id[1:]))
 | 
						|
            qset = qset.filter(pk__gt=_id[1:])
 | 
						|
        elif _id[0] == "l":
 | 
						|
            self.log("Requeuing tickets with id smaller than {}".format(
 | 
						|
                _id[1:]))
 | 
						|
            qset = qset.filter(pk__lt=_id[1:])
 | 
						|
        else:
 | 
						|
            qset = qset.filter(pk=_id)
 | 
						|
 | 
						|
        for ticket in qset:
 | 
						|
            if self.only_failed and ticket.subject.find("[FAILED]") == -1:
 | 
						|
                continue
 | 
						|
            self.log("Requeuing ticket with id {}".format(ticket.id))
 | 
						|
            ticket.subject = ticket.subject.replace("[FAILED]", "")
 | 
						|
            ticket.body = re.sub(r'API Delivery Error(.+)$', '', ticket.body)
 | 
						|
            ticket.published = None
 | 
						|
            if self.commit:
 | 
						|
                ticket.save()
 |