From 2162e036ccff68175bab4092fba158785fec95fc Mon Sep 17 00:00:00 2001 From: Muhammad Rashid Tufail Date: Thu, 12 Nov 2020 20:47:10 +0500 Subject: [PATCH] Browse bookmarks by users --- ubookmark/settings.py | 11 +++---- .../ubookmark/bookmarkmodel_list.html | 3 +- ubookmark/urls.py | 1 + ubookmark/views.py | 31 +++++++++++++------ 4 files changed, 29 insertions(+), 17 deletions(-) diff --git a/ubookmark/settings.py b/ubookmark/settings.py index 3866cfc..3c5f9f4 100644 --- a/ubookmark/settings.py +++ b/ubookmark/settings.py @@ -103,6 +103,11 @@ except (ModuleNotFoundError, ImportError): AUTH_LDAP_BIND_PASSWORD = "" AUTH_LDAP_USER_SEARCH = "" + AUTHENTICATION_BACKENDS = [ + "django_auth_ldap.backend.LDAPBackend", + "django.contrib.auth.backends.ModelBackend" + ] + SITE_NAME = "an unconfigured site" @@ -145,12 +150,6 @@ USE_TZ = True STATIC_URL = '/static/' STATICFILES_DIRS = [ os.path.join(BASE_DIR, "static") ] - -AUTHENTICATION_BACKENDS = [ - "django_auth_ldap.backend.LDAPBackend", - "django.contrib.auth.backends.ModelBackend" -] - AUTH_USER_MODEL = 'ubookmark.User' CRISPY_TEMPLATE_PACK = 'bootstrap4' diff --git a/ubookmark/templates/ubookmark/bookmarkmodel_list.html b/ubookmark/templates/ubookmark/bookmarkmodel_list.html index cb02865..1b40fee 100644 --- a/ubookmark/templates/ubookmark/bookmarkmodel_list.html +++ b/ubookmark/templates/ubookmark/bookmarkmodel_list.html @@ -19,7 +19,8 @@ {{ bookmark.comment }} ({{ bookmark.url }})
- (posted by {{ bookmark.owner }} on {{ bookmark.posted_at }}) + (posted by {{ bookmark.owner }} + on {{ bookmark.posted_at }})
{% endfor %} diff --git a/ubookmark/urls.py b/ubookmark/urls.py index a79f0e4..d8c0707 100644 --- a/ubookmark/urls.py +++ b/ubookmark/urls.py @@ -23,5 +23,6 @@ urlpatterns = [ path('submit/', views.SubmitView.as_view(), name='submit'), path('login/', views.LoginView.as_view(), name='login'), path('logout/', views.logout_view, name='logout'), + path('users//', views.UserBookmarksListView.as_view(), name='list_user_bookmark'), path('admin/', admin.site.urls), ] diff --git a/ubookmark/views.py b/ubookmark/views.py index 3737f3c..0038812 100644 --- a/ubookmark/views.py +++ b/ubookmark/views.py @@ -1,12 +1,11 @@ -from django.views.generic.list import ListView -from django.views.generic.edit import CreateView +from django.conf import settings +from django.contrib.auth import logout from django.contrib.auth import views as auth_views from django.contrib.auth.mixins import LoginRequiredMixin - -from django.contrib.auth import logout -from django.shortcuts import redirect - -from django.conf import settings +from django.shortcuts import get_object_or_404, redirect, render +from django.views import View +from django.views.generic.edit import CreateView +from django.views.generic.list import ListView from ubookmark.models import * @@ -14,12 +13,11 @@ class IndexView(ListView): model = BookmarkModel paginate_by = 5 queryset = BookmarkModel.objects.order_by('-posted_at') - + def get_context_data(self, **kwargs): context = super(IndexView, self).get_context_data(**kwargs) context['site_name'] = settings.SITE_NAME context['site_description'] = settings.SITE_DESCRIPTION - context['site_description'] = settings.SITE_DESCRIPTION return context @@ -28,7 +26,7 @@ class SubmitView(LoginRequiredMixin, CreateView): fields = [ 'comment', 'url' ] login_url = '/login/' success_url = '/' - + def get_context_data(self, **kwargs): context = super(CreateView, self).get_context_data(**kwargs) context['site_name'] = settings.SITE_NAME @@ -47,7 +45,20 @@ class LoginView(auth_views.LoginView): extra_context['site_name'] = settings.SITE_NAME extra_context['site_description'] = settings.SITE_DESCRIPTION +class UserBookmarksListView(ListView): + model = BookmarkModel + paginate_by = 5 + def get_queryset(self): + user_id = get_object_or_404(User, username = self.kwargs["username"]).id + return BookmarkModel.objects.filter(owner=user_id) + + def get_context_data(self, **kwargs): + context = super(UserBookmarksListView, self).get_context_data(**kwargs) + context['site_name'] = settings.SITE_NAME + context['site_description'] = settings.SITE_DESCRIPTION + return context + def logout_view(request): logout(request) return redirect("/")