Esempio n. 1
0
    def handle(self, *args, **opts):
        if opts['quiet']: self.stdout = open(devnull, 'w')
        # Select view by id or ids
        ids = [i.strip() for i in opts['ids'].split(',')]
        views = View.objects.filter(id__in=ids)
        # Stop if no given id
        if not views.exists():
            self.stdout.write("There's no view with given ID: '%s'" %
                              (opts['ids'] or opts['id']))
            sys.exit(1)
        # Set source to add or del
        to_add = set([i.strip() for i in opts['add_sources'].split(',')])
        to_del = set([i.strip() for i in opts['rm_sources'].split(',')])
        # Walk on view for valid or fail
        modified_views = []
        form_error = None
        for v in views:
            # Use Form to valid
            data = v.__dict__
            data.update(dict([(k, V) for k, V in opts.items() if V]))
            data['sources'] = [str(V.id) for V in v.sources.all()]
            data['sources'] = set(data['sources']) - to_del
            data['sources'] = list(data['sources'] | to_add)
            data['sources'] = [i for i in data['sources'] if i]
            F = View_Form(data=data, instance=v)
            if F.is_valid():
                v = F.save()
                modified_views.append(v)
            else:
                form_error = F.errors
        # Walk on all list to print it
        if modified_views:
            self.stdout.write(
                ROW_FORMAT.format(**{
                    u'id': 'ID',
                    'sources': 'Source IDs',
                    'name': u'Name'
                }))
            for v in modified_views:
                v_dict = v.__dict__
                v_dict['sources'] = ','.join(
                    [str(s.id) for s in v.sources.all()])
                self.stdout.write(ROW_FORMAT.format(**v_dict))

        if form_error:
            self.stdout.write('* Error:')
            for field, errors in form_error.items():
                self.stdout.write(field)
                for err in errors:
                    self.stdout.write('\t' + err)
Esempio n. 2
0
 def handle(self, *args, **opts):
     if opts['quiet']: self.stdout = open(devnull, 'w')
     # Select source by id or ids
     opts['sources'] = [ i.strip() for i in opts['sources'].split(',') ]
     # Use Form to valid
     F = View_Form(data=opts)
     if F.is_valid():
         v = F.save()
         v_dict = v.__dict__
         v_dict['sources'] = ','.join([ str(s.id) for s in v.sources.all() ])
         self.stdout.write(ROW_FORMAT.format(**{u'id': 'ID', 'sources': 'Source IDs', 'name': u'Name'}))
         self.stdout.write(ROW_FORMAT.format(**v_dict))
     else:
         for field,errors in F.errors.items():
             self.stdout.write(field)
             for err in errors:
                 self.stdout.write('\t'+err)
Esempio n. 3
0
    def handle(self, *args, **opts):
        if opts['quiet']: self.stdout = open(devnull, 'w')
        # Select view by id or ids
        ids = [ i.strip() for i in opts['ids'].split(',') ]
        views = View.objects.filter(id__in=ids)
        # Stop if no given id
        if not views.exists():
            self.stdout.write("There's no view with given ID: '%s'" % (opts['ids'] or opts['id']) )
            sys.exit(1)
        # Set source to add or del
        to_add = set([ i.strip() for i in opts['add_sources'].split(',') ])
        to_del = set([ i.strip() for i in opts['rm_sources'].split(',') ])
        # Walk on view for valid or fail
        modified_views = []
        form_error = None
        for v in views:
            # Use Form to valid
            data = v.__dict__
            data.update(dict([ (k,V) for k,V in opts.items() if V ]))
            data['sources'] = [ str(V.id) for V in v.sources.all() ]
            data['sources'] = set(data['sources']) - to_del
            data['sources'] = list(data['sources'] | to_add)
            data['sources'] = [ i for i in data['sources'] if i ]
            F = View_Form(data=data, instance=v)
            if F.is_valid():
                v = F.save()
                modified_views.append(v)
            else:
                form_error = F.errors
        # Walk on all list to print it
        if modified_views:
            self.stdout.write(ROW_FORMAT.format(**{u'id': 'ID', 'sources': 'Source IDs', 'name': u'Name'}))
            for v in modified_views:
                v_dict = v.__dict__
                v_dict['sources'] = ','.join([ str(s.id) for s in v.sources.all() ])
                self.stdout.write(ROW_FORMAT.format(**v_dict))

        if form_error:
            self.stdout.write('* Error:')
            for field,errors in form_error.items():
                self.stdout.write(field)
                for err in errors:
                    self.stdout.write('\t'+err)
Esempio n. 4
0
 def handle(self, *args, **opts):
     if opts['quiet']: self.stdout = open(devnull, 'w')
     # Select source by id or ids
     opts['sources'] = [i.strip() for i in opts['sources'].split(',')]
     # Use Form to valid
     F = View_Form(data=opts)
     if F.is_valid():
         v = F.save()
         v_dict = v.__dict__
         v_dict['sources'] = ','.join([str(s.id) for s in v.sources.all()])
         self.stdout.write(
             ROW_FORMAT.format(**{
                 u'id': 'ID',
                 'sources': 'Source IDs',
                 'name': u'Name'
             }))
         self.stdout.write(ROW_FORMAT.format(**v_dict))
     else:
         for field, errors in F.errors.items():
             self.stdout.write(field)
             for err in errors:
                 self.stdout.write('\t' + err)