]> git.ipfire.org Git - thirdparty/paperless-ngx.git/commitdiff
Merge branch 'dev' into feature-permissions
authorMichael Shamoon <4887959+shamoon@users.noreply.github.com>
Sun, 18 Dec 2022 04:05:12 +0000 (20:05 -0800)
committerMichael Shamoon <4887959+shamoon@users.noreply.github.com>
Sun, 18 Dec 2022 04:05:12 +0000 (20:05 -0800)
13 files changed:
1  2 
src-ui/src/app/app.module.ts
src-ui/src/app/components/common/edit-dialog/edit-dialog.component.ts
src-ui/src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.html
src-ui/src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts
src-ui/src/app/components/dashboard/widgets/upload-file-widget/upload-file-widget.component.ts
src-ui/src/app/components/document-detail/document-detail.component.html
src-ui/src/app/components/document-list/document-card-large/document-card-large.component.ts
src-ui/src/app/components/document-list/document-list.component.html
src-ui/src/app/components/manage/management-list/management-list.component.html
src-ui/src/app/components/manage/settings/settings.component.html
src-ui/src/app/components/manage/tasks/tasks.component.html
src/documents/admin.py
src/documents/tests/test_management_exporter.py

Simple merge
index 26cc32b0ca8d96464ffaafb3e4d4660d16a9f19d,f59be5da94eb650a10045e6a0373f030dc0221c1..2c6bf38e2884b2c8f0ce706d650ddebdd91d805d
@@@ -1,7 -1,5 +1,6 @@@
- import { HttpEventType } from '@angular/common/http'
- import { Component, OnInit } from '@angular/core'
- import { FileSystemFileEntry, NgxFileDropEntry } from 'ngx-file-drop'
+ import { Component } from '@angular/core'
+ import { NgxFileDropEntry } from 'ngx-file-drop'
 +import { ComponentWithPermissions } from 'src/app/components/with-permissions/with-permissions.component'
  import {
    ConsumerStatusService,
    FileStatus,
@@@ -16,10 -14,7 +15,7 @@@ const MAX_ALERTS = 
    templateUrl: './upload-file-widget.component.html',
    styleUrls: ['./upload-file-widget.component.scss'],
  })
- export class UploadFileWidgetComponent
-   extends ComponentWithPermissions
-   implements OnInit
- {
 -export class UploadFileWidgetComponent {
++export class UploadFileWidgetComponent extends ComponentWithPermissions {
    alertsExpanded = false
  
    constructor(
index 336d722c31ea323547492f4a49ee34f75654b81f,0384de3713ca0babc4954cc872122a8ff62d5cc1..5a5527b461ddeab085d65963440e73e9ac337b21
  
              <div [ngbNavOutlet]="nav" class="mt-2"></div>
  
 -            <button type="button" class="btn btn-outline-secondary" (click)="discard()" i18n [disabled]="networkActive || (isDirty$ | async) === false">Discard</button>&nbsp;
 -            <button type="button" class="btn btn-outline-primary" (click)="saveEditNext()" *ngIf="hasNext()" i18n [disabled]="networkActive || (isDirty$ | async) === false || error">Save & next</button>&nbsp;
 -            <button type="submit" class="btn btn-primary" i18n [disabled]="networkActive || (isDirty$ | async) === false || error">Save</button>&nbsp;
 +            <ng-container>
-                 <button type="button" class="btn btn-outline-secondary" (click)="discard()" i18n [disabled]="!userCanEdit || networkActive || !(isDirty$ | async)">Discard</button>&nbsp;
-                 <button type="button" class="btn btn-outline-primary" (click)="saveEditNext()" *ngIf="hasNext()" i18n [disabled]="!userCanEdit || networkActive || !(isDirty$ | async) || error">Save & next</button>&nbsp;
-                 <button type="submit" class="btn btn-primary" *ifPermissions="{ action: PermissionAction.Change, type: PermissionType.Document }" i18n [disabled]="!userCanEdit || networkActive || !(isDirty$ | async) || error">Save</button>&nbsp;
++                <button type="button" class="btn btn-outline-secondary" (click)="discard()" i18n [disabled]="!userCanEdit || networkActive || (isDirty$ | async) === false">Discard</button>&nbsp;
++                <button type="button" class="btn btn-outline-primary" (click)="saveEditNext()" *ngIf="hasNext()" i18n [disabled]="!userCanEdit || networkActive || (isDirty$ | async) === false || error">Save & next</button>&nbsp;
++                <button type="submit" class="btn btn-primary" *ifPermissions="{ action: PermissionAction.Change, type: PermissionType.Document }" i18n [disabled]="!userCanEdit || networkActive || (isDirty$ | async) === false || error">Save</button>&nbsp;
 +            </ng-container>
          </form>
      </div>
  
index a6c9c25d3da2827797947cfba0b0bcff6e0ab176,b431878798fd1cdd8ace6a951243697a43a3c795..68499b6f2ed435b643efe858dd868f615cf2845b
@@@ -21,10 -19,7 +20,7 @@@ import { ComponentWithPermissions } fro
      '../popover-preview/popover-preview.scss',
    ],
  })
- export class DocumentCardLargeComponent
-   extends ComponentWithPermissions
-   implements OnInit
- {
 -export class DocumentCardLargeComponent {
++export class DocumentCardLargeComponent extends ComponentWithPermissions {
    constructor(
      private documentService: DocumentService,
      private settingsService: SettingsService
index 72a995fe93ee29c9876c15fba9c6b9ecc8c9e997,eb279f4b69e910d6a9870e3e58a9ef6b2a537ec8..4816ebb93de238c5394d8d085e05fed14efe6bdd
        <ng-template ngbNavContent>
  
          <ng-container *ngIf="mailAccounts && mailRules">
 -          <h4>
 -            <ng-container i18n>Mail accounts</ng-container>
 -            <button type="button" class="btn btn-sm btn-primary ms-4" (click)="editMailAccount()">
 -              <svg class="sidebaricon me-1" fill="currentColor">
 -                <use xlink:href="assets/bootstrap-icons.svg#plus-circle" />
 -              </svg>
 -              <ng-container i18n>Add Account</ng-container>
 -            </button>
 -          </h4>
 -          <ul class="list-group" formGroupName="mailAccounts">
 -
 -              <li class="list-group-item">
 -                <div class="row">
 -                  <div class="col" i18n>Name</div>
 -                  <div class="col" i18n>Server</div>
 -                  <div class="col" i18n>Actions</div>
 -                </div>
 -              </li>
 -
 -              <li *ngFor="let account of mailAccounts" class="list-group-item" [formGroupName]="account.id">
 -                <div class="row">
 -                  <div class="col d-flex align-items-center"><button class="btn btn-link p-0" type="button" (click)="editMailAccount(account)">{{account.name}}</button></div>
 -                  <div class="col d-flex align-items-center">{{account.imap_server}}</div>
 -                  <div class="col">
 -                    <div class="btn-group">
 -                      <button class="btn btn-sm btn-primary" type="button" (click)="editMailAccount(account)" i18n>Edit</button>
 -                      <button class="btn btn-sm btn-outline-danger" type="button" (click)="deleteMailAccount(account)" i18n>Delete</button>
 +          <ng-container *ifPermissions="{ action: PermissionAction.View, type: PermissionType.MailAccount }">
 +            <h4>
 +              <ng-container i18n>Mail accounts</ng-container>
 +              <button type="button" class="btn btn-sm btn-primary ms-4" (click)="editMailAccount()">
 +                <svg class="sidebaricon me-1" fill="currentColor">
 +                  <use xlink:href="assets/bootstrap-icons.svg#plus-circle" />
 +                </svg>
 +                <ng-container i18n>Add Account</ng-container>
 +              </button>
 +            </h4>
 +            <ul class="list-group" formGroupName="mailAccounts">
 +
 +                <li class="list-group-item">
 +                  <div class="row">
 +                    <div class="col" i18n>Name</div>
 +                    <div class="col" i18n>Server</div>
 +                    <div class="col" i18n>Actions</div>
 +                  </div>
 +                </li>
 +
 +                <li *ngFor="let account of mailAccounts" class="list-group-item" [formGroupName]="account.id">
 +                  <div class="row">
 +                    <div class="col d-flex align-items-center"><button class="btn btn-link p-0" type="button" (click)="editMailAccount(account)">{{account.name}}</button></div>
 +                    <div class="col d-flex align-items-center">{{account.imap_server}}</div>
 +                    <div class="col">
 +                      <div class="btn-group">
 +                        <button *ifPermissions="{ action: PermissionAction.Change, type: PermissionType.MailAccount }" class="btn btn-sm btn-primary" type="button" (click)="editMailAccount(account)" i18n>Edit</button>
 +                        <button *ifPermissions="{ action: PermissionAction.Change, type: PermissionType.MailAccount }" class="btn btn-sm btn-outline-danger" type="button" (click)="deleteMailAccount(account)" i18n>Delete</button>
 +                      </div>
                      </div>
                    </div>
 -                </div>
 -              </li>
 -
 -              <div *ngIf="mailAccounts.length === 0" i18n>No mail accounts defined.</div>
 -          </ul>
 -
 -          <h4 class="mt-4">
 -            <ng-container i18n>Mail rules</ng-container>
 -            <button type="button" class="btn btn-sm btn-primary ms-4" (click)="editMailRule()">
 -              <svg class="sidebaricon me-1" fill="currentColor">
 -                <use xlink:href="assets/bootstrap-icons.svg#plus-circle" />
 -              </svg>
 -              <ng-container i18n>Add Rule</ng-container>
 -            </button>
 -          </h4>
 -          <ul class="list-group" formGroupName="mailRules">
 -
 -              <li class="list-group-item">
 -                <div class="row">
 -                  <div class="col" i18n>Name</div>
 -                  <div class="col" i18n>Account</div>
 -                  <div class="col" i18n>Actions</div>
 -                </div>
 -              </li>
 -
 -              <li *ngFor="let rule of mailRules" class="list-group-item" [formGroupName]="rule.id">
 -                <div class="row">
 -                  <div class="col d-flex align-items-center"><button class="btn btn-link p-0" type="button" (click)="editMailRule(rule)">{{rule.name}}</button></div>
 -                  <div class="col d-flex align-items-center">{{(mailAccountService.getCached(rule.account) | async)?.name}}</div>
 -                  <div class="col">
 -                    <div class="btn-group">
 -                      <button class="btn btn-sm btn-primary" type="button" (click)="editMailRule(rule)" i18n>Edit</button>
 -                      <button class="btn btn-sm btn-outline-danger" type="button" (click)="deleteMailRule(rule)" i18n>Delete</button>
 +                </li>
 +
-                 <div *ngIf="mailAccounts.length == 0" i18n>No mail accounts defined.</div>
++                <div *ngIf="mailAccounts.length === 0" i18n>No mail accounts defined.</div>
 +            </ul>
 +          </ng-container>
 +
 +          <ng-container *ifPermissions="{ action: PermissionAction.View, type: PermissionType.MailRule }">
 +            <h4 class="mt-4">
 +              <ng-container i18n>Mail rules</ng-container>
 +              <button type="button" class="btn btn-sm btn-primary ms-4" (click)="editMailRule()">
 +                <svg class="sidebaricon me-1" fill="currentColor">
 +                  <use xlink:href="assets/bootstrap-icons.svg#plus-circle" />
 +                </svg>
 +                <ng-container i18n>Add Rule</ng-container>
 +              </button>
 +            </h4>
 +            <ul class="list-group" formGroupName="mailRules">
 +
 +                <li class="list-group-item">
 +                  <div class="row">
 +                    <div class="col" i18n>Name</div>
 +                    <div class="col" i18n>Account</div>
 +                    <div class="col" i18n>Actions</div>
 +                  </div>
 +                </li>
 +
 +                <li *ngFor="let rule of mailRules" class="list-group-item" [formGroupName]="rule.id">
 +                  <div class="row">
 +                    <div class="col d-flex align-items-center"><button class="btn btn-link p-0" type="button" (click)="editMailRule(rule)">{{rule.name}}</button></div>
 +                    <div class="col d-flex align-items-center">{{(mailAccountService.getCached(rule.account) | async)?.name}}</div>
 +                    <div class="col">
 +                      <div class="btn-group">
 +                        <button *ifPermissions="{ action: PermissionAction.Change, type: PermissionType.MailRule }" class="btn btn-sm btn-primary" type="button" (click)="editMailRule(rule)" i18n>Edit</button>
 +                        <button *ifPermissions="{ action: PermissionAction.Change, type: PermissionType.MailRule }" class="btn btn-sm btn-outline-danger" type="button" (click)="deleteMailRule(rule)" i18n>Delete</button>
 +                      </div>
                      </div>
                    </div>
 -                </div>
 -              </li>
 +                </li>
  
-                 <div *ngIf="mailRules.length == 0" i18n>No mail rules defined.</div>
 -              <div *ngIf="mailRules.length === 0" i18n>No mail rules defined.</div>
 -          </ul>
++                <div *ngIf="mailRules.length === 0" i18n>No mail rules defined.</div>
 +            </ul>
 +          </ng-container>
          </ng-container>
  
          <div *ngIf="!mailAccounts || !mailRules">
  
    <div [ngbNavOutlet]="nav" class="border-start border-end border-bottom p-3 mb-3 shadow-sm"></div>
  
-   <button type="submit" class="btn btn-primary mb-2" *ifPermissions="{ action: PermissionAction.Change, type: PermissionType.UISettings }" [disabled]="!(isDirty$ | async)" i18n>Save</button>
 -  <button type="submit" class="btn btn-primary mb-2" [disabled]="(isDirty$ | async) === false" i18n>Save</button>
++  <button type="submit" class="btn btn-primary mb-2" *ifPermissions="{ action: PermissionAction.Change, type: PermissionType.UISettings }" [disabled]="(isDirty$ | async) === false" i18n>Save</button>
  </form>
index bdce616e2d37982e3d030aeda2f3e63ed42f3e3e,f6b09333d496cd25e6997737e243f5639fc88061..974c6092efca0c0c3ec5673c1ef169c8d7718741
@@@ -5,7 -5,7 +5,7 @@@
          <use xlink:href="assets/bootstrap-icons.svg#x"/>
        </svg>&nbsp;<ng-container i18n>Clear selection</ng-container>
      </button>
-     <button class="btn btn-sm btn-outline-primary me-4" (click)="dismissTasks()" *ifPermissions="{ action: PermissionAction.Change, type: PermissionType.PaperlessTask }" [disabled]="tasksService.total == 0">
 -    <button class="btn btn-sm btn-outline-primary me-4" (click)="dismissTasks()" [disabled]="tasksService.total === 0">
++    <button class="btn btn-sm btn-outline-primary me-4" (click)="dismissTasks()" *ifPermissions="{ action: PermissionAction.Change, type: PermissionType.PaperlessTask }" [disabled]="tasksService.total === 0">
        <svg class="sidebaricon" fill="currentColor">
          <use xlink:href="assets/bootstrap-icons.svg#check2-all"/>
        </svg>&nbsp;<ng-container i18n>{{dismissButtonText}}</ng-container>
Simple merge