Example #1
0
 def test_model_inheritance(self):
     django_databrowse.site.register(SomeInheritedModel)
     child = SomeInheritedModel.objects.create(some_field='hello',
                                               special='world')
     ei = EasyInstance(EasyModel(django_databrowse.site, SomeModel), child)
     ei_child = EasyInstance(
         EasyModel(django_databrowse.site, SomeInheritedModel), child)
     self.assertEqual(
         ei.related_objects().next()['object_list'][0].instance,
         ei_child.instance)
Example #2
0
    def test_urls(self):
        em = EasyModel(django_databrowse.site, SomeModel)
        em.site.root_url = "root/"
        field = EasyField(
            em,
            models.CharField(max_length=2,
                             choices=(("a", "azerty"), ("q", "querty")),
                             name="hello"))
        self.assertEqual(field.url(),
                         u'root/django_databrowse/somemodel/hello/')

        em = EasyModel(django_databrowse.site, SomeInheritedModel)
        field = EasyField(em, models.ForeignKey(SomeModel))
        self.assertEqual(field.url(),
                         u'root/django_databrowse/someinheritedmodel/')
Example #3
0
 def model_view(self, request, model_databrowse, url):
     # If the object ID wasn't provided, redirect to the model page,
     # Which is one level up.
     if url is None:
         return http.HttpResponseRedirect(
             urlparse.urljoin(request.path, '../')
         )
     easy_model = EasyModel(
         model_databrowse.site,
         model_databrowse.model
     )
     try:
         obj = easy_model.object_by_pk(url)
     except ObjectDoesNotExist:
         raise http.Http404('Id not found')
     except ValueError:
         raise http.Http404('Invalid format key provided')
     return render(
         request,
         'databrowse/object_detail.html',
         {
             'object': obj,
             'root_url': model_databrowse.site.root_url
         }
     )
Example #4
0
 def index(self, request):
     m_list = [EasyModel(self, m) for m in self.registry.keys()]
     return render(
         request,
         'databrowse/homepage.html',
         {'model_list': m_list, 'root_url': self.root_url}
     )
Example #5
0
    def main_view(self, request):
        easy_model = EasyModel(self.site, self.model)
        html_snippets = mark_safe(u'\n'.join([
            p.model_index_html(request, self.model, self.site)
            for p in self.plugins.values()
        ]))
        obj_list = easy_model.objects()
        numitems = request.GET.get('items')
        items_per_page = [25, 50, 100]
        if numitems and numitems.isdigit() and int(numitems) > 0:
            paginator = Paginator(obj_list, numitems)
        else:
            # fall back to default
            paginator = Paginator(obj_list, items_per_page[0])

        page = request.GET.get('page')
        try:
            obj_list_page = paginator.page(page)
        except PageNotAnInteger:
            # If page is not an integer, deliver first page.
            obj_list_page = paginator.page(1)
        except EmptyPage:
            # If page is out of range (e.g. 9999), deliver last page.
            obj_list_page = paginator.page(paginator.num_pages)
        return render_to_response(
            'databrowse/model_detail.html', {
                'model': easy_model,
                'root_url': self.site.root_url,
                'plugin_html': html_snippets,
                'object_list': obj_list_page,
                'items_per_page': items_per_page,
            })
Example #6
0
 def index(self, request):
     m_list = [EasyModel(self, m) for m in self.registry.keys()]
     return render_to_response(
         'databrowse/homepage.html',
         {'model_list': m_list, 'root_url': self.root_url},
         context_instance=RequestContext(request)
     )
Example #7
0
 def test_choices(self):
     em = EasyModel(django_databrowse.site, SomeModel)
     field = EasyField(
         em,
         models.CharField(max_length=2,
                          choices=(("a", "azerty"), ("q", "querty"))))
     self.assertEqual(len([f for f in field.choices()]), 2)
Example #8
0
    def test_repr(self):
        instance = SomeModel.objects.create()
        ei = EasyInstance(EasyModel(django_databrowse.site, SomeModel),
                          instance)
        self.assertEqual(ei.__repr__(), "<EasyInstance for SomeModel (1)>")

        self.assertEqual(str(ei), "SomeModel object (1)")
Example #9
0
 def homepage_view(self, request):
     easy_model = EasyModel(self.site, self.model)
     field_list = self.fields.values()
     field_list.sort(key=lambda k: k.verbose_name)
     return render_to_response(
         'fieldchoice_homepage.html', {
             'root_url': self.site.root_url,
             'model': easy_model,
             'field_list': field_list
         })
Example #10
0
 def homepage_view(self, request):
     easy_model = EasyModel(self.site, self.model)
     field_list = self.fields.values()
     field_list.sort(key=lambda k: k.verbose_name)
     return render(
         request, 'databrowse/calendar_homepage.html', {
             'root_url': self.site.root_url,
             'model': easy_model,
             'field_list': field_list
         })
Example #11
0
    def field_view(self, request, field, value=None):
        easy_model = EasyModel(self.site, self.model)
        easy_field = easy_model.field(field.name)
        if value is not None:
            obj_list = easy_model.objects(**{field.name: value})
        else:
            obj_list = \
                [v[field.name] for v in
                 self.model._default_manager.distinct().order_by(field.name).
                 values(field.name)]

        # add paging
        numitems = request.GET.get('items')
        items_per_page = [25, 50, 100]
        if numitems and numitems.isdigit() and int(numitems) > 0:
            paginator = Paginator(obj_list, numitems)
        else:
            # fall back to default
            paginator = Paginator(obj_list, items_per_page[0])

        page = request.GET.get('page')
        try:
            obj_list_page = paginator.page(page)
        except PageNotAnInteger:
            # If page is not an integer, deliver first page.
            obj_list_page = paginator.page(1)
        except EmptyPage:
            # If page is out of range (e.g. 9999), deliver last page.
            obj_list_page = paginator.page(paginator.num_pages)

        if value is not None:
            return render(
                request,
                'databrowse/fieldchoice_detail.html',
                {
                    'root_url': self.site.root_url,
                    'model': easy_model,
                    'field': easy_field,
                    'value': value,
                    'object_list': obj_list_page,
                    'items_per_page': items_per_page,
                }
            )

        return render(
            request,
            'databrowse/fieldchoice_list.html',
            {
                'root_url': self.site.root_url,
                'model': easy_model,
                'field': easy_field,
                'object_list': obj_list_page,
                'items_per_page': items_per_page,
            }
        )
Example #12
0
 def model_view(self, request, model_databrowse, url):
     # If the object ID wasn't provided, redirect to the model page,
     # Which is one level up.
     if url is None:
         return http.HttpResponseRedirect(
             urlparse.urljoin(request.path, '../'))
     easy_model = EasyModel(model_databrowse.site, model_databrowse.model)
     try:
         obj = easy_model.object_by_pk(url)
     except ObjectDoesNotExist, e:
         raise http.Http404('Id not found')
Example #13
0
 def homepage_view(self, request):
     easy_model = EasyModel(self.site, self.model)
     field_list = self.fields.values()
     field_list.sort(key=lambda k:k.verbose_name)
     return render_to_response(
         'databrowse/calendar_homepage.html',
         {
             'root_url': self.site.root_url,
             'model': easy_model,
             'field_list': field_list
         }, context_instance=RequestContext(request)
     )
Example #14
0
 def model_view(self, request, model_databrowse, url):
     # If the object ID wasn't provided, redirect to the model page,
     # Which is one level up.
     if url is None:
         return http.HttpResponseRedirect(
             urlparse.urljoin(request.path, '../'))
     easy_model = EasyModel(model_databrowse.site, model_databrowse.model)
     obj = easy_model.object_by_pk(url)
     return render_to_response('databrowse/object_detail.html', {
         'object': obj,
         'root_url': model_databrowse.site.root_url
     })
Example #15
0
    def calendar_view(self, request, field, year=None, month=None, day=None):
        easy_model = EasyModel(self.site, self.model)
        root_url = self.site.root_url

        if day is not None:
            return DayView.as_view(
                                year=year, month=month, day=day,
                                date_field=field.name,
                                queryset=easy_model.get_query_set(),
                                root_url=root_url,
                                model=easy_model,
                                field=field
                            )(request)
        elif month is not None:
            return MonthView.as_view(
                                year=year, month=month,
                                date_field=field.name,
                                queryset=easy_model.get_query_set(),
                                root_url=root_url,
                                model=easy_model,
                                field=field
                            )(request)
        elif year is not None:
            return YearView.as_view(
                                year=year,
                                date_field=field.name,
                                queryset=easy_model.get_query_set(),
                                root_url=root_url,
                                model=easy_model,
                                field=field
                            )(request)
        else:
            return IndexView.as_view(
                                date_field=field.name,
                                queryset=easy_model.get_query_set(),
                                root_url=root_url,
                                model=easy_model,
                                field=field
                            )(request)

        assert False, ('%s, %s, %s, %s' % (field, year, month, day))
Example #16
0
 def test_fields(self):
     em = EasyModel(django_databrowse.site, SomeModel)
     self.assertIsInstance(em.fields(), list)
Example #17
0
 def test_repr(self):
     em = EasyModel(django_databrowse.site, SomeModel)
     field = models.CharField(max_length=2, name="Hello")
     value, label = "a", "azerty"
     ec = EasyChoice(em, field, value, label)
     self.assertEqual(ec.__repr__(), "<EasyChoice for SomeModel.Hello>")
Example #18
0
 def test_repr(self):
     em = EasyModel(django_databrowse.site, SomeModel)
     self.assertEqual(em.__repr__(), "<EasyModel for SomeModel>")
Example #19
0
 def test_model_databrowse(self):
     em = EasyModel(django_databrowse.site, SomeModel)
     self.assertEqual(em.model_databrowse(), DefaultModelDatabrowse)
Example #20
0
 def test_model_inheritance_no_child(self):
     instance = SomeModel.objects.create(some_field='hello')
     ei = EasyInstance(EasyModel(django_databrowse.site, SomeModel),
                       instance)
     self.assertEqual(list(ei.related_objects()), [])
Example #21
0
 def test_url(self):
     em = EasyModel(django_databrowse.site, SomeModel)
     em.site.root_url = "root/"
     self.assertEqual(em.url(), u'root/django_databrowse/somemodel/')
Example #22
0
 def test_repr(self):
     em = EasyModel(django_databrowse.site, SomeModel)
     field = EasyField(em, models.CharField(max_length=50, name="hello"))
     self.assertEqual(field.__repr__(), '<EasyField for SomeModel.hello>')
Example #23
0
 def test_manager(self):
     em = EasyModel(django_databrowse.site, SomeModel)
     self.assertIsInstance(em.objects(), EasyQuerySet)
Example #24
0
 def test_field(self):
     em = EasyModel(django_databrowse.site, SomeModel)
     self.assertIsInstance(em.field("some_field"), EasyField)
     self.assertEqual(em.field("hello"), None)