예제 #1
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")
예제 #2
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()
예제 #3
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
예제 #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()
예제 #5
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()
예제 #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")
예제 #7
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
예제 #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