Lint and update dockerfile for deploying

This commit is contained in:
Amritanshu Agrawal 2021-01-11 11:35:59 +05:30
parent 748fb37511
commit f2e330df61
17 changed files with 104 additions and 112 deletions

View File

@ -10,10 +10,6 @@ then
else else
echo "No version bump" echo "No version bump"
git push git push
git tag --delete latest
git tag latest
git push --delete origin latest
git push --tags
fi fi
cd docker/app || exit cd docker/app || exit

View File

@ -1,14 +1,14 @@
FROM node:latest AS builder FROM node:latest AS builder
ADD https://git.tanshu.com/api/v1/repos/tanshu/barker/tags /tags.json ADD https://git.tanshu.com/api/v1/repos/tanshu/luthor/branches/main /main.json
RUN git clone --single-branch --depth 1 --branch latest https://git.tanshu.com/tanshu/barker.git /app RUN git clone --single-branch --depth 1 --branch latest https://git.tanshu.com/tanshu/luthor.git /app
WORKDIR /app/bookie WORKDIR /app/otis
RUN npm install --unsafe-perm --legacy-peer-deps && /app/bookie/node_modules/.bin/ng build --prod RUN npm install --unsafe-perm --legacy-peer-deps && /app/otis/node_modules/.bin/ng build --prod
FROM python:latest FROM python:latest
LABEL maintainer="Amritanshu <docker@tanshu.com>" LABEL maintainer="Amritanshu <docker@tanshu.com>"
COPY --from=builder /app/barker /app COPY --from=builder /app/luthor /app
COPY --from=builder /app/frontend /app/frontend COPY --from=builder /app/frontend /app/frontend
RUN apt-get update && \ RUN apt-get update && \

View File

@ -2,16 +2,12 @@ HOST=0.0.0.0
PORT=80 PORT=80
LOG_LEVEL=WARN LOG_LEVEL=WARN
DEBUG=false DEBUG=false
SQLALCHEMY_DATABASE_URI=postgresql://postgres:123456@db:5432/petty SQLALCHEMY_DATABASE_URI=postgresql://postgres:123456@db:5432/luthor
MODULE_NAME=barker.main MODULE_NAME=luthor.main
PROJECT_NAME=barker PROJECT_NAME=luthor
REDIS_HOST=redis SECRET_KEY=0500a11310479deb2e3a729b59ee65c5f832da30d86624ec88619315054bea92
REDIS_PORT=6379 MIDDLEWARE_SECRET_KEY=70282004a7
SECRET_KEY=611f9393e58f85521d16d9497bfd847ced70f2b99e12a9c6af40b7bd05cc7b1d
MIDDLEWARE_SECRET_KEY=c4afceca1a
ALGORITHM=HS256 ALGORITHM=HS256
JWT_TOKEN_EXPIRE_MINUTES=30 JWT_TOKEN_EXPIRE_MINUTES=30
NEW_DAY_OFFSET_MINUTES=420
TIMEZONE_OFFSET_MINUTES=330
ALEMBIC_LOG_LEVEL=INFO ALEMBIC_LOG_LEVEL=INFO
ALEMBIC_SQLALCHEMY_LOG_LEVEL=WARN ALEMBIC_SQLALCHEMY_LOG_LEVEL=WARN

View File

@ -11,9 +11,9 @@
- name: Copy dockerfile - name: Copy dockerfile
synchronize: src=app dest=/tmp synchronize: src=app dest=/tmp
- name: Build barker image - name: Build luthor image
docker_image: docker_image:
name: barker:latest name: luthor:latest
build: build:
path: /tmp/app/ path: /tmp/app/
dockerfile: /tmp/app/Dockerfile dockerfile: /tmp/app/Dockerfile
@ -21,47 +21,25 @@
state: present state: present
source: build source: build
- name: Build barker worker image
docker_image:
name: barker-worker:latest
build:
path: /tmp/app/
dockerfile: /tmp/app/worker.Dockerfile
pull: yes
state: present
source: build
- name: Upload the .env file - name: Upload the .env file
template: template:
src: "files/.env" src: "files/.env"
dest: "/var/lib/{{ host_directory }}/.env" dest: "/var/lib/{{ host_directory }}/.env"
- name: Create barker container - name: Create luthor container
docker_container: docker_container:
name: "{{ host_directory }}" name: "{{ host_directory }}"
image: barker:latest image: luthor:latest
state: started state: started
restart_policy: "unless-stopped" restart_policy: "unless-stopped"
env_file: "/var/lib/{{ host_directory }}/.env" env_file: "/var/lib/{{ host_directory }}/.env"
links: links:
- "postgres:db" - "postgres:db"
- "redis:redis"
published_ports: published_ports:
- "127.0.0.1:{{ host_port }}:80" - "127.0.0.1:{{ host_port }}:80"
volumes: volumes:
- "/var/lib/{{ host_directory }}/frontend:/frontend" - "/var/lib/{{ host_directory }}/frontend:/frontend"
- name: Create barker worker container
docker_container:
name: "{{ host_directory }}-worker"
image: barker-worker:latest
state: started
restart_policy: "unless-stopped"
env_file: "/var/lib/{{ host_directory }}/.env"
links:
- "redis:redis"
- name: Check if Nginx conf file exists - name: Check if Nginx conf file exists
stat: path="/etc/nginx/sites-available/{{ http_conf }}" stat: path="/etc/nginx/sites-available/{{ http_conf }}"
register: status register: status

View File

@ -10,8 +10,6 @@ class Settings(BaseSettings):
MIDDLEWARE_SECRET_KEY: str = secrets.token_urlsafe(5) MIDDLEWARE_SECRET_KEY: str = secrets.token_urlsafe(5)
ALGORITHM: str = "HS256" ALGORITHM: str = "HS256"
JWT_TOKEN_EXPIRE_MINUTES: int = 30 JWT_TOKEN_EXPIRE_MINUTES: int = 30
NEW_DAY_OFFSET_MINUTES: int = 7 * 60
TIMEZONE_OFFSET_MINUTES: int = 330
HOST: str = "0.0.0.0" HOST: str = "0.0.0.0"
PORT: int = 80 PORT: int = 80
DEBUG: bool = False DEBUG: bool = False

View File

@ -165,8 +165,13 @@ def show_list(db: Session = Depends(get_db), user: UserToken = Depends(get_user)
@router.get("/list/{source_id}", response_model=List[schemas.Case]) @router.get("/list/{source_id}", response_model=List[schemas.Case])
def show_list_of_source(source_id: uuid.UUID, db: Session = Depends(get_db), user: UserToken = Depends(get_user)) -> List[schemas.Case]: def show_list_of_source(
return [case_info(item) for item in db.query(Case).filter(Case.case_source_id == source_id).order_by(desc(Case.receipt_date)).all()] source_id: uuid.UUID, db: Session = Depends(get_db), user: UserToken = Depends(get_user)
) -> List[schemas.Case]:
return [
case_info(item)
for item in db.query(Case).filter(Case.case_source_id == source_id).order_by(desc(Case.receipt_date)).all()
]
@router.get("/{id_}", response_model=schemas.Case) @router.get("/{id_}", response_model=schemas.Case)

View File

@ -16,7 +16,8 @@ const routes: Routes = [
}, },
{ {
path: 'case-sources', path: 'case-sources',
loadChildren: () => import('./case-sources/case-sources.module').then((mod) => mod.CaseSourcesModule), loadChildren: () =>
import('./case-sources/case-sources.module').then((mod) => mod.CaseSourcesModule),
}, },
{ {
path: 'case-types', path: 'case-types',

View File

@ -91,7 +91,6 @@ export class AuthService {
this.currentUserSubject.next(user); this.currentUserSubject.next(user);
return user; return user;
}), }),
tap((x) => console.log(x.perms)),
); );
} }
@ -119,7 +118,6 @@ export class AuthService {
this.currentUserSubject.next(user); this.currentUserSubject.next(user);
return user; return user;
}), }),
tap((x) => console.log(x.perms)),
); );
} }

View File

@ -14,12 +14,7 @@
> >
<mat-form-field fxFlex> <mat-form-field fxFlex>
<mat-label>Name</mat-label> <mat-label>Name</mat-label>
<input <input matInput #nameElement placeholder="Name" formControlName="name" />
matInput
#nameElement
placeholder="Name"
formControlName="name"
/>
</mat-form-field> </mat-form-field>
</div> </div>
<div <div
@ -31,11 +26,7 @@
> >
<mat-form-field fxFlex> <mat-form-field fxFlex>
<mat-label>Prefix</mat-label> <mat-label>Prefix</mat-label>
<input <input matInput placeholder="Prefix" formControlName="prefix" />
matInput
placeholder="Prefix"
formControlName="prefix"
/>
</mat-form-field> </mat-form-field>
</div> </div>
</form> </form>

View File

@ -22,7 +22,9 @@ export class CaseSourceService {
const getUrl: string = id === null ? url : `${url}/${id}`; const getUrl: string = id === null ? url : `${url}/${id}`;
return this.http return this.http
.get<CaseSource>(getUrl) .get<CaseSource>(getUrl)
.pipe(catchError(this.log.handleError(serviceName, `get id=${id}`))) as Observable<CaseSource>; .pipe(
catchError(this.log.handleError(serviceName, `get id=${id}`)),
) as Observable<CaseSource>;
} }
list(): Observable<CaseSource[]> { list(): Observable<CaseSource[]> {

View File

@ -13,16 +13,27 @@
fxLayoutGap.lt-md="0px" fxLayoutGap.lt-md="0px"
> >
<mat-form-field fxFlex> <mat-form-field fxFlex>
<mat-label>Name</mat-label> <mat-label>Office File Number</mat-label>
<input <input
matInput matInput
#nameElement #nameElement
placeholder="Name" placeholder="Office File Number"
formControlName="name" formControlName="officeFileNumber"
(keyup.enter)="save()"
/> />
</mat-form-field> </mat-form-field>
</div> </div>
<div
fxLayout="row"
fxLayoutAlign="space-around start"
fxLayout.lt-md="column"
fxLayoutGap="20px"
fxLayoutGap.lt-md="0px"
>
<mat-form-field fxFlex>
<mat-label>Title</mat-label>
<input matInput placeholder="Title" formControlName="title" />
</mat-form-field>
</div>
<div <div
fxLayout="row" fxLayout="row"
fxLayoutAlign="space-around start" fxLayoutAlign="space-around start"

View File

@ -42,13 +42,35 @@ export class CaseDetailComponent implements OnInit, AfterViewInit {
) { ) {
// Create form // Create form
this.form = this.fb.group({ this.form = this.fb.group({
name: '', officeFileNumber: '',
mobile: '', courtCaseNumber: '',
landline: '', year: '',
email: '', title: '',
address: '', docketNumber: '',
receiptDate: '',
limitationDate: '',
filingDate: '',
appearOnBehalfOf: '',
questionOfLaw: '',
aorName: '',
opposingCouncilAor: '',
opposingCouncilDetail: '',
lowerCourtCaseNumber: '',
dateOfImpugnedJudgement: '',
briefDescription: '',
remarks: '',
slpCounter: '',
contactDetail: '',
caseConnectedWith: '',
bunchCases: '',
court: '',
department: '', department: '',
office: '', office: '',
caseType: '',
act: '',
nature: '',
officeStatus: '',
courtStatus: '',
}); });
} }

View File

@ -1,24 +1,21 @@
import { DataSource } from '@angular/cdk/collections'; import { DataSource } from '@angular/cdk/collections';
import {merge, Observable, of as observableOf} from 'rxjs'; import { EventEmitter } from '@angular/core';
import { MatPaginator, PageEvent } from '@angular/material/paginator';
import { merge, Observable, of as observableOf } from 'rxjs';
import { map, tap } from 'rxjs/operators';
import { Case } from '../../core/case'; import { Case } from '../../core/case';
import {MatPaginator, PageEvent} from "@angular/material/paginator";
import {EventEmitter} from "@angular/core";
import {map, tap} from "rxjs/operators";
export class CaseListDataSource extends DataSource<Case> { export class CaseListDataSource extends DataSource<Case> {
private dataValues: Case[] = []; private dataValues: Case[] = [];
private data: Observable<Case[]> = new Observable<Case[]>(); private data: Observable<Case[]> = new Observable<Case[]>();
constructor(public d: Observable<Case[]>, private paginator?: MatPaginator) { constructor(public d: Observable<Case[]>, private paginator?: MatPaginator) {
super(); super();
this.data = d.pipe(tap(x=> this.dataValues = x)); this.data = d.pipe(tap((x) => (this.dataValues = x)));
} }
connect(): Observable<Case[]> { connect(): Observable<Case[]> {
const dataMutations: ( const dataMutations: (Observable<Case[]> | EventEmitter<PageEvent>)[] = [this.data];
| Observable<Case[]>
| EventEmitter<PageEvent>
)[] = [this.data];
if (this.paginator) { if (this.paginator) {
dataMutations.push((this.paginator as MatPaginator).page); dataMutations.push((this.paginator as MatPaginator).page);
} }
@ -43,5 +40,4 @@ export class CaseListDataSource extends DataSource<Case> {
const startIndex = this.paginator.pageIndex * this.paginator.pageSize; const startIndex = this.paginator.pageIndex * this.paginator.pageSize;
return data.slice(startIndex, startIndex + this.paginator.pageSize); return data.slice(startIndex, startIndex + this.paginator.pageSize);
} }
} }

View File

@ -7,7 +7,7 @@
</a> </a>
</mat-card-title-group> </mat-card-title-group>
<mat-card-content> <mat-card-content>
<form [formGroup]="form" fxLayout="column"> <form [formGroup]="form" fxLayout="column">
<div <div
fxLayout="row" fxLayout="row"
fxLayout.lt-md="column" fxLayout.lt-md="column"
@ -24,7 +24,7 @@
</mat-select> </mat-select>
</mat-form-field> </mat-form-field>
</div> </div>
</form> </form>
<mat-table #table [dataSource]="dataSource" aria-label="Elements"> <mat-table #table [dataSource]="dataSource" aria-label="Elements">
<!-- Office File Number Column --> <!-- Office File Number Column -->
<ng-container matColumnDef="officeFileNumber"> <ng-container matColumnDef="officeFileNumber">

View File

@ -1,15 +1,15 @@
import {Component, OnInit, ViewChild} from '@angular/core'; import { Component, OnInit, ViewChild } from '@angular/core';
import { FormBuilder, FormControl, FormGroup } from '@angular/forms';
import { MatPaginator } from '@angular/material/paginator';
import { ActivatedRoute } from '@angular/router'; import { ActivatedRoute } from '@angular/router';
import { Observable, of as observableOf } from 'rxjs';
import { distinctUntilChanged, startWith, switchMap, tap } from 'rxjs/operators';
import { Case } from '../../core/case'; import { Case } from '../../core/case';
import { CaseSource } from '../../core/case-source';
import { CaseService } from '../case.service';
import { CaseListDataSource } from './case-list-datasource'; import { CaseListDataSource } from './case-list-datasource';
import {CaseSource} from "../../core/case-source";
import {FormBuilder, FormControl, FormGroup} from "@angular/forms";
import {distinctUntilChanged, startWith, switchMap, tap} from "rxjs/operators";
import {CaseService} from "../case.service";
import { Observable, of as observableOf } from 'rxjs';
import {MatPaginator} from "@angular/material/paginator";
@Component({ @Component({
selector: 'app-case-list', selector: 'app-case-list',
@ -39,7 +39,7 @@ export class CaseListComponent implements OnInit {
'lowerCourtCaseNumber', 'lowerCourtCaseNumber',
]; ];
constructor(private route: ActivatedRoute, private fb: FormBuilder, private ser: CaseService) { constructor(private route: ActivatedRoute, private fb: FormBuilder, private ser: CaseService) {
// Create form // Create form
this.form = this.fb.group({ this.form = this.fb.group({
caseSource: '', caseSource: '',
@ -56,9 +56,7 @@ export class CaseListComponent implements OnInit {
startWith(''), startWith(''),
distinctUntilChanged(), distinctUntilChanged(),
switchMap((x) => this.ser.list(x)), switchMap((x) => this.ser.list(x)),
tap(x=>console.log(x))
); );
}); });
this.dataSource = new CaseListDataSource(this.list, this.paginator); this.dataSource = new CaseListDataSource(this.list, this.paginator);
} }

View File

@ -3,13 +3,13 @@ import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router'; import { RouterModule, Routes } from '@angular/router';
import { AuthGuard } from '../auth/auth-guard.service'; import { AuthGuard } from '../auth/auth-guard.service';
import { CaseSourceListResolver } from '../case-sources/case-source-list-resolver.service';
import { DepartmentListResolver } from '../departments/department-list-resolver.service'; import { DepartmentListResolver } from '../departments/department-list-resolver.service';
import { CaseDetailComponent } from './case-detail/case-detail.component'; import { CaseDetailComponent } from './case-detail/case-detail.component';
import { CaseListResolver } from './case-list-resolver.service'; import { CaseListResolver } from './case-list-resolver.service';
import { CaseListComponent } from './case-list/case-list.component'; import { CaseListComponent } from './case-list/case-list.component';
import { CaseResolver } from './case-resolver.service'; import { CaseResolver } from './case-resolver.service';
import {CaseSourceListResolver} from "../case-sources/case-source-list-resolver.service";
const advocatesRoutes: Routes = [ const advocatesRoutes: Routes = [
{ {

View File

@ -7,6 +7,7 @@ import { MatButtonModule } from '@angular/material/button';
import { MatCardModule } from '@angular/material/card'; import { MatCardModule } from '@angular/material/card';
import { MatIconModule } from '@angular/material/icon'; import { MatIconModule } from '@angular/material/icon';
import { MatInputModule } from '@angular/material/input'; import { MatInputModule } from '@angular/material/input';
import { MatPaginatorModule } from '@angular/material/paginator';
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner'; import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
import { MatSelectModule } from '@angular/material/select'; import { MatSelectModule } from '@angular/material/select';
import { MatTableModule } from '@angular/material/table'; import { MatTableModule } from '@angular/material/table';
@ -14,24 +15,23 @@ import { MatTableModule } from '@angular/material/table';
import { CaseDetailComponent } from './case-detail/case-detail.component'; import { CaseDetailComponent } from './case-detail/case-detail.component';
import { CaseListComponent } from './case-list/case-list.component'; import { CaseListComponent } from './case-list/case-list.component';
import { CasesRoutingModule } from './cases-routing.module'; import { CasesRoutingModule } from './cases-routing.module';
import {MatPaginatorModule} from "@angular/material/paginator";
@NgModule({ @NgModule({
imports: [ imports: [
CommonModule, CommonModule,
CdkTableModule, CdkTableModule,
FlexLayoutModule, FlexLayoutModule,
MatButtonModule, MatButtonModule,
MatCardModule, MatCardModule,
MatIconModule, MatIconModule,
MatInputModule, MatInputModule,
MatProgressSpinnerModule, MatProgressSpinnerModule,
MatTableModule, MatTableModule,
ReactiveFormsModule, ReactiveFormsModule,
CasesRoutingModule, CasesRoutingModule,
MatSelectModule, MatSelectModule,
MatPaginatorModule, MatPaginatorModule,
], ],
declarations: [CaseListComponent, CaseDetailComponent], declarations: [CaseListComponent, CaseDetailComponent],
}) })
export class CasesModule {} export class CasesModule {}