def results(cl,r): qe = hasattr(cl.model_admin, 'quick_editable') if cl.formset: if qe: for res, form in zip(cl.result_list, cl.formset.forms): yield { 'fields':list(items_for_result(cl, res, form)), 'quickedit':form } else: for res, form in zip(cl.result_list, cl.formset.forms): yield { 'fields': list(items_for_result(cl, res, form)), 'quickedit': None } else: if qe: for res in cl.result_list: yield { 'fields':list(items_for_result(cl, res, None)), 'quickedit':cl.model_admin.get_changelist_formset(r).form(instance=res) } else: for res in cl.result_list: yield { 'fields': list(items_for_result(cl, res, None)), 'quickedit': None }
def results(cl, website): if cl.formset: for res, form in zip(cl.result_list, cl.formset.forms): yield ResultList(form, chain(items_for_result(cl, res, form), custom_items_for_result(cl, res, website))) else: for res in cl.result_list: yield ResultList(None, chain(items_for_result(cl, res, None), custom_items_for_result(cl, res, website)))
def results(cl): if cl.formset: for res, form in zip(cl.result_list, cl.formset.forms): yield ResultList(form, items_for_result(cl, res, form)) else: for res in cl.result_list: yield (ResultList(None, items_for_result(cl, res, None)), res)
def results(cl, r): qe = hasattr(cl.model_admin, 'quick_editable') if cl.formset: if qe: for res, form in zip(cl.result_list, cl.formset.forms): yield { 'fields': list(items_for_result(cl, res, form)), 'quickedit': form } else: for res, form in zip(cl.result_list, cl.formset.forms): yield { 'fields': list(items_for_result(cl, res, form)), 'quickedit': None } else: if qe: for res in cl.result_list: yield { 'fields': list(items_for_result(cl, res, None)), 'quickedit': cl.model_admin.get_changelist_formset(r).form(instance=res) } else: for res in cl.result_list: yield { 'fields': list(items_for_result(cl, res, None)), 'quickedit': None }
def results(cl): objects = cl.model.objects.filter(pk__in=[o.pk for o in cl.result_list]).order_by('tree_id', 'lft') if cl.formset: pk_forms = dict([(form.instance.pk, form) for form in cl.formset.forms]) forms = [pk_forms[obj.pk] for obj in objects] for res, form in zip(objects, forms): yield {'object': res, 'items': list(items_for_result(cl, res, form))} else: for res in objects: yield {'object': res, 'items': list(items_for_result(cl, res, None))}
def results(cl): """ Just like the one from Django. Only we add a serializable_value method to the document, because Django expects it and mongoengine doesn't have it. """ if cl.formset: for res, form in zip(cl.result_list, cl.formset.forms): patch_document(serializable_value, res) yield ResultList(form, items_for_result(cl, res, form)) else: for res in cl.result_list: patch_document(serializable_value, res) yield ResultList(None, items_for_result(cl, res, None))
def test_changelist_display(self): "Check display fields have registered ok and return valid values" t1 = self.model.objects.create(name='Test 1', singletag='Mr', tags='red, blue') self.assertSequenceEqual( self.ma.get_list_display(request), ['name', 'singletag', '_tagulous_display_tags'], ) results = self.get_changelist_results() self.assertEqual(len(results), 1) r1 = results[0] self.assertEqual(t1.pk, r1.pk) # Find what it's showing from django.contrib.admin.templatetags.admin_list import items_for_result row = [ list(items_for_result(self.cl, result, None)) for result in results ][0] # Before comparing, strip class attrs row = [re.sub(r' class=".+?"', '', r) for r in row] self.assertSequenceEqual(row, [ '<td>Test 1</td>', '<td>Mr</td>', '<td>blue, red</td>', ])
def settings_list(cl): """ Displays the headers and data list together """ from django_settings.models import SettingSet headers = list(result_headers(cl)) num_sorted_fields = 0 for h in headers: if h['sortable'] and h['sorted']: num_sorted_fields += 1 # fake set for settings without setting set fake_setting_set_name = 'Unallocated' if hasattr(settings, 'DJANGO_SETTINGS_UNALLOCATED_SET'): fake_setting_set_name = settings.DJANGO_SETTINGS_UNALLOCATED_SET fake_setting_set = SettingSet(pk=0, title=fake_setting_set_name) setting_sets = {} for setting in cl.result_list: setting_set = setting.setting_set or fake_setting_set setting_sets.setdefault(setting_set, []) \ .append(ResultList(None, items_for_result(cl, setting, None))) return { 'cl': cl, 'result_hidden_fields': list(result_hidden_fields(cl)), 'result_headers': headers, 'num_sorted_fields': num_sorted_fields, 'results': setting_sets }
def results(cl): for res in cl.result_list: if res.id in cl.related_objects: res.already_related = True else: res.already_related = False yield (res, list(items_for_result(cl, res, None)))
def settings_list(cl): """ Displays the headers and data list together """ from django_settings.models import SettingSet headers = list(result_headers(cl)) num_sorted_fields = 0 for h in headers: if h['sortable'] and h['sorted']: num_sorted_fields += 1 # fake set for settings without setting set fake_setting_set_name = 'Unallocated' if hasattr(settings, 'DJANGO_SETTINGS_UNALLOCATED_SET'): fake_setting_set_name = settings.DJANGO_SETTINGS_UNALLOCATED_SET fake_setting_set = SettingSet(pk=0, title=fake_setting_set_name) setting_sets = {} for setting in cl.result_list: setting_set = setting.setting_set or fake_setting_set setting_sets.setdefault(setting_set, []) \ .append(ResultList(None, items_for_result(cl, setting, None))) return {'cl': cl, 'result_hidden_fields': list(result_hidden_fields(cl)), 'result_headers': headers, 'num_sorted_fields': num_sorted_fields, 'results': setting_sets}
def test_changelist_display(self): "Check display fields have registered ok and return valid values" t1 = self.model.objects.create(name='Test 1', singletag='Mr', tags='red, blue') self.assertSequenceEqual( self.ma.get_list_display(self.mock_request()), ['name', 'singletag', '_tagulous_display_tags'], ) results = self.get_changelist_results() self.assertEqual(len(results), 1) r1 = results[0] self.assertEqual(t1.pk, r1.pk) # Find what it's showing from django.contrib.admin.templatetags.admin_list import items_for_result row = [ list(items_for_result(self.cl, result, None)) for result in results ][0] # Before comparing, strip class attrs row = [ re.sub(r' class=".+?"', '', r) for r in row ] self.assertSequenceEqual(row, [ '<td>Test 1</td>', '<td>Mr</td>', '<td>blue, red</td>', ])
def better_results(cl): for res in cl.result_list: cells = list(items_for_result(cl, res, None)) yield dict( cells=cells, instance=res, num_real_cells=len(cells) - 1, )
def results(cl): """ Omits any admin """ if cl.formset: for res, form in zip(cl.result_list, cl.formset.forms): if res.membertype != 'AD': yield admin.ResultList(form, admin.items_for_result(cl, res, form)) else: for res in cl.result_list: if res.membertype != 'AD': yield admin.ResultList(None, admin.items_for_result(cl, res, None))
def _properties(cl, result): first = True for item in admin_list.items_for_result(cl, result, None): if first: # The first column is handled specially. Throw the standard # value away and continue. first = False continue yield item
def results(cl): if hasattr(cl.model_admin, "quick_editable"): qe_form = True else: qe_form = False if cl.formset: if qe_form: for res, form in zip(cl.result_list, cl.formset.forms): yield {"fields": list(items_for_result(cl, res, form)), "quickedit": form} else: for res, form in zip(cl.result_list, cl.formset.forms): yield list(items_for_result(cl, res, form)) else: if qe_form: for res in cl.result_list: yield {"fields": list(items_for_result(cl, res, None))} else: for res in cl.result_list: yield list(items_for_result(cl, res, None))
def results_hubuser(cl): #for res in cl.result_list: #yield dict(pk=getattr(res, cl.pk_attname), field_list=list(items_for_result(cl,res))) # yield dict(field_list=list(items_for_result(cl, res, None))) #for res, form in zip(cl.result_list, cl.formset.forms): # yield ResultList(form, items_for_result(cl, res, form)) # for res, form in zip(cl.result_list, cl.formset.forms): # yield ResultList(form, items_for_result(cl, res, form)) # else: for res in cl.result_list: yield ResultList(None, items_for_result(cl, res, None))
def results(cl): if hasattr(cl.model_admin, 'quick_editable'): qe_form = True else: qe_form = False if cl.formset: if qe_form: for res, form in zip(cl.result_list, cl.formset.forms): yield {'fields':list(items_for_result(cl, res, form)), 'quickedit':form} #'quickedit':form(instance=res)} else: for res, form in zip(cl.result_list, cl.formset.forms): yield list(items_for_result(cl, res, form)) else: if qe_form: for res in cl.result_list: yield {'fields':list(items_for_result(cl, res, None)), 'quickedit':form} #'quickedit':form(instance=res)} else: for res in cl.result_list: yield list(items_for_result(cl, res, None))
def live_changelist_update(self, request): """ View that is going to be polled by JavaScript. Expects a pk_list POST parameter containing a JSON with a list of primary keys of the objects that are displayed on the change list. Returns a JSON response with a dict (object) of the primary keys with lists of HTML table cells with current data. """ pk_list_json = request.POST.get('pk_list', None) if not pk_list_json: return HttpResponseBadRequest('Missing pk_list.') pk_list = json.loads(pk_list_json, encoding='utf-8') qs = self.queryset(request).filter(pk__in=pk_list) qs = self.live_changelist_filter(request, qs) # A bit of copy-pasta from changelist_view to obtain a ChangeList # instance, but what can you do, eh? list_display = self.get_list_display(request) list_display_links = self.get_list_display_links(request, list_display) # Check actions to see if any are available on this changelist actions = self.get_actions(request) if actions: # Add the action checkboxes if there are any actions available. list_display = ['action_checkbox'] + list(list_display) ChangeList = self.get_changelist(request) cl = ChangeList(request, self.model, list_display, list_display_links, self.list_filter, self.date_hierarchy, self.search_fields, self.list_select_related, self.list_per_page, self.list_max_show_all, self.list_editable, self) data = dict( (obj.pk, tuple(items_for_result(cl, obj, None))) for obj in qs) data['__interval__'] = self.live_changelist_update_interval(request) return HttpResponse(json.dumps(data, ensure_ascii=False), content_type='application/json')
def project_result_list(cl): headers = list(result_headers(cl)) headers.append({'text': mark_safe(' ')}) results = list() for project in cl.result_list: rl = list(items_for_result(cl,project,None)) url = reverse('admin_project_sendcredentials', args=[project.projectname]) content = mark_safe('<td><a href="%s">Send Credentials</a></td>' % url) rl.append(content) results.append(rl) return { 'cl': cl, 'result_headers': headers, 'results': results }
def results_multidelete(cl): for res in cl.result_list: yield dict(pk=getattr(res, cl.pk_attname), field_list=list(items_for_result(cl,res)))
def results_multidelete(cl): for res in cl.result_list: yield dict(pk=getattr(res, cl.pk_attname), field_list=list(items_for_result(cl, res)))
def th_for_result(cl, res): for item in items_for_result(cl, res, None): match = TH_REGEX.match(item) if match: return match.group(2)
def results(cl, additional_links): for item in cl.result_list: result_list = list(items_for_result(cl,item,None)) for link in additional_links: result_list.append(link['url_template'] % item.id) yield "".join(result_list)