Best Python code snippet using autotest_python
models.py
Source:models.py  
...378        for result_key in result_keys[1:]:379            query_set, _ = self._join_one_iteration_key(query_set, result_key,380                                                        first_alias=first_alias)381        return query_set382    def _join_job_keyvals(self, query_set, job_keyvals):383        for job_keyval in job_keyvals:384            alias = 'job_keyval_' + job_keyval385            keyval_query = JobKeyval.objects.filter(key=job_keyval)386            query_set = Job.objects.join_custom_field(query_set, keyval_query,387                                                       alias)388            query_set = self._add_select_value(query_set, alias)389        return query_set390    def _join_iteration_attributes(self, query_set, iteration_attributes):391        for attribute in iteration_attributes:392            alias = 'iteration_attribute_' + attribute393            attribute_query = IterationAttribute.objects.filter(394                    attribute=attribute)395            query_set = Test.objects.join_custom_field(query_set,396                                                       attribute_query, alias)397            query_set = self._add_select_value(query_set, alias)398        return query_set399    def get_query_set_with_joins(self, filter_data):400        """Add joins for querying over test-related items.401        These parameters are supported going forward:402        * test_attribute_fields: list of attribute names.  Each attribute will403                be available as a column attribute_<name>.value.404        * test_label_fields: list of label names.  Each label will be available405                as a column label_<name>.id, non-null iff the label is present.406        * iteration_result_fields: list of iteration result names.  Each407                result will be available as a column iteration_<name>.value.408                Note that this changes the semantics to return iterations409                instead of tests -- if a test has multiple iterations, a row410                will be returned for each one.  The iteration index is also411                available as iteration_<name>.iteration.412        * machine_label_fields: list of machine label names.  Each will be413                available as a column machine_label_<name>.id, non-null iff the414                label is present on the machine used in the test.415        * job_keyval_fields: list of job keyval names. Each value will be416                available as a column job_keyval_<name>.id, non-null iff the417                keyval is present in the AFE job.418        * iteration_attribute_fields: list of iteration attribute names. Each419                attribute will be available as a column420                iteration_attribute<name>.id, non-null iff the attribute is421                present.422        These parameters are deprecated:423        * include_labels424        * exclude_labels425        * include_attributes_where426        * exclude_attributes_where427        Additionally, this method adds joins if the following strings are428        present in extra_where (this is also deprecated):429        * test_labels430        * test_attributes_host_labels431        @param filter_data: Data by which to filter.432        @return A QuerySet.433        """434        query_set = self.get_query_set()435        test_attributes = filter_data.pop('test_attribute_fields', [])436        for attribute in test_attributes:437            query_set = self._join_test_attribute(query_set, attribute)438        test_labels = filter_data.pop('test_label_fields', [])439        query_set = self._join_test_label_columns(query_set, test_labels)440        machine_labels = filter_data.pop('machine_label_fields', [])441        query_set = self._join_machine_label_columns(query_set, machine_labels)442        iteration_keys = filter_data.pop('iteration_result_fields', [])443        query_set = self._join_iteration_results(query_set, iteration_keys)444        job_keyvals = filter_data.pop('job_keyval_fields', [])445        query_set = self._join_job_keyvals(query_set, job_keyvals)446        iteration_attributes = filter_data.pop('iteration_attribute_fields', [])447        query_set = self._join_iteration_attributes(query_set,448                                                    iteration_attributes)449        # everything that follows is deprecated behavior450        joined = False451        extra_where = filter_data.get('extra_where', '')452        if 'tko_test_labels' in extra_where:453            query_set = self._add_label_joins(query_set)454            joined = True455        include_labels = filter_data.pop('include_labels', [])456        exclude_labels = filter_data.pop('exclude_labels', [])457        if include_labels:458            query_set = self._include_or_exclude_labels(query_set,459                                                        include_labels)...Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!
