Ejemplo n.º 1
0
    def _prepare_queue_entries(self):
        self._queue_and_gt_records_groups()
        for queue_entry in self.same_queue_entries:
            queue_entry.status = utils.get_new_queue_entry_status(
                queue_entry.status, was_found_in_gt=True)

        for queue_entry in self.missed_queue_entries:
            queue_entry.status = utils.get_new_queue_entry_status(
                queue_entry.status, was_found_in_gt=False)

        for gt_entry in self.new_gt_entries:
            queue_entry = GTQueueEntry(
                queue=self.queue_for_update_obj,
                tag=gt_entry.tag,
                record=gt_entry.record,
                label=gt_entry.label,
                comment='Found in GT',
                status='O',
                administrator=None,
                submitter=User.objects.get(username='******'),
                #todo - set in config default gt_entry_subbmiter and create it during instaltion
                #fix raises exception when not founded
                administration_time=None)
            self.new_queue_entries.append(queue_entry)

        return (self.same_queue_entries + self.missed_queue_entries +
                self.new_queue_entries, (self.same_queue_entries,
                                         self.missed_queue_entries,
                                         self.new_queue_entries))
Ejemplo n.º 2
0
def admin_dashboard(request):
    global_tag_count = GlobalTag.objects.filter(entry_ignored=False).count()
    not_imported_global_tags = GlobalTag.objects.filter(entry_ignored=False,
                                                        has_errors=True)
    inconsistent_global_tags_count = GlobalTag.objects.filter(
        entry_ignored=False, has_warnings=True).count()
    global_tag_queue_count = GTQueue.objects.all().count()
    global_tag_queue_pending_elements_count = GTQueueEntry.objects.filter(
        status="P").count()
    tb_name = GTQueueEntry()._meta.db_table
    open_queues = GTQueue.objects.filter(is_open=True).extra(
        select={
            'num_pending':
            'SELECT COUNT(*) FROM {tb_name} WHERE ({tb_name}.status =\'P\') and ({tb_name}.queue_id = globaltagcollector_gtqueue.id)'
            .format(tb_name=tb_name)
        })

    return render_to_response("admin2/dashboard.html", {
        'global_tag_count': global_tag_count,
        'global_tag_queue_count': global_tag_queue_count,
        'not_imported_global_tags': not_imported_global_tags,
        'inconsistent_global_tags_count': inconsistent_global_tags_count,
        'global_tag_queue_pending_elements_count':
        global_tag_queue_pending_elements_count,
        'open_queues': open_queues,
    },
                              context_instance=RequestContext(request))
Ejemplo n.º 3
0
    def add_queue_entry(self,
                        tag_obj,
                        record_obj,
                        label,
                        comment,
                        submitter,
                        administrator=None,
                        status="P"):  #status pending
        if not self._tag_object_is_related(tag_obj, record_obj):
            raise Exception(
                "Tag and object is not related")  #TODO custom exception
        if not self._record_belongs_to_queue_software_release(record_obj):
            raise Exception("Record does not match queue software release")

        now = datetime.datetime.now()
        qte = GTQueueEntry()
        qte.queue = self.queue_obj
        qte.tag = tag_obj
        qte.record = record_obj
        qte.label = label
        qte.comment = comment
        qte.submitter = submitter
        qte.administrator = administrator
        qte.administration_time = now
        if (status == "P") or (status == "R") or (status == "I"):
            qte.status = status
            qte.save()
        elif (status == "O") or (status == "A"):
            print "STATUS O-A"
            with transaction.commit_on_success():
                self.set_other_records_to_ignored(record_obj, label, status)
                qte.status = status
                qte.save()

                #TODO signal
        else:
            raise Exception("Unknown gt queue record status")
Ejemplo n.º 4
0
    def create_children(self, administrator):
        if self.has_children():
            raise Exception(
                "Queue allready fully created. Can not additionally insert children"
            )  #TODO custom exception

        now = datetime.datetime.now()
        with transaction.commit_on_success():
            for gt_record in self.queue_obj.last_gt.globaltagrecord_set.all():
                qte = GTQueueEntry()
                qte.queue = self.queue_obj
                qte.tag = gt_record.tag
                qte.record = gt_record.record
                qte.label = gt_record.label
                qte.comment = "Automaticaly created comment for original entries"
                qte.status = 'O'
                qte.submitter = administrator
                qte.administrator = administrator
                qte.administration_time = now
                qte.save()
Ejemplo n.º 5
0
    def update_queue_from_gt(self, gt_obj):
        same_queue_entries = []  #queue entries that exist in gt and in queue
        new_gt_entries = []  #new *gt entries* that was not founded in queue
        missed_queue_entries = []  #queue entries that wasnt founded in gt

        gt_entry_objects = gt_obj.globaltagrecord_set.all()
        gt_entry_objects_dict = {}
        gt_queue_entry_objects = self.queue_obj.gtqueueentry_set.all()
        gt_queue_entry_objects_dict = {}
        for gt_entry_object in gt_entry_objects:
            gt_entry_objects_dict[(
                gt_entry_object.record_id,
                gt_entry_object.label,
            )] = gt_entry_object
        for gt_queue_entry_object in gt_queue_entry_objects:
            gt_queue_entry_objects_dict[(
                gt_queue_entry_object.record_id,
                gt_queue_entry_object.label,
            )] = gt_queue_entry_object

        for gt_queue_entry_object in gt_queue_entry_objects:
            if gt_entry_objects_dict.has_key((
                    gt_queue_entry_object.record_id,
                    gt_queue_entry_object.label,
            )):
                #Queue and GT has the same entry
                same_queue_entries.append(gt_queue_entry_object)
            else:
                #Entry is in queue but not in GT
                missed_queue_entries.append(gt_queue_entry_object)
        for gt_entry_object in gt_entry_objects:
            if not gt_queue_entry_objects_dict.has_key((
                    gt_entry_object.record_id,
                    gt_entry_object.label,
            )):
                #entry is in gt, but not in queue
                new_gt_entries.append(gt_entry_object)

        #Now setting status to queue entries depending to witch list they belong
        all_queue_entries_with_status_changes = []
        with transaction.commit_on_success():
            self.queue_obj.last_gt = gt_obj
            self.queue_obj.save()
            for queue_entry in same_queue_entries:
                old_status = queue_entry.status
                new_status = utils.get_new_queue_entry_status(
                    queue_entry.status, was_found_in_gt=True)
                queue_entry.status = new_status
                queue_entry.save()
                if old_status != new_status:
                    print queue_entry
                all_queue_entries_with_status_changes.append(
                    (old_status, new_status, queue_entry))

            for queue_entry in missed_queue_entries:
                old_status = queue_entry.status
                new_status = utils.get_new_queue_entry_status(
                    queue_entry.status, was_found_in_gt=False)
                queue_entry.status = new_status
                queue_entry.save()
                all_queue_entries_with_status_changes.append(
                    (old_status, new_status, queue_entry))

            #new_queue_entries = []
            service_user, created = User.objects.get_or_create(
                username='******')
            for gt_entry in new_gt_entries:
                queue_entry = GTQueueEntry(
                    queue=self.queue_obj,
                    tag=gt_entry.tag,
                    record=gt_entry.record,
                    label=gt_entry.label,
                    comment='Found in GT',
                    status='O',
                    administrator=None,
                    submitter=service_user,
                    #todo - set in config default gt_entry_subbmiter and create it during instaltion
                    administration_time=None)
                queue_entry.save()
                all_queue_entries_with_status_changes.append(
                    (None, 'O', queue_entry))
                #self.new_queue_entries.append(queue_entry)

            #        return (
            #            self.same_queue_entries + self.missed_queue_entries + self.new_queue_entries,
            #            (self.same_queue_entries, self.missed_queue_entries, self.new_queue_entries)
            #            )

        return all_queue_entries_with_status_changes
Ejemplo n.º 6
0
    def add_queue_entry(self, tag_obj, record_obj, label, comment, submitter, administrator=None, status="P"): #status pending
        if not self._tag_object_is_related(tag_obj, record_obj):
            raise Exception("Tag and object is not related") #TODO custom exception
        if not self._record_belongs_to_queue_software_release(record_obj):
            raise Exception("Record does not match queue software release")

        now = datetime.datetime.now()
        qte = GTQueueEntry()
        qte.queue = self.queue_obj
        qte.tag = tag_obj
        qte.record = record_obj
        qte.label = label
        qte.comment = comment
        qte.submitter =     submitter
        qte.administrator = administrator
        qte.administration_time = now
        if (status=="P") or (status=="R") or (status=="I"):
            qte.status = status
            qte.save()
        elif (status=="O") or (status=="A"):
            print "STATUS O-A"
            with transaction.commit_on_success():
                self.set_other_records_to_ignored(record_obj, label, status)
                qte.status = status
                qte.save()

                #TODO signal
        else:
            raise Exception("Unknown gt queue record status")
Ejemplo n.º 7
0
    def create_children(self, administrator):
        if self.has_children():
            raise Exception("Queue allready fully created. Can not additionally insert children") #TODO custom exception

        now = datetime.datetime.now()
        with transaction.commit_on_success():
            for gt_record in self.queue_obj.last_gt.globaltagrecord_set.all():
                qte = GTQueueEntry()
                qte.queue = self.queue_obj
                qte.tag = gt_record.tag
                qte.record = gt_record.record
                qte.label = gt_record.label
                qte.comment = "Automaticaly created comment for original entries"
                qte.status = 'O'
                qte.submitter = administrator
                qte.administrator = administrator
                qte.administration_time = now
                qte.save()
Ejemplo n.º 8
0
    def update_queue_from_gt(self, gt_obj):
        same_queue_entries = [] #queue entries that exist in gt and in queue
        new_gt_entries = [] #new *gt entries* that was not founded in queue
        missed_queue_entries = [] #queue entries that wasnt founded in gt

        gt_entry_objects = gt_obj.globaltagrecord_set.all()
        gt_entry_objects_dict = {}
        gt_queue_entry_objects = self.queue_obj.gtqueueentry_set.all()
        gt_queue_entry_objects_dict = {}
        for gt_entry_object in gt_entry_objects:
            gt_entry_objects_dict[(gt_entry_object.record_id, gt_entry_object.label,)] = gt_entry_object
        for gt_queue_entry_object in gt_queue_entry_objects:
            gt_queue_entry_objects_dict[(gt_queue_entry_object.record_id, gt_queue_entry_object.label,)] = gt_queue_entry_object


        for gt_queue_entry_object in gt_queue_entry_objects:
            if gt_entry_objects_dict.has_key((gt_queue_entry_object.record_id, gt_queue_entry_object.label,)):
                #Queue and GT has the same entry
                same_queue_entries.append(gt_queue_entry_object)
            else:
                #Entry is in queue but not in GT
                missed_queue_entries.append(gt_queue_entry_object)
        for gt_entry_object in gt_entry_objects:
            if not gt_queue_entry_objects_dict.has_key((gt_entry_object.record_id, gt_entry_object.label,)):
                #entry is in gt, but not in queue
                new_gt_entries.append(gt_entry_object)

        #Now setting status to queue entries depending to witch list they belong
        all_queue_entries_with_status_changes = []
        with transaction.commit_on_success():
            self.queue_obj.last_gt = gt_obj
            self.queue_obj.save()
            for queue_entry in same_queue_entries:
                old_status = queue_entry.status
                new_status = utils.get_new_queue_entry_status(queue_entry.status,was_found_in_gt=True)
                queue_entry.status = new_status
                queue_entry.save()
                if old_status != new_status:
                    print queue_entry
                all_queue_entries_with_status_changes.append((old_status, new_status, queue_entry))



            for queue_entry in missed_queue_entries:
                old_status = queue_entry.status
                new_status = utils.get_new_queue_entry_status(queue_entry.status,was_found_in_gt=False)
                queue_entry.status = new_status
                queue_entry.save()
                all_queue_entries_with_status_changes.append((old_status, new_status, queue_entry))


            #new_queue_entries = []
            service_user, created = User.objects.get_or_create(username='******')
            for gt_entry in new_gt_entries:
                queue_entry = GTQueueEntry(
                    queue=self.queue_obj,
                    tag=gt_entry.tag,
                    record=gt_entry.record,
                    label=gt_entry.label,
                    comment='Found in GT',
                    status='O',
                    administrator=None,
                    submitter=service_user,
                    #todo - set in config default gt_entry_subbmiter and create it during instaltion
                    administration_time=None
                )
                queue_entry.save()
                all_queue_entries_with_status_changes.append((None, 'O', queue_entry))
                #self.new_queue_entries.append(queue_entry)


            #        return (
            #            self.same_queue_entries + self.missed_queue_entries + self.new_queue_entries,
            #            (self.same_queue_entries, self.missed_queue_entries, self.new_queue_entries)
            #            )

        return all_queue_entries_with_status_changes
Ejemplo n.º 9
0
    def create_queue_entries_from_gt(self, queue, administrator):
        now = datetime.datetime.now()

        with transaction.commit_on_success():
            for gt_record in queue.last_gt.globaltagrecord_set.all():
                qte = GTQueueEntry()
                qte.queue = queue
                qte.tag = gt_record.tag
                qte.record = gt_record.record
                qte.label = gt_record.label  #ASK PFN
                qte.comment = "Automaticaly created comment for original entries"  #ASK maybe global tag entires should have
                qte.status = 'O'
                qte.submitter = administrator
                qte.administrator = administrator
                qte.administration_time = now
                qte.save()
Ejemplo n.º 10
0
    def create_queue_entries_from_gt(self, queue, administrator):
        now = datetime.datetime.now()

        with transaction.commit_on_success():
            for gt_record in queue.last_gt.globaltagrecord_set.all():
                qte = GTQueueEntry()
                qte.queue = queue
                qte.tag = gt_record.tag
                qte.record = gt_record.record
                qte.label =gt_record.label #ASK PFN
                qte.comment = "Automaticaly created comment for original entries" #ASK maybe global tag entires should have
                qte.status = 'O'
                qte.submitter = administrator
                qte.administrator = administrator
                qte.administration_time = now
                qte.save()
                #todo detect if success