Merge branch 'main' into list-not-loading
This commit is contained in:
@ -179,21 +179,14 @@ def delete_group(request, group_id):
|
||||
@login_required
|
||||
def invite_member(request):
|
||||
"""invite a member to the group"""
|
||||
|
||||
group = get_object_or_404(models.Group, id=request.POST.get("group"))
|
||||
if not group:
|
||||
return HttpResponseBadRequest()
|
||||
|
||||
user = get_user_from_username(request.user, request.POST["user"])
|
||||
if not user:
|
||||
return HttpResponseBadRequest()
|
||||
|
||||
if not group.user == request.user:
|
||||
return HttpResponseBadRequest()
|
||||
|
||||
try:
|
||||
models.GroupMemberInvitation.objects.create(user=user, group=group)
|
||||
|
||||
except IntegrityError:
|
||||
pass
|
||||
|
||||
@ -204,17 +197,11 @@ def invite_member(request):
|
||||
@login_required
|
||||
def remove_member(request):
|
||||
"""remove a member from the group"""
|
||||
|
||||
group = get_object_or_404(models.Group, id=request.POST.get("group"))
|
||||
if not group:
|
||||
return HttpResponseBadRequest()
|
||||
|
||||
user = get_user_from_username(request.user, request.POST["user"])
|
||||
if not user:
|
||||
return HttpResponseBadRequest()
|
||||
|
||||
# you can't be removed from your own group
|
||||
if request.POST["user"] == group.user:
|
||||
if user == group.user:
|
||||
return HttpResponseBadRequest()
|
||||
|
||||
is_member = models.GroupMember.objects.filter(group=group, user=user).exists()
|
||||
@ -234,11 +221,9 @@ def remove_member(request):
|
||||
pass
|
||||
|
||||
if is_member:
|
||||
|
||||
try:
|
||||
models.List.remove_from_group(group.user, user)
|
||||
models.GroupMember.remove(group.user, user)
|
||||
|
||||
except IntegrityError:
|
||||
pass
|
||||
|
||||
@ -271,18 +256,13 @@ def remove_member(request):
|
||||
@login_required
|
||||
def accept_membership(request):
|
||||
"""accept an invitation to join a group"""
|
||||
|
||||
group = models.Group.objects.get(id=request.POST["group"])
|
||||
if not group:
|
||||
return HttpResponseBadRequest()
|
||||
|
||||
invite = models.GroupMemberInvitation.objects.get(group=group, user=request.user)
|
||||
if not invite:
|
||||
return HttpResponseBadRequest()
|
||||
group = get_object_or_404(models.Group, id=request.POST.get("group"))
|
||||
invite = get_object_or_404(
|
||||
models.GroupMemberInvitation, group=group, user=request.user
|
||||
)
|
||||
|
||||
try:
|
||||
invite.accept()
|
||||
|
||||
except IntegrityError:
|
||||
pass
|
||||
|
||||
@ -293,19 +273,10 @@ def accept_membership(request):
|
||||
@login_required
|
||||
def reject_membership(request):
|
||||
"""reject an invitation to join a group"""
|
||||
group = get_object_or_404(models.Group, id=request.POST.get("group"))
|
||||
invite = get_object_or_404(
|
||||
models.GroupMemberInvitation, group=group, user=request.user
|
||||
)
|
||||
|
||||
group = models.Group.objects.get(id=request.POST["group"])
|
||||
if not group:
|
||||
return HttpResponseBadRequest()
|
||||
|
||||
invite = models.GroupMemberInvitation.objects.get(group=group, user=request.user)
|
||||
if not invite:
|
||||
return HttpResponseBadRequest()
|
||||
|
||||
try:
|
||||
invite.reject()
|
||||
|
||||
except IntegrityError:
|
||||
pass
|
||||
|
||||
invite.reject()
|
||||
return redirect(request.user.local_path)
|
||||
|
@ -37,33 +37,32 @@ class Import(View):
|
||||
def post(self, request):
|
||||
"""ingest a goodreads csv"""
|
||||
form = forms.ImportForm(request.POST, request.FILES)
|
||||
if form.is_valid():
|
||||
include_reviews = request.POST.get("include_reviews") == "on"
|
||||
privacy = request.POST.get("privacy")
|
||||
source = request.POST.get("source")
|
||||
if not form.is_valid():
|
||||
return HttpResponseBadRequest()
|
||||
|
||||
importer = None
|
||||
if source == "LibraryThing":
|
||||
importer = LibrarythingImporter()
|
||||
elif source == "Storygraph":
|
||||
importer = StorygraphImporter()
|
||||
else:
|
||||
# Default : Goodreads
|
||||
importer = GoodreadsImporter()
|
||||
include_reviews = request.POST.get("include_reviews") == "on"
|
||||
privacy = request.POST.get("privacy")
|
||||
source = request.POST.get("source")
|
||||
|
||||
try:
|
||||
job = importer.create_job(
|
||||
request.user,
|
||||
TextIOWrapper(
|
||||
request.FILES["csv_file"], encoding=importer.encoding
|
||||
),
|
||||
include_reviews,
|
||||
privacy,
|
||||
)
|
||||
except (UnicodeDecodeError, ValueError, KeyError):
|
||||
return HttpResponseBadRequest(_("Not a valid csv file"))
|
||||
importer = None
|
||||
if source == "LibraryThing":
|
||||
importer = LibrarythingImporter()
|
||||
elif source == "Storygraph":
|
||||
importer = StorygraphImporter()
|
||||
else:
|
||||
# Default : Goodreads
|
||||
importer = GoodreadsImporter()
|
||||
|
||||
importer.start_import(job)
|
||||
try:
|
||||
job = importer.create_job(
|
||||
request.user,
|
||||
TextIOWrapper(request.FILES["csv_file"], encoding=importer.encoding),
|
||||
include_reviews,
|
||||
privacy,
|
||||
)
|
||||
except (UnicodeDecodeError, ValueError, KeyError):
|
||||
return HttpResponseBadRequest(_("Not a valid csv file"))
|
||||
|
||||
return redirect(f"/import/{job.id}")
|
||||
return HttpResponseBadRequest()
|
||||
importer.start_import(job)
|
||||
|
||||
return redirect(f"/import/{job.id}")
|
||||
|
@ -34,11 +34,9 @@ class User(View):
|
||||
shelves = user.shelf_set
|
||||
is_self = request.user.id == user.id
|
||||
if not is_self:
|
||||
follower = user.followers.filter(id=request.user.id).exists()
|
||||
if follower:
|
||||
shelves = shelves.filter(privacy__in=["public", "followers"])
|
||||
else:
|
||||
shelves = shelves.filter(privacy="public")
|
||||
shelves = models.Shelf.privacy_filter(
|
||||
request.user, privacy_levels=["public", "followers"]
|
||||
).filter(user=user)
|
||||
|
||||
for user_shelf in shelves.all():
|
||||
if not user_shelf.books.count():
|
||||
@ -146,25 +144,6 @@ def annotate_if_follows(user, queryset):
|
||||
).order_by("-request_user_follows", "-created_date")
|
||||
|
||||
|
||||
class Groups(View):
|
||||
"""list of user's groups view"""
|
||||
|
||||
def get(self, request, username):
|
||||
"""list of groups"""
|
||||
user = get_user_from_username(request.user, username)
|
||||
|
||||
paginated = Paginator(
|
||||
models.Group.memberships.filter(user=user).order_by("-created_date"),
|
||||
PAGE_LENGTH,
|
||||
)
|
||||
data = {
|
||||
"user": user,
|
||||
"is_self": request.user.id == user.id,
|
||||
"group_list": paginated.get_page(request.GET.get("page")),
|
||||
}
|
||||
return TemplateResponse(request, "user/groups.html", data)
|
||||
|
||||
|
||||
@require_POST
|
||||
@login_required
|
||||
def hide_suggestions(request):
|
||||
|
Reference in New Issue
Block a user