def delete(self, *args, **kwargs): if not self.is_authorized(): return self.redirect() resource = DocumentResource() resource.obj_delete(pk=self.kwargs.get("slug")) return HttpNoContent()
def get_context_data(self, **kwargs): """ Adds extra context to template """ resource = DocumentResource() user = self.get_object() if self.request.user.is_anonymous(): is_followed = False can_follow = False else: is_followed = self.request.user.following.filter( following_id=user.pk).exists() can_follow = self.request.user != user documents = resource.get_collection().find({ 'user_id': user.pk, '$or': [ {'is_public': True}, {'user_id': self.request.user.id} ]}) return super(ProfileDetailView, self).get_context_data( documents=imap(Document, documents), is_followed=is_followed, can_follow=can_follow )
def get_document(self): resource = DocumentResource() try: return resource.obj_get(request=self.request, pk=self.kwargs.get("slug")) except (InvalidId, ImmediateHttpResponse): raise Http404("Document is not found.")
def get_context_data(self, **kwargs): context = super(ProfileDetailView, self).get_context_data(**kwargs) resource = DocumentResource() collection = resource.get_collection().find( {"user_id": self.get_object().pk}) context["documents"] = map(Document, collection) return context
def get_document(self): resource = DocumentResource() try: return resource.obj_get(request=self.request, pk=self.kwargs.get("slug")) except (TypeError, InvalidId): raise Http404("Document is not found.")
def delete(self, *args, **kwargs): if not self.is_authorized(): return self.redirect() document = self.get_document() if document.fork_of is not None: signal = fork_delete else: signal = document_delete signal.send(sender=self, instance=self.get_document()) resource = DocumentResource() resource.obj_delete(pk=self.kwargs.get("slug")) return HttpNoContent()
def form_valid(self, form, **kwargs): resource = DocumentResource() document = self.get_document() self.object_id = get_collection("documents").insert({ "title": form.cleaned_data.get("title"), "user_id": self.request.user.pk, "entities": document.entities, "fork_of": document.pk, "date_created": datetime.now() }) # TODO: use atomic operations for incrementing! resource.obj_update(bundle=resource.build_bundle(data={ "fork_count": (document.fork_count or 0) + 1 }), pk=document.pk) return super(NewDocumentView, self).form_valid(form)
def post(self, request, *args, **kwargs): document = self.get_document() stars = document.get_stars() if request.user.pk in stars: stars.remove(request.user.pk) else: stars.append(request.user.pk) resource = DocumentResource() resource.obj_update(bundle=resource.build_bundle(data={ "stars": stars, "star_count": len(stars) }), pk=document.pk) return super(StarDocumentView, self).post(request, *args, **kwargs)
def post(self, request, *args, **kwargs): document = self.get_document() stars = document.get_stars() if request.user.pk in stars: stars.remove(request.user.pk) else: stars.append(request.user.pk) resource = DocumentResource() resource.obj_update( bundle=resource.build_bundle(data={ "stars": stars, "star_count": len(stars) }), pk=document.pk) return super(StarDocumentView, self).post(request, *args, **kwargs)
def form_valid(self, form, **kwargs): resource = DocumentResource() document = self.get_document() self.object_id = Document.objects.collection.insert({ "title": form.cleaned_data.get("title"), "user_id": self.request.user.pk, "entities": document.entities, "fork_of": document.pk, "date_created": datetime.now(), "is_public": document.is_public, "_keywords": extract_keywords(form.cleaned_data.get("title")) }) # TODO: use atomic operations for incrementing! resource.obj_update(bundle=resource.build_bundle(data={ "fork_count": (document.fork_count or 0) + 1 }), pk=document.pk) fork_done.send(sender=self, instance=Document.objects.get(_id=ObjectId(self.object_id))) return super(NewDocumentView, self).form_valid(form)
def form_valid(self, form, **kwargs): resource = DocumentResource() document = self.get_document() self.object_id = get_collection("documents").insert({ "title": form.cleaned_data.get("title"), "user_id": self.request.user.pk, "entities": document.entities, "fork_of": document.pk, "date_created": datetime.now(), "_keywords": extract_keywords(form.cleaned_data.get("title")) }) # TODO: use atomic operations for incrementing! resource.obj_update(bundle=resource.build_bundle( data={"fork_count": (document.fork_count or 0) + 1}), pk=document.pk) return super(NewDocumentView, self).form_valid(form)
def get_document(self): resource = DocumentResource() return resource.obj_get(request=self.request, pk=self.kwargs.get("slug"))
def document_count_for_user(user): resource = DocumentResource() return resource.get_collection().find({"user_id": user.pk}).count()
def get_context_data(self, **kwargs): resource = DocumentResource() most_rated_documents = resource.obj_sort([("star_count", -1)], limit=9) return { "most_rated_documents": most_rated_documents }
def get_context_data(self, **kwargs): context = super(ProfileDetailView, self).get_context_data(**kwargs) resource = DocumentResource() collection = resource.get_collection().find({"user_id": self.get_object().pk}) context["documents"] = map(Document, collection) return context
def document_count_for_user(user): resource = DocumentResource() return resource.get_collection().find({ "user_id": user.pk }).count()
from django.conf.urls import patterns, url, include from documents.resources import DocumentResource from comments.resources import CommentResource from profiles.resources import UserResource urlpatterns = patterns( '', url(r'^', include(DocumentResource().urls)), url(r'^', include(CommentResource().urls)), # django views url(r'^users/$', UserResource.as_view()), )