]> git.ipfire.org Git - thirdparty/paperless-ngx.git/commitdiff
Use frontend settings instead of env variable
authorMichael Shamoon <4887959+shamoon@users.noreply.github.com>
Sun, 7 Aug 2022 22:05:58 +0000 (15:05 -0700)
committerMichael Shamoon <4887959+shamoon@users.noreply.github.com>
Wed, 24 Aug 2022 02:19:21 +0000 (19:19 -0700)
src-ui/src/app/components/document-detail/document-detail.component.html
src-ui/src/app/components/document-detail/document-detail.component.ts
src-ui/src/app/components/manage/settings/settings.component.html
src-ui/src/app/components/manage/settings/settings.component.ts
src-ui/src/app/data/paperless-environment.ts [deleted file]
src-ui/src/app/data/paperless-uisettings.ts
src-ui/src/app/services/rest/environment.service.spec.ts [deleted file]
src-ui/src/app/services/rest/environment.service.ts [deleted file]
src/documents/views.py
src/paperless/settings.py
src/paperless/urls.py

index ebf28689561ba85b5ffd428f16d19978f4b6867d..211f93d50a1a08b1bc5d6acb58f758ffef954741 100644 (file)
                         </div>
                     </ng-template>
                 </li>
-                <li [ngbNavItem]="5" *ngIf="isCommentsEnabled">
+                <li [ngbNavItem]="5" *ngIf="commentsEnabled">
                     <a ngbNavLink i18n>Comments</a>
                     <ng-template ngbNavContent>
                         <app-document-comment #commentComponent></app-document-comment>
index d0f4ecded0fdf0605d1bdb762a4fa473ebbb72d3..06fddd41be072a82142862413fe5214e03d1b582 100644 (file)
@@ -35,7 +35,6 @@ import { StoragePathService } from 'src/app/services/rest/storage-path.service'
 import { PaperlessStoragePath } from 'src/app/data/paperless-storage-path'
 import { StoragePathEditDialogComponent } from '../common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component'
 import { SETTINGS_KEYS } from 'src/app/data/paperless-uisettings'
-import { EnvironmentService } from 'src/app/services/rest/environment.service'
 
 @Component({
   selector: 'app-document-detail',
@@ -84,8 +83,6 @@ export class DocumentDetailComponent
   previewCurrentPage: number = 1
   previewNumPages: number = 1
 
-  isCommentsEnabled:boolean = false
-
   store: BehaviorSubject<any>
   isDirty$: Observable<boolean>
   unsubscribeNotifier: Subject<any> = new Subject()
@@ -121,8 +118,7 @@ export class DocumentDetailComponent
     private documentTitlePipe: DocumentTitlePipe,
     private toastService: ToastService,
     private settings: SettingsService,
-    private storagePathService: StoragePathService,
-    private environment: EnvironmentService
+    private storagePathService: StoragePathService
   ) {}
 
   titleKeyUp(event) {
@@ -278,12 +274,6 @@ export class DocumentDetailComponent
           this.suggestions = null
         },
       })
-    
-    this.environment.get("PAPERLESS_COMMENTS_ENABLED").subscribe(result => {
-      this.isCommentsEnabled = (result.value.toString().toLowerCase() === "true"?true:false);
-    }, error => {
-      this.isCommentsEnabled = false;
-    })
 
     this.title = this.documentTitlePipe.transform(doc.title)
     this.documentForm.patchValue(doc)
@@ -562,4 +552,8 @@ export class DocumentDetailComponent
       this.password = (event.target as HTMLInputElement).value
     }
   }
+
+  get commentsEnabled(): boolean {
+    return this.settings.get(SETTINGS_KEYS.COMMENTS_ENABLED)
+  }
 }
index 002cc4eede081908b052ddb0c0de2c4a9b1bc550..f72587139092562fe0528896d713f146fa888c4a 100644 (file)
           </div>
         </div>
 
+        <h4 class="mt-4" i18n>Comments</h4>
+
+        <div class="row mb-3">
+          <div class="offset-md-3 col">
+            <app-input-check i18n-title title="Enable comments" formControlName="commentsEnabled"></app-input-check>
+          </div>
+        </div>
+
       </ng-template>
     </li>
 
index 22ecfe9bb6db8f61c0aa7f7550ded616ddce434e..bb72446632afe0a4722ed8c3cd84649bd4cc9124 100644 (file)
@@ -44,6 +44,7 @@ export class SettingsComponent implements OnInit, OnDestroy, DirtyComponent {
     notificationsConsumerSuccess: new FormControl(null),
     notificationsConsumerFailed: new FormControl(null),
     notificationsConsumerSuppressOnDashboard: new FormControl(null),
+    commentsEnabled: new FormControl(null),
   })
 
   savedViews: PaperlessSavedView[]
@@ -116,6 +117,7 @@ export class SettingsComponent implements OnInit, OnDestroy, DirtyComponent {
         notificationsConsumerSuppressOnDashboard: this.settings.get(
           SETTINGS_KEYS.NOTIFICATIONS_CONSUMER_SUPPRESS_ON_DASHBOARD
         ),
+        commentsEnabled: this.settings.get(SETTINGS_KEYS.COMMENTS_ENABLED),
       }
 
       for (let view of this.savedViews) {
@@ -234,6 +236,10 @@ export class SettingsComponent implements OnInit, OnDestroy, DirtyComponent {
       SETTINGS_KEYS.NOTIFICATIONS_CONSUMER_SUPPRESS_ON_DASHBOARD,
       this.settingsForm.value.notificationsConsumerSuppressOnDashboard
     )
+    this.settings.set(
+      SETTINGS_KEYS.COMMENTS_ENABLED,
+      this.settingsForm.value.commentsEnabled
+    )
     this.settings.setLanguage(this.settingsForm.value.displayLanguage)
     this.settings
       .storeSettings()
diff --git a/src-ui/src/app/data/paperless-environment.ts b/src-ui/src/app/data/paperless-environment.ts
deleted file mode 100644 (file)
index 27dda64..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-export interface PaperlessEnvironment {
-    value?: string;
-}
\ No newline at end of file
index 75aec2a5124abcf6fe006b49adbf9a4067fc6cb8..e3d9776874b0b5faa18c5dabadfe58fef991e320 100644 (file)
@@ -36,6 +36,7 @@ export const SETTINGS_KEYS = {
     'general-settings:notifications:consumer-failed',
   NOTIFICATIONS_CONSUMER_SUPPRESS_ON_DASHBOARD:
     'general-settings:notifications:consumer-suppress-on-dashboard',
+  COMMENTS_ENABLED: 'general-settings:comments-enabled',
 }
 
 export const SETTINGS: PaperlessUiSetting[] = [
@@ -114,4 +115,9 @@ export const SETTINGS: PaperlessUiSetting[] = [
     type: 'boolean',
     default: true,
   },
+  {
+    key: SETTINGS_KEYS.COMMENTS_ENABLED,
+    type: 'boolean',
+    default: true,
+  },
 ]
diff --git a/src-ui/src/app/services/rest/environment.service.spec.ts b/src-ui/src/app/services/rest/environment.service.spec.ts
deleted file mode 100644 (file)
index 941a180..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-import { TestBed } from '@angular/core/testing';
-
-import { EnvironmentService } from './environment.service';
-
-describe('EnvironmentService', () => {
-  let service: EnvironmentService;
-
-  beforeEach(() => {
-    TestBed.configureTestingModule({});
-    service = TestBed.inject(EnvironmentService);
-  });
-
-  it('should be created', () => {
-    expect(service).toBeTruthy();
-  });
-});
\ No newline at end of file
diff --git a/src-ui/src/app/services/rest/environment.service.ts b/src-ui/src/app/services/rest/environment.service.ts
deleted file mode 100644 (file)
index 86ac146..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-import { HttpClient, HttpParams } from '@angular/common/http';
-import { Injectable } from '@angular/core';
-import { Observable } from 'rxjs';
-import { PaperlessEnvironment } from 'src/app/data/paperless-environment';
-import { environment } from 'src/environments/environment'
-
-@Injectable({
-  providedIn: 'root'
-})
-export class EnvironmentService {
-
-  protected baseUrl: string = environment.apiBaseUrl
-
-  constructor(protected http: HttpClient) { }
-
-  get(environment: string): Observable<PaperlessEnvironment> {
-    let httpParams = new HttpParams();
-    httpParams = httpParams.set('name', environment);
-
-    return this.http.get<PaperlessEnvironment>(`${this.baseUrl}environment/`, {params: httpParams})
-  }
-}
\ No newline at end of file
index 4633642e6829cda8c26997e09cba13fb70feba56..9713e5d954c5a445c32d6926c10dd87b2e6af056 100644 (file)
@@ -22,7 +22,6 @@ from django.http import Http404
 from django.http import HttpResponse
 from django.http import HttpResponseBadRequest
 from django.http import HttpResponseNotAllowed
-from django.http import HttpResponseNotFound
 from django.utils.decorators import method_decorator
 from django.utils.translation import get_language
 from django.views.decorators.cache import cache_control
@@ -385,21 +384,22 @@ class DocumentViewSet(
     def getComments(self, doc):
         return [
             {
-                "id":c.id, 
-                "comment":c.comment, 
-                "created":c.created, 
-                "user":
-                    "id":c.user.id, 
+                "id": c.id,
+                "comment": c.comment,
+                "created": c.created,
+                "user": {
+                    "id": c.user.id,
                     "username": c.user.username,
-                    "firstname":c.user.first_name, 
-                    "lastname":c.user.last_name
-                }
-            } for c in Comment.objects.filter(document=doc).order_by('-created')
-        ];
-
-    @action(methods=['get', 'post', 'delete'], detail=True)
+                    "firstname": c.user.first_name,
+                    "lastname": c.user.last_name,
+                },
+            }
+            for c in Comment.objects.filter(document=doc).order_by("-created")
+        ]
+
+    @action(methods=["get", "post", "delete"], detail=True)
     def comments(self, request, pk=None):
-        if settings.PAPERLESS_COMMENTS_ENABLED != True:
+        if settings.PAPERLESS_COMMENTS_ENABLED is not True:
             return HttpResponseNotAllowed("comment function is disabled")
 
         try:
@@ -407,35 +407,39 @@ class DocumentViewSet(
         except Document.DoesNotExist:
             raise Http404()
 
-        currentUser = request.user;
+        currentUser = request.user
 
-        if request.method == 'GET': 
+        if request.method == "GET":
             try:
-                return Response(self.getComments(doc));
+                return Response(self.getComments(doc))
             except Exception as e:
-                return Response({"error": str(e)});
-        elif request.method == 'POST':
+                return Response({"error": str(e)})
+        elif request.method == "POST":
             try:
                 c = Comment.objects.create(
-                    document = doc,
+                    document=doc,
                     comment=request.data["payload"],
-                    user=currentUser
-                );
-                c.save();
+                    user=currentUser,
+                )
+                c.save()
 
-                return Response(self.getComments(doc));
+                return Response(self.getComments(doc))
             except Exception as e:
-                return Response({
-                    "error": str(e)
-                });
-        elif request.method == 'DELETE':
-            comment = Comment.objects.get(id=int(request.GET.get("commentId")));
-            comment.delete();
-            return Response(self.getComments(doc));
+                return Response(
+                    {
+                        "error": str(e),
+                    },
+                )
+        elif request.method == "DELETE":
+            comment = Comment.objects.get(id=int(request.GET.get("commentId")))
+            comment.delete()
+            return Response(self.getComments(doc))
 
-        return Response({
-            "error": "error"
-        });
+        return Response(
+            {
+                "error": "error",
+            },
+        )
 
 
 class SearchResultSerializer(DocumentSerializer):
@@ -893,32 +897,3 @@ class AcknowledgeTasksView(GenericAPIView):
             return Response({"result": result})
         except Exception:
             return HttpResponseBadRequest()
-
-class EnvironmentView(APIView):
-
-    permission_classes = (IsAuthenticated,)
-
-    def get(self, request, format=None):
-        if 'name' in request.query_params:
-            name = request.query_params['name']
-        else:
-            return HttpResponseBadRequest("name required")
-
-        if(name not in settings.PAPERLESS_FRONTEND_ALLOWED_ENVIRONMENTS and settings.PAPERLESS_DISABLED_FRONTEND_ENVIRONMENT_CHECK == False):
-            return HttpResponseNotAllowed("environment not allowed to request")
-
-        value = None
-        try:
-            value = getattr(settings, name)
-        except:
-            try:
-                value = os.getenv(name)
-            except:
-                value = None
-
-        if value == None: 
-            return HttpResponseNotFound("environment not found")    
-
-        return Response({
-            "value": str(value)
-        }); 
index e42cf4359342d0b2f49a2ff16a3dcf6c96342fd2..bfa498359cec4ee2a9ab4cd577df7b5dafdcc654 100644 (file)
@@ -566,15 +566,6 @@ CONVERT_MEMORY_LIMIT = os.getenv("PAPERLESS_CONVERT_MEMORY_LIMIT")
 
 GS_BINARY = os.getenv("PAPERLESS_GS_BINARY", "gs")
 
-# Comment settings
-PAPERLESS_COMMENTS_ENABLED = __get_boolean("PAPERLESS_COMMENTS_ENABLED", "NO")
-
-# allowed environments for frontend
-PAPERLESS_DISABLED_FRONTEND_ENVIRONMENT_CHECK = __get_boolean("PAPERLESS_DISABLED_FRONTEND_ENVIRONMENT_CHECK", "NO")
-PAPERLESS_FRONTEND_ALLOWED_ENVIRONMENTS = [
-    "PAPERLESS_COMMENTS_ENABLED"
-]
-
 # Pre-2.x versions of Paperless stored your documents locally with GPG
 # encryption, but that is no longer the default.  This behaviour is still
 # available, but it must be explicitly enabled by setting
index 6ba1ee2634e6a8fd4d33fd46118e0ae95613b943..46309e1e65043dba40524953d47b5b7687eb8e43 100644 (file)
@@ -8,7 +8,6 @@ from django.utils.translation import gettext_lazy as _
 from django.views.decorators.csrf import csrf_exempt
 from django.views.generic import RedirectView
 from documents.views import AcknowledgeTasksView
-from documents.views import EnvironmentView
 from documents.views import BulkDownloadView
 from documents.views import BulkEditView
 from documents.views import CorrespondentViewSet
@@ -95,7 +94,6 @@ urlpatterns = [
                     AcknowledgeTasksView.as_view(),
                     name="acknowledge_tasks",
                 ),
-                re_path(r"^environment/", EnvironmentView.as_view()),
                 path("token/", views.obtain_auth_token),
             ]
             + api_router.urls,