示例#1
0
class AuditDocView(ListView):

    model = AuditLog
    template_name = "app/document/document_audit.xhtml"

    def get_context_data(self, **kwargs):
        context = super(AuditDocView, self).get_context_data(**kwargs)
        context.update(
            {'doc': get_object_or_404(Document, id=self.kwargs['document'])})
        return context

    def get_queryset(self):
        content_type = ContentType.objects.get(app_label="document",
                                               model="document")
        self.queryset = AuditLog.objects.filter(
            content_type=content_type,
            object_id=self.kwargs['document']).order_by('-logged')
        return super(AuditDocView, self).get_queryset()

    @method_decorator(
        document_permission_or_403(
            ('read_document', 'change_document', 'delete_document'),
            'document'))
    def dispatch(self, *args, **kwargs):
        return super(AuditDocView, self).dispatch(*args, **kwargs)
示例#2
0
class ClassifyDocView(FormView):

    template_name = "app/document/document_classify_form.xhtml"
    form_class = DocumentClassifyForm
    success_url = "/document/%s/preview"

    def get_initial(self):
        initial = super(ClassifyDocView, self).get_initial()
        if 'category' in self.kwargs:
            initial.update({
                DocumentClassifyMetaclass.CATEGORY_FIELD_NAME:
                self.kwargs['category']
            })
        if 'document' in self.kwargs:
            initial.update({
                DocumentClassifyMetaclass.DOCUMENT_FIELD_NAME:
                self.kwargs['document']
            })
            doc = get_object_or_404(Document, id=self.kwargs['document'])
            if doc.category:
                initial.update({
                    DocumentClassifyMetaclass.CATEGORY_FIELD_NAME:
                    doc.category.id
                })
                for doc_attr in DocumentAttribute.objects.filter(document=doc):
                    #TODO: Refactor - Centralizar a regra de nome do componente no MetaClass
                    field_name = DocumentClassifyMetaclass.field_name(
                        doc_attr.attribute)
                    field_value = InheritanceQuerySet(
                        model=AbstractValue).select_subclasses().get(
                            id=doc_attr.value.id)
                    initial.update({field_name: field_value.value})
        return initial

    def get_context_data(self, **kwargs):
        context = super(ClassifyDocView, self).get_context_data(**kwargs)
        context.update({'params': self.kwargs})
        if 'document' in self.kwargs:
            doc = get_object_or_404(Document, id=self.kwargs['document'])
            context.update({'show_tags': True if doc.category else False})
            context.update({'new_attributes': doc.all_new_attributes()})
            context.update({'doc': doc})
        return context

    def form_valid(self, form):
        document = form.save(self.request)
        self.success_url = self.get_success_url() % document.id
        signals.post_classify_document.send(sender=self.__class__,
                                            document=document,
                                            user=self.request.user)
        return super(ClassifyDocView, self).form_valid(form)

    @method_decorator(
        document_permission_or_403(('change_document', ), 'document'))
    def dispatch(self, *args, **kwargs):
        return super(ClassifyDocView, self).dispatch(*args, **kwargs)
示例#3
0
class DocPublicPermissionsView(JSONResponseMixin, View):
    def get(self, request, document):
        doc = Document.objects.get(id=document)
        pp_list = DocumentPublicPermission.objects.filter(document=doc)
        return self.render_to_response(
            {"permission": [(pp.permission.codename) for pp in pp_list]})

    @method_decorator(
        document_permission_or_403(('read_document', ), 'document'))
    def dispatch(self, *args, **kwargs):
        return super(DocPublicPermissionsView, self).dispatch(*args, **kwargs)
示例#4
0
class PermissionDocView(TemplateView):

    template_name = "app/document/document_permission.xhtml"

    def get_context_data(self, **kwargs):
        context = super(PermissionDocView, self).get_context_data(**kwargs)
        context.update({'users': User.objects.all()})
        context.update({'groups': Group.objects.all()})
        #context.update({'document':get_object_or_404(Document,id=self.kwargs['document'])})
        context.update(
            {'doc': get_object_or_404(Document, id=self.kwargs['document'])})
        return context

    @method_decorator(
        document_permission_or_403(('change_document', ), 'document'))
    def dispatch(self, *args, **kwargs):
        return super(PermissionDocView, self).dispatch(*args, **kwargs)
示例#5
0
class DocPublicPermissionView(JSONResponseMixin, View):
    def post(self, request, document, permission):
        doc = Document.objects.get(id=document)
        p = Permission.objects.filter(codename=permission)

        pp = DocumentPublicPermission(document=doc, permission=p[0])
        pp.save()

        doc.last_update_user = request.user
        doc.save()

        signals.post_document_shared_to_all.send(sender=self.__class__,
                                                 shared_from=self.request.user,
                                                 document=doc,
                                                 permission=permission)

        return self.render_to_response(None)

    def delete(self, request, document, permission):
        doc = Document.objects.get(id=document)
        p = Permission.objects.filter(codename=permission)

        pp = DocumentPublicPermission.objects.filter(document=doc,
                                                     permission=p[0])
        pp.delete()

        doc.last_update_user = request.user
        doc.save()

        signals.post_document_unshared_to_all.send(
            sender=self.__class__,
            shared_from=self.request.user,
            document=doc,
            permission=permission)

        return self.render_to_response(None)

    @method_decorator(
        document_permission_or_403(('change_document', ), 'document'))
    def dispatch(self, *args, **kwargs):
        return super(DocPublicPermissionView, self).dispatch(*args, **kwargs)
示例#6
0
class DocGroupPermissionView(JSONResponseMixin, View):
    def post(self, request, document, permission, group):
        grp = Group.objects.get(id=group)
        doc = Document.objects.get(id=document)

        assign(permission, grp, doc)

        doc.last_update_user = request.user
        doc.save()

        signals.post_document_shared_to_group.send(
            sender=self.__class__,
            shared_from=self.request.user,
            shared_to=grp,
            document=doc,
            permission=permission)

        return self.render_to_response(get_perms(grp, doc))

    def delete(self, request, document, permission, group):
        grp = Group.objects.get(id=group)
        doc = Document.objects.get(id=document)

        remove_perm(permission, grp, doc)

        doc.last_update_user = request.user
        doc.save()

        signals.post_document_unshared_to_group.send(
            sender=self.__class__,
            shared_from=self.request.user,
            shared_to=grp,
            document=doc,
            permission=permission)

        return self.render_to_response(get_perms(grp, doc))

    @method_decorator(
        document_permission_or_403(('change_document', ), 'document'))
    def dispatch(self, *args, **kwargs):
        return super(DocGroupPermissionView, self).dispatch(*args, **kwargs)
示例#7
0
class DocUserPermissionsView(JSONResponseMixin, View):
    def get(self, request, document):
        doc = Document.objects.get(id=document)
        user_perms = get_users_with_perms(doc,
                                          attach_perms=True,
                                          with_group_users=False)
        return self.render_to_response(self.__parseUserPermissions(user_perms))

    def __parseUserPermissions(self, user_permissions):
        return [
            dict([('user_id', perms.id), ('username', perms.username),
                  ('permission', user_permissions[perms])])
            for perms in user_permissions
        ]

    @method_decorator(
        document_permission_or_403(
            ('read_document', 'change_document', 'delete_document'),
            'document'))
    def dispatch(self, *args, **kwargs):
        return super(DocUserPermissionsView, self).dispatch(*args, **kwargs)
示例#8
0
class DocGroupPermissionsView(JSONResponseMixin, View):
    def get(self, request, document):
        doc = Document.objects.get(id=document)
        group_perm = get_groups_with_perms(doc, attach_perms=True)
        return self.render_to_response(
            self.__parseGroupPermissions(group_perm))

    def __parseGroupPermissions(self, group_permissions):
        permissions = []
        for perms in group_permissions:
            permission = []
            permission.append(('group_id', perms.id))
            permission.append(('group_name', perms.name))
            permission.append(('permission', group_permissions[perms]))
            permissions.append(dict(permission))
        return permissions

    @method_decorator(
        document_permission_or_403(
            ('read_document', 'change_document', 'delete_document'),
            'document'))
    def dispatch(self, *args, **kwargs):
        return super(DocGroupPermissionsView, self).dispatch(*args, **kwargs)
示例#9
0
class PreviewDocView(TemplateView):
    template_name = "app/document/document_preview.xhtml"

    def get_context_data(self, **kwargs):
        doc = get_object_or_404(Document, id=self.kwargs['document'])
        doc_attributes = doc.all_attributes()
        doc_attach = DocumentAttach.objects.filter(document=doc)
        doc_tags = doc.all_tags()
        #set context
        context = super(PreviewDocView, self).get_context_data(**kwargs)
        context.update({'doc': doc})
        context.update({'category': doc.category})
        context.update({'attribute_list': doc_attributes})
        context.update({'attachment_list': doc_attach})
        context.update({'tag_list': doc_tags})
        return context

    @method_decorator(
        document_permission_or_403(
            ('read_document', 'change_document', 'delete_document'),
            'document'))
    def dispatch(self, *args, **kwargs):
        return super(PreviewDocView, self).dispatch(*args, **kwargs)