Example #1
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("object_detail.html", {"object": obj, "root_url": model_databrowse.site.root_url})
    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_to_response(
                '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_to_response(
            '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,
            }
        )
 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 #4
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))
    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 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 #7
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 #8
0
 def test_model_databrowse(self):
     em = EasyModel(django_databrowse.site, SomeModel)
     self.assertEqual(em.model_databrowse(), DefaultModelDatabrowse)
 def test_field(self):
     em = EasyModel(django_databrowse.site, SomeModel)
     self.assertIsInstance(em.field("some_field"), EasyField)
     self.assertEqual(em.field("hello"), None)
 def test_fields(self):
     em = EasyModel(django_databrowse.site, SomeModel)
     self.assertIsInstance(em.fields(), list)
 def test_url(self):
     em = EasyModel(django_databrowse.site, SomeModel)
     em.site.root_url = "root/"
     self.assertEqual(em.url(), u'root/django_databrowse/somemodel/')
 def test_manager(self):
     em = EasyModel(django_databrowse.site, SomeModel)
     self.assertIsInstance(em.objects(), EasyQuerySet)
 def test_repr(self):
     em = EasyModel(django_databrowse.site, SomeModel)
     self.assertEqual(em.__repr__(), "<EasyModel for SomeModel>")
Example #14
0
 def test_fields(self):
     em = EasyModel(django_databrowse.site, SomeModel)
     self.assertIsInstance(em.fields(), list)
Example #15
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)>")
Example #16
0
 def test_manager(self):
     em = EasyModel(django_databrowse.site, SomeModel)
     self.assertIsInstance(em.objects(), EasyQuerySet)
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)
     field = EasyField(em, models.CharField(max_length=50, name="hello"))
     self.assertEqual(field.__repr__(), '<EasyField for SomeModel.hello>')
Example #19
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 #20
0
 def test_repr(self):
     em = EasyModel(django_databrowse.site, SomeModel)
     self.assertEqual(em.__repr__(), "<EasyModel for SomeModel>")
 def test_model_databrowse(self):
     em = EasyModel(django_databrowse.site, SomeModel)
     self.assertEqual(em.model_databrowse(), DefaultModelDatabrowse)
Example #22
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
     })
Example #23
0
 def test_field(self):
     em = EasyModel(django_databrowse.site, SomeModel)
     self.assertIsInstance(em.field("some_field"), EasyField)
     self.assertEqual(em.field("hello"), None)