def handle(self, *args, **options):
     
     if options['list_campaigns']:
         
         campaigns = Campaign.objects.all()
         
         sys.stdout.write("Available campaigns:\n")
         
         for c in campaigns:
             sys.stdout.write("%s\t%s\n" % (c.pk, c.title))
         
     else:
         
         if len(args) > 0 and options['campaign']:
             raise CommandError('You may specify only one of campaign id argument or -n option')
         
         if len(args) == 0 and not options['campaign']:
             raise CommandError('You must specify a campaign id argument or -n option. Use --campaigns to see a list of available campaigns.')
                 
         if options['campaign']:
             campaign = Campaign.objects.create(
                 title=options['campaign'],
                 slug=slugify(options['campaign'])
             )
         else:
             try:
                 campaign = Campaign.objects.get(pk=args[0])
             except Campaign.DoesNotExist:
                 raise CommandError("Campaign %s not found. Use --campaigns to see a list of available campaigns." % campaign_id)
             
             
         if options['drop']:
             Contact.objects.filter(campaign=campaign).delete()
             
         kwargs = {}
         
         if options['party']:
             party = options['party'].upper()
             if not party in PARTIES:
                 raise CommandError('Party option must be one of D, R, or I. You entered %s.' % party)
             kwargs['party'] = PARTIES[party]
         
         if options['state']:
             kwargs['state'] = options['state']
         
         if options['chamber']:
             chamber = options['chamber'].upper()
             if not chamber in CHAMBERS:
                 raise CommandError('Chamber option must be one of H or S. You entered %s.' % chamber)
             kwargs['chamber'] = CHAMBERS[chamber]
             
         if options['bioguide']:
             kwargs['bioguide_ids'] = options['bioguide'].split(',')
         
         load_sunlightapi(campaign, **kwargs)
    def handle(self, *args, **options):

        if options['list_campaigns']:

            campaigns = Campaign.objects.all()

            sys.stdout.write("Available campaigns:\n")

            for c in campaigns:
                sys.stdout.write("%s\t%s\n" % (c.pk, c.title))

        else:

            if len(args) > 0 and options['campaign']:
                raise CommandError(
                    'You may specify only one of campaign id argument or -n option'
                )

            if len(args) == 0 and not options['campaign']:
                raise CommandError(
                    'You must specify a campaign id argument or -n option. Use --campaigns to see a list of available campaigns.'
                )

            if options['campaign']:
                campaign = Campaign.objects.create(title=options['campaign'],
                                                   slug=slugify(
                                                       options['campaign']))
            else:
                try:
                    campaign = Campaign.objects.get(pk=args[0])
                except Campaign.DoesNotExist:
                    raise CommandError(
                        "Campaign %s not found. Use --campaigns to see a list of available campaigns."
                        % campaign_id)

            if options['drop']:
                Contact.objects.filter(campaign=campaign).delete()

            kwargs = {}

            if options['party']:
                party = options['party'].upper()
                if not party in PARTIES:
                    raise CommandError(
                        'Party option must be one of D, R, or I. You entered %s.'
                        % party)
                kwargs['party'] = PARTIES[party]

            if options['state']:
                kwargs['state'] = options['state']

            if options['chamber']:
                chamber = options['chamber'].upper()
                if not chamber in CHAMBERS:
                    raise CommandError(
                        'Chamber option must be one of H or S. You entered %s.'
                        % chamber)
                kwargs['chamber'] = CHAMBERS[chamber]

            if options['bioguide']:
                kwargs['bioguide_ids'] = options['bioguide'].split(',')

            load_sunlightapi(campaign, **kwargs)
def campaignsave_callback(sender, **kwargs):
    from citizendialer3000.loading import load_sunlightapi
    if kwargs.get('created', False):
        load_sunlightapi(kwargs['instance'])