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)
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)
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)
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)
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)
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)
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)
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)
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)