Exemplo n.º 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()
Exemplo n.º 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
        )
Exemplo n.º 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.")
Exemplo n.º 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
Exemplo n.º 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.")
Exemplo n.º 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()
Exemplo n.º 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()
Exemplo n.º 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)
Exemplo n.º 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()
Exemplo n.º 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)
Exemplo n.º 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)
Exemplo n.º 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)
Exemplo n.º 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)
Exemplo n.º 14
0
 def get_document(self):
     resource = DocumentResource()
     return resource.obj_get(request=self.request, pk=self.kwargs.get("slug"))
Exemplo n.º 15
0
def document_count_for_user(user):
    resource = DocumentResource()
    return resource.get_collection().find({"user_id": user.pk}).count()
Exemplo n.º 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
     }
Exemplo n.º 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
Exemplo n.º 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.")
Exemplo n.º 19
0
def document_count_for_user(user):
    resource = DocumentResource()
    return resource.get_collection().find({
        "user_id": user.pk
    }).count()
Exemplo n.º 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()),
)