Commit 9f69fca6 authored by Barbora Kompišová's avatar Barbora Kompišová
Browse files

resubmit button

parent 811ac388
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -110,7 +110,7 @@ export class CourseImportComponent implements OnInit, OnDestroy {
      () => {
      () => {
        this.router.navigateByUrl(`/courses/${target.id}`).then(
        this.router.navigateByUrl(`/courses/${target.id}`).then(
          () => {
          () => {
            this.flashMessagesService.show('Import successful.', {cssClass: 'alert-sucess'});
            this.flashMessagesService.show('Import successful.', {cssClass: 'alert-success'});
          }
          }
        );
        );
      }
      }
+0 −30
Original line number Original line Diff line number Diff line
@@ -31,33 +31,3 @@ export class PermissionsService {
  }
  }
}
}
/*
export class Permissions {
  constructor(public archive_projects: boolean,
              public assign_roles: boolean,
              public create_submissions: boolean,
              public evaluate_submissions: boolean,
              public handle_notes_access_token: boolean,
              public read_all_submission_files: boolean,
              public read_groups: boolean,
              public  read_projects: boolean,
              public read_reviews_all: boolean,
              public read_reviews_groups: boolean,
              public  read_reviews_own: boolean,
              public read_roles: boolean,
              public read_submissions_all: boolean,
              public read_submissions_groups: boolean,
              public read_submissions_own: boolean,
              public resubmit_submissions: boolean,
              public update_course: boolean,
              public view_course_full: boolean,
              public view_course_limited: boolean,
              public write_groups: boolean,
              public write_projects: boolean,
              public write_reviews_all: boolean,
              public write_reviews_group: boolean,
              public write_reviews_own: boolean,
              public write_roles: boolean) {
  }
}
 */
+5 −11
Original line number Original line Diff line number Diff line
@@ -29,17 +29,11 @@ export class SubmissionService {
  }
  }


  public cancelSubmission(id: string) {
  public cancelSubmission(id: string) {
    return this.http.put(`${this.submissionsUrl}/${id}/state`, {'state': 'CANCELLED'});
    return this.http.put(`${this.submissionsUrl}/${id}/state`, { state: 'CANCELLED'});
  }
  }
}

/*
  public resubmitSubmission(id: string, note: string) {
file_params = {
    return this.http.post(`${this.submissionsUrl}/${id}/resubmit`, { note: note});
  source: {
    type
    url
    branch
    checkout
  }
  }
}
}
project_params
 */
+31 −1
Original line number Original line Diff line number Diff line
@@ -11,6 +11,10 @@
            class="btn btn-danger fa-pull-right" (click)="cancelSubmission()" style="margin-right: 15px">
            class="btn btn-danger fa-pull-right" (click)="cancelSubmission()" style="margin-right: 15px">
      Cancel submission processing
      Cancel submission processing
    </button>
    </button>
    <button *ngIf="!['CANCELLED', 'CREATED'].includes(submission.state) && userCanResubmitSubmission()"
            class="btn btn-warning fa-pull-right" data-toggle="modal" data-target="#resubmit_submission_modal" style="margin-right: 15px">
      Resubmit
    </button>
    <button *ngIf="loggedInUser?.is_admin" style="margin-right: 15px"
    <button *ngIf="loggedInUser?.is_admin" style="margin-right: 15px"
            data-toggle="modal" data-target="#delete_submission_modal" class="btn btn-danger fa-pull-right">
            data-toggle="modal" data-target="#delete_submission_modal" class="btn btn-danger fa-pull-right">
      Delete
      Delete
@@ -46,7 +50,6 @@


  </div>
  </div>
  <div *ngIf="(loggedInUser?.is_admin)">
  <div *ngIf="(loggedInUser?.is_admin)">

    <div id="delete_submission_modal" class="modal" tabindex="-1" role="dialog">
    <div id="delete_submission_modal" class="modal" tabindex="-1" role="dialog">
      <div class="modal-dialog" role="document">
      <div class="modal-dialog" role="document">
        <div class="modal-content">
        <div class="modal-content">
@@ -70,3 +73,30 @@
      </div>
      </div>
    </div>
    </div>
  </div>
  </div>

  <div *ngIf="userCanResubmitSubmission()">
    <div id="resubmit_submission_modal" class="modal" tabindex="-1" role="dialog">
      <div class="modal-dialog" role="document">
        <div class="modal-content">
          <div class="modal-header">
            <h5 class="modal-title">Resubmit submission</h5>
            <button type="button" class="close" data-dismiss="modal" aria-label="Close">
              <span aria-hidden="true">&times;</span>
            </button>
          </div>
          <div class="modal-body">
            <p>
              Do you wish to resubmit submission: <strong>{{submission?.id}}</strong>
              from course {{submission?.project?.course?.codename}} authored by {{submission?.user?.username}}?
              The submission's author will be its original author.
            </p>
          </div>
          <div class="modal-footer">
            <button type="button" class="btn btn-primary" data-dismiss="modal" (click)="resubmitSubmission()">Yes</button>
            <button type="button" class="btn btn-secondary" data-dismiss="modal">No</button>
          </div>
        </div>
      </div>
    </div>
  </div>
</div>
+25 −1
Original line number Original line Diff line number Diff line
@@ -4,6 +4,7 @@ import {Submission, User} from '../../shared/models/models';
import {Subscription} from 'rxjs/Subscription';
import {Subscription} from 'rxjs/Subscription';
import {FlashMessagesService} from 'angular2-flash-messages';
import {FlashMessagesService} from 'angular2-flash-messages';
import {SubmissionService} from '../../services/submission.service';
import {SubmissionService} from '../../services/submission.service';
import {PermissionsService} from '../../services/permissions.service';


@Component({
@Component({
  selector: 'app-submission-detail',
  selector: 'app-submission-detail',
@@ -18,7 +19,9 @@ export class SubmissionDetailComponent implements OnInit, OnDestroy {
  constructor(private route: ActivatedRoute,
  constructor(private route: ActivatedRoute,
              private router: Router,
              private router: Router,
              private flashMessagesService: FlashMessagesService,
              private flashMessagesService: FlashMessagesService,
              private submissionService: SubmissionService) {
              private submissionService: SubmissionService,
              private permissionsService: PermissionsService
  ) {
  }
  }


  ngOnInit() {
  ngOnInit() {
@@ -61,7 +64,28 @@ export class SubmissionDetailComponent implements OnInit, OnDestroy {
    ));
    ));
  }
  }


  resubmitSubmission() {
    const note = `Resubmitted at ${Date.now()} by ${this.loggedInUser.username} (id ${this.loggedInUser.id})`;
    this.subscriptions.push(this.submissionService.resubmitSubmission(this.submission.id, note).subscribe(
      (submission: Submission) => {
        this.router.navigateByUrl(`/submissions/${submission.id}`).then(
          () => {
            this.flashMessagesService.show('Resubmit successful.', {cssClass: 'alert-success'});
          }, (error: any) => {
            console.log('Navigation failed: ', error);
            this.flashMessagesService.show('Navigation failed, try navigating elsewhere.', {cssClass: 'alert-danger'});
          }
        );
      }
    ));
  }

  userCanCancelSubmission(): boolean {
  userCanCancelSubmission(): boolean {
    return this.loggedInUser.is_admin || this.loggedInUser === this.submission.user;
    return this.loggedInUser.is_admin || this.loggedInUser === this.submission.user;
  }
  }

  userCanResubmitSubmission(): boolean {
    return this.loggedInUser.is_admin ||
      this.permissionsService.checkAll(this.loggedInUser.permissions[this.submission.project.course.id], ['resubmit_submissions']);
  }
}
}