def filter(query): """ .. function:: XML-RPC TestCase.filter(query) Perform a search and return the resulting list of test cases augmented with their latest ``text``. :param query: Field lookups for :class:`tcms.testcases.models.TestCase` :type query: dict :return: Serialized list of :class:`tcms.testcases.models.TestCase` objects. The key ``text`` holds a the latest version of a serialized :class:`tcms.testcases.models.TestCaseText` object! :rtype: list(dict) """ if query.get('estimated_time'): query['estimated_time'] = timedelta2int( pre_process_estimated_time(query.get('estimated_time'))) results = [] for case in TestCase.objects.filter(**query): serialized_case = case.serialize() serialized_case['text'] = case.latest_text().serialize() results.append(serialized_case) return results
def filter(request, query): """ Description: Performs a search and returns the resulting list of test cases. Params: $query - Hash: keys must match valid search fields. +------------------------------------------------------------------+ | Case Search Parameters | +------------------------------------------------------------------+ | Key | Valid Values | | author | A bugzilla login (email address) | | attachment | ForeignKey: Attchment | | alias | String | | case_id | Integer | | case_status | ForeignKey: Case Stat | | category | ForeignKey: Category | | component | ForeignKey: Component | | default_tester | ForeignKey: Auth.User | | estimated_time | String: 2h30m30s(recommend) or HH:MM:SS | | plan | ForeignKey: Test Plan | | priority | ForeignKey: Priority | | category__product | ForeignKey: Product | | summary | String | | tags | ForeignKey: Tags | | create_date | Datetime | | is_automated | 1: Only show current 0: show not current | | script | Text | +------------------------------------------------------------------+ Returns: Array: Matching test cases are retuned in a list of hashes. Example: # Get all of cases contain 'TCMS' in summary >>> TestCase.filter({'summary__icontain': 'TCMS'}) # Get all of cases create by xkuang >>> TestCase.filter({'author__username': '******'}) # Get all of cases the author name starts with x >>> TestCase.filter({'author__username__startswith': 'x'}) # Get all of cases belong to the plan 137 >>> TestCase.filter({'plan__plan_id': 137}) # Get all of cases belong to the plan create by xkuang >>> TestCase.filter({'plan__author__username': '******'}) # Get cases with ID 12345, 23456, 34567 - Here is only support array so far. >>> TestCase.filter({'case_id__in': [12345, 23456, 34567]}) """ if query.get('estimated_time'): query['estimated_time'] = timedelta2int( pre_process_estimated_time(query.get('estimated_time')) ) return TestCase.to_xmlrpc(query)
def filter_count(request, values={}): """Performs a search and returns the resulting count of cases. :param dict values: a mapping containing same criteria with :meth:`TestCase.filter <tcms.xmlrpc.api.testcase.filter>`. :return: the number of matching cases. :rtype: int .. seealso:: Examples of :meth:`TestCase.filter <tcms.xmlrpc.api.testcase.filter>`. """ if values.get('estimated_time'): values['estimated_time'] = timedelta2int( pre_process_estimated_time(values.get('estimated_time'))) return distinct_count(TestCase, values)
def filter(request, query): """Performs a search and returns the resulting list of test cases. :param dict query: a mapping containing these criteria. * author: A Bugzilla login (email address) * attachment: ForeignKey: Attachment * alias: (str) * case_id: (int) * case_status: ForeignKey: Case Stat * category: ForeignKey: :class:`Category` * component: ForeignKey: :class:`Component` * default_tester: ForeignKey: ``Auth.User`` * estimated_time: String: 2h30m30s(recommend) or HH:MM:SS * plan: ForeignKey: :class:`TestPlan` * priority: ForeignKey: :class:`Priority` * category__product: ForeignKey: :class:`Product` * summary: (str) * tags: ForeignKey: :class:`Tags` * create_date: Datetime * is_automated: 1: Only show current 0: show not current * script: (str) :return: list of mappings of found :class:`TestCase`. :rtype: list Example:: # Get all of cases contain 'TCMS' in summary >>> TestCase.filter({'summary__icontain': 'TCMS'}) # Get all of cases create by xkuang >>> TestCase.filter({'author__username': '******'}) # Get all of cases the author name starts with x >>> TestCase.filter({'author__username__startswith': 'x'}) # Get all of cases belong to the plan 1 >>> TestCase.filter({'plan__plan_id': 1}) # Get all of cases belong to the plan create by xkuang >>> TestCase.filter({'plan__author__username': '******'}) # Get cases with ID 12345, 23456, 34567 - Here is only support array so far. >>> TestCase.filter({'case_id__in': [12345, 23456, 34567]}) """ if query.get('estimated_time'): query['estimated_time'] = timedelta2int( pre_process_estimated_time(query.get('estimated_time')) ) return TestCase.to_xmlrpc(query)
def filter_count(request, values={}): """Performs a search and returns the resulting count of cases. :param dict values: a mapping containing same criteria with :meth:`TestCase.filter <tcms.xmlrpc.api.testcase.filter>`. :return: the number of matching cases. :rtype: int .. seealso:: Examples of :meth:`TestCase.filter <tcms.xmlrpc.api.testcase.filter>`. """ if values.get('estimated_time'): values['estimated_time'] = timedelta2int( pre_process_estimated_time(values.get('estimated_time')) ) return distinct_count(TestCase, values)
def filter(request, query): """Performs a search and returns the resulting list of test cases. :param dict query: a mapping containing these criteria. * author: A Bugzilla login (email address) * attachment: ForeignKey: Attachment * alias: (str) * case_id: (int) * case_status: ForeignKey: Case Stat * category: ForeignKey: :class:`Category` * component: ForeignKey: :class:`Component` * default_tester: ForeignKey: ``Auth.User`` * estimated_time: String: 2h30m30s(recommend) or HH:MM:SS * plan: ForeignKey: :class:`TestPlan` * priority: ForeignKey: :class:`Priority` * category__product: ForeignKey: :class:`Product` * summary: (str) * tags: ForeignKey: :class:`Tags` * create_date: Datetime * is_automated: 1: Only show current 0: show not current * script: (str) :return: list of mappings of found :class:`TestCase`. :rtype: list Example:: # Get all of cases contain 'TCMS' in summary >>> TestCase.filter({'summary__icontain': 'TCMS'}) # Get all of cases create by xkuang >>> TestCase.filter({'author__username': '******'}) # Get all of cases the author name starts with x >>> TestCase.filter({'author__username__startswith': 'x'}) # Get all of cases belong to the plan 1 >>> TestCase.filter({'plan__plan_id': 1}) # Get all of cases belong to the plan create by xkuang >>> TestCase.filter({'plan__author__username': '******'}) # Get cases with ID 12345, 23456, 34567 - Here is only support array so far. >>> TestCase.filter({'case_id__in': [12345, 23456, 34567]}) """ if query.get('estimated_time'): query['estimated_time'] = timedelta2int( pre_process_estimated_time(query.get('estimated_time'))) return TestCase.to_xmlrpc(query)
def filter_count(values={}): """ Description: Performs a search and returns the resulting count of cases. Params: $values - Hash: keys must match valid search fields (see filter). Returns: Integer - total matching cases. Example: # See TestCase.filter() """ if values.get('estimated_time'): values['estimated_time'] = timedelta2int( pre_process_estimated_time(values.get('estimated_time'))) return distinct_count(TestCase, values)
def filter_count(request, values={}): """ Description: Performs a search and returns the resulting count of cases. Params: $values - Hash: keys must match valid search fields (see filter). Returns: Integer - total matching cases. Example: # See TestCase.filter() """ if values.get('estimated_time'): values['estimated_time'] = timedelta2int( pre_process_estimated_time(values.get('estimated_time')) ) return distinct_count(TestCase, values)
def clean(self, value): value = super(DurationField, self).clean(value) return timedelta2int(value)