示例#1
0
    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()
示例#2
0
    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
        )
示例#3
0
 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.")
示例#4
0
 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
示例#5
0
 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.")
示例#6
0
    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()
示例#7
0
    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()
示例#8
0
    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)
示例#9
0
    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()
示例#10
0
    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)
示例#11
0
    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)
示例#12
0
    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)
示例#13
0
    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)
示例#14
0
 def get_document(self):
     resource = DocumentResource()
     return resource.obj_get(request=self.request, pk=self.kwargs.get("slug"))
示例#15
0
def document_count_for_user(user):
    resource = DocumentResource()
    return resource.get_collection().find({"user_id": user.pk}).count()
示例#16
0
 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
     }
示例#17
0
 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
示例#18
0
 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.")
示例#19
0
def document_count_for_user(user):
    resource = DocumentResource()
    return resource.get_collection().find({
        "user_id": user.pk
    }).count()
示例#20
0
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()),
)