Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
223 changes: 144 additions & 79 deletions iac/iac/bucket_stack.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,11 @@
class BucketStack(Construct):
s3_bucket_member: aws_s3.Bucket
s3_bucket_project: aws_s3.Bucket
s3_bucket_dev_policy_documents: aws_s3.Bucket
selfie_validation_step_function: aws_stepfunctions.StateMachine
cloudfront_distribution_member: aws_cloudfront.Distribution
cloudfront_distribution_project: aws_cloudfront.Distribution
cloudfront_distribution_dev_policy_documents: aws_cloudfront.Distribution

def __init__(self, scope: Construct) -> None:
super().__init__(scope, "PortalInterno_Bucket")
Expand All @@ -25,93 +27,156 @@ def __init__(self, scope: Construct) -> None:

REMOVAL_POLICY = RemovalPolicy.RETAIN if 'prod' in self.github_ref_name else RemovalPolicy.DESTROY

self.s3_bucket_member = aws_s3.Bucket(self, "PortalInterno_Member_Photo_S3_Bucket",
versioned=True,
block_public_access=aws_s3.BlockPublicAccess.BLOCK_ALL,
event_bridge_enabled=False,
cors=[aws_s3.CorsRule(
allowed_methods=[
aws_s3.HttpMethods.GET, aws_s3.HttpMethods.PUT, aws_s3.HttpMethods.POST],
allowed_origins=["*"],
allowed_headers=["*"],
max_age=3000
)],
removal_policy=REMOVAL_POLICY
)
self.s3_bucket_member = aws_s3.Bucket(
self,
"PortalInterno_Member_Photo_S3_Bucket",
versioned=True,
block_public_access=aws_s3.BlockPublicAccess.BLOCK_ALL,
event_bridge_enabled=False,
cors=[aws_s3.CorsRule(
allowed_methods=[
aws_s3.HttpMethods.GET, aws_s3.HttpMethods.PUT, aws_s3.HttpMethods.POST
],
allowed_origins=["*"],
allowed_headers=["*"],
max_age=3000
)],
removal_policy=REMOVAL_POLICY
)

oai = aws_cloudfront.OriginAccessIdentity(self, "PortalInterno_Member_Photo_OAI",
comment="This is PortalInterno member photo OAI")
oai = aws_cloudfront.OriginAccessIdentity(
self,
"PortalInterno_Member_Photo_OAI",
comment="This is PortalInterno member photo OAI"
)

self.s3_bucket_member.grant_read_write(oai)

self.cloudfront_distribution_member = aws_cloudfront.Distribution(self, "PortalInterno_Member_Photo_CloudFront_Distribution",
default_behavior=aws_cloudfront.BehaviorOptions(
origin=aws_cloudfront_origins.S3Origin(
self.s3_bucket_member,
origin_access_identity=oai),
origin_request_policy=aws_cloudfront.OriginRequestPolicy.CORS_S3_ORIGIN,
viewer_protocol_policy=aws_cloudfront.ViewerProtocolPolicy.REDIRECT_TO_HTTPS,
response_headers_policy=aws_cloudfront.ResponseHeadersPolicy.CORS_ALLOW_ALL_ORIGINS,
cache_policy=aws_cloudfront.CachePolicy.CACHING_OPTIMIZED,
allowed_methods=aws_cloudfront.AllowedMethods.ALLOW_ALL
)
)
self.cloudfront_distribution_member = aws_cloudfront.Distribution(
self,
"PortalInterno_Member_Photo_CloudFront_Distribution",
default_behavior=aws_cloudfront.BehaviorOptions(
origin=aws_cloudfront_origins.S3Origin(
self.s3_bucket_member,
origin_access_identity=oai
),
origin_request_policy=aws_cloudfront.OriginRequestPolicy.CORS_S3_ORIGIN,
viewer_protocol_policy=aws_cloudfront.ViewerProtocolPolicy.REDIRECT_TO_HTTPS,
response_headers_policy=aws_cloudfront.ResponseHeadersPolicy.CORS_ALLOW_ALL_ORIGINS,
cache_policy=aws_cloudfront.CachePolicy.CACHING_OPTIMIZED,
allowed_methods=aws_cloudfront.AllowedMethods.ALLOW_ALL
)
)

self.s3_bucket_project = aws_s3.Bucket(self, "PortalInterno_Project_Photo_S3_Bucket",
versioned=True,
block_public_access=aws_s3.BlockPublicAccess.BLOCK_ALL,
event_bridge_enabled=False,
cors=[aws_s3.CorsRule(
allowed_methods=[
aws_s3.HttpMethods.GET, aws_s3.HttpMethods.PUT, aws_s3.HttpMethods.POST],
allowed_origins=["*"],
allowed_headers=["*"],
max_age=3000
)],
removal_policy=REMOVAL_POLICY
)
self.s3_bucket_project = aws_s3.Bucket(
self,
"PortalInterno_Project_Photo_S3_Bucket",
versioned=True,
block_public_access=aws_s3.BlockPublicAccess.BLOCK_ALL,
event_bridge_enabled=False,
cors=[aws_s3.CorsRule(
allowed_methods=[
aws_s3.HttpMethods.GET, aws_s3.HttpMethods.PUT, aws_s3.HttpMethods.POST
],
allowed_origins=["*"],
allowed_headers=["*"],
max_age=3000
)],
removal_policy=REMOVAL_POLICY
)

oai = aws_cloudfront.OriginAccessIdentity(self, "PortalInterno_Project_Photo_OAI",
comment="This is PortalInterno project photo OAI")
oai = aws_cloudfront.OriginAccessIdentity(
self,
"PortalInterno_Project_Photo_OAI",
comment="This is PortalInterno project photo OAI"
)

self.s3_bucket_project.grant_read_write(oai)

self.cloudfront_distribution_project = aws_cloudfront.Distribution(self, "PortalInterno_Project_Photo_CloudFront_Distribution",
default_behavior=aws_cloudfront.BehaviorOptions(
origin=aws_cloudfront_origins.S3Origin(
self.s3_bucket_project,
origin_access_identity=oai),
origin_request_policy=aws_cloudfront.OriginRequestPolicy.CORS_S3_ORIGIN,
viewer_protocol_policy=aws_cloudfront.ViewerProtocolPolicy.REDIRECT_TO_HTTPS,
response_headers_policy=aws_cloudfront.ResponseHeadersPolicy.CORS_ALLOW_ALL_ORIGINS,
cache_policy=aws_cloudfront.CachePolicy.CACHING_OPTIMIZED,
allowed_methods=aws_cloudfront.AllowedMethods.ALLOW_ALL
)
)
self.cloudfront_distribution_project = aws_cloudfront.Distribution(
self,
"PortalInterno_Project_Photo_CloudFront_Distribution",
default_behavior=aws_cloudfront.BehaviorOptions(
origin=aws_cloudfront_origins.S3Origin(
self.s3_bucket_project,
origin_access_identity=oai
),
origin_request_policy=aws_cloudfront.OriginRequestPolicy.CORS_S3_ORIGIN,
viewer_protocol_policy=aws_cloudfront.ViewerProtocolPolicy.REDIRECT_TO_HTTPS,
response_headers_policy=aws_cloudfront.ResponseHeadersPolicy.CORS_ALLOW_ALL_ORIGINS,
cache_policy=aws_cloudfront.CachePolicy.CACHING_OPTIMIZED,
allowed_methods=aws_cloudfront.AllowedMethods.ALLOW_ALL
)
)

self.s3_bucket_member_report = aws_s3.Bucket(self, "PortalInterno_Member_Report_S3_Bucket",
versioned=True,
block_public_access=aws_s3.BlockPublicAccess.BLOCK_ALL,
event_bridge_enabled=False,
cors=[aws_s3.CorsRule(
allowed_methods=[
aws_s3.HttpMethods.GET, aws_s3.HttpMethods.PUT, aws_s3.HttpMethods.POST],
allowed_origins=["*"],
allowed_headers=["*"],
max_age=3000
)],
removal_policy=REMOVAL_POLICY
)
self.s3_bucket_member_report = aws_s3.Bucket(
self,
"PortalInterno_Member_Report_S3_Bucket",
versioned=True,
block_public_access=aws_s3.BlockPublicAccess.BLOCK_ALL,
event_bridge_enabled=False,
cors=[aws_s3.CorsRule(
allowed_methods=[
aws_s3.HttpMethods.GET, aws_s3.HttpMethods.PUT, aws_s3.HttpMethods.POST
],
allowed_origins=["*"],
allowed_headers=["*"],
max_age=3000
)],
removal_policy=REMOVAL_POLICY
)

self.cloudfront_distribution_member_report = aws_cloudfront.Distribution(self, "PortalInterno_Member_Report_CloudFront_Distribution",
default_behavior=aws_cloudfront.BehaviorOptions(
origin=aws_cloudfront_origins.S3Origin(
self.s3_bucket_member_report,
origin_access_identity=oai),
origin_request_policy=aws_cloudfront.OriginRequestPolicy.CORS_S3_ORIGIN,
viewer_protocol_policy=aws_cloudfront.ViewerProtocolPolicy.REDIRECT_TO_HTTPS,
response_headers_policy=aws_cloudfront.ResponseHeadersPolicy.CORS_ALLOW_ALL_ORIGINS,
cache_policy=aws_cloudfront.CachePolicy.CACHING_OPTIMIZED,
allowed_methods=aws_cloudfront.AllowedMethods.ALLOW_ALL
)
)
self.cloudfront_distribution_member_report = aws_cloudfront.Distribution(
self,
"PortalInterno_Member_Report_CloudFront_Distribution",
default_behavior=aws_cloudfront.BehaviorOptions(
origin=aws_cloudfront_origins.S3Origin(
self.s3_bucket_member_report,
origin_access_identity=oai
),
origin_request_policy=aws_cloudfront.OriginRequestPolicy.CORS_S3_ORIGIN,
viewer_protocol_policy=aws_cloudfront.ViewerProtocolPolicy.REDIRECT_TO_HTTPS,
response_headers_policy=aws_cloudfront.ResponseHeadersPolicy.CORS_ALLOW_ALL_ORIGINS,
cache_policy=aws_cloudfront.CachePolicy.CACHING_OPTIMIZED,
allowed_methods=aws_cloudfront.AllowedMethods.ALLOW_ALL
)
)

self.s3_bucket_dev_policy_documents= aws_s3.Bucket(
self,
"PortalInterno_Dev_Policy_Documents_S3_Bucket",
versioned= True,
block_public_access= aws_s3.BlockPublicAccess.BLOCK_ALL,
event_bridge_enabled=False,
cors=[aws_s3.CorsRule(
allowed_methods=[aws_s3.HttpMethods.GET, aws_s3.HttpMethods.PUT, aws_s3.HttpMethods.POST],
allowed_origins=["*"],
allowed_headers=["*"],
max_age=3000
)],
removal_policy= REMOVAL_POLICY
)

oai=aws_cloudfront.OriginAccessIdentity(
self,
"PortalInterno_Dev_Policy_Documents_OAI",
comment= "This is Portal interno dev policy documents OAI"
)

self.s3_bucket_dev_policy_documents.grant_read_write(oai)

self.cloudfront_distribution_dev_policy_documents= aws_cloudfront.Distribution(
self,
"PortalInterno_Dev_Policy_Documents_CloudFront_Distribution",
default_behavior=aws_cloudfront.BehaviorOptions(
origin=aws_cloudfront_origins.S3Origin(
self.s3_bucket_dev_policy_documents,
origin_access_identity=oai
),
origin_request_policy=aws_cloudfront.OriginRequestPolicy.CORS_S3_ORIGIN,
viewer_protocol_policy=aws_cloudfront.ViewerProtocolPolicy.REDIRECT_TO_HTTPS,
response_headers_policy=aws_cloudfront.ResponseHeadersPolicy.CORS_ALLOW_ALL_ORIGINS,
cache_policy=aws_cloudfront.CachePolicy.CACHING_OPTIMIZED,
allowed_methods=aws_cloudfront.AllowedMethods.ALLOW_ALL
)
)
25 changes: 15 additions & 10 deletions iac/iac/iac_stack.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,16 +23,19 @@ def __init__(self, scope: Construct, construct_id: str, **kwargs) -> None:
self.github_ref_name = os.environ.get("GITHUB_REF_NAME")
self.aws_region = os.environ.get("AWS_REGION")

self.rest_api = RestApi(self, "PortalInterno_RestApi",
rest_api_name="PortalInterno_RestApi",
description="This is the Portal Interno RestApi",
default_cors_preflight_options=
{
"allow_origins": Cors.ALL_ORIGINS,
"allow_methods": ["GET", "POST", "PUT", "DELETE", "OPTIONS"],
"allow_headers": ["*"]
},
)
self.rest_api = RestApi(
self, "PortalInterno_RestApi",
rest_api_name="PortalInterno_RestApi",
description="This is the Portal Interno RestApi",
default_cors_preflight_options={
"allow_origins": Cors.ALL_ORIGINS,
"allow_methods": ["GET", "POST", "PUT", "DELETE", "OPTIONS"],
"allow_headers": ["*"]
},
deploy_options={
"stage_name": self.github_ref_name.lower()
}
)

api_gateway_resource = self.rest_api.root.add_resource("mss-action", default_cors_preflight_options=
{
Expand Down Expand Up @@ -70,6 +73,8 @@ def __init__(self, scope: Construct, construct_id: str, **kwargs) -> None:
"CLOUD_FRONT_DISTRIBUTION_DOMAIN_ASSETS_PROJECT": self.bucket_stack.cloudfront_distribution_project.domain_name,
"S3_BUCKET_NAME_MEMBER_REPORT": self.bucket_stack.s3_bucket_member_report.bucket_name,
"CLOUD_FRONT_DISTRIBUTION_DOMAIN_ASSETS_MEMBER_REPORT": self.bucket_stack.cloudfront_distribution_member_report.domain_name,
"S3_BUCKET_NAME_DEV_POLICY_DOCUMENTS": self.bucket_stack.s3_bucket_dev_policy_documents.bucket_name,
"CLOUD_FRONT_DISTRIBUTION_DOMAIN_ASSETS_DEV_POLICY_DOCUMENTS": self.bucket_stack.cloudfront_distribution_dev_policy_documents.domain_name,
"COGNITO_USER_POOL_ID": self.cognito_stack.user_pool.user_pool_id,
"COGNITO_CLIENT_ID": self.cognito_stack.client.user_pool_client_id,
"MSS_NAME": os.environ.get("MSS_NAME", "port_mss_action"),
Expand Down
18 changes: 12 additions & 6 deletions src/modules/get_all_members/app/get_all_members_usecase.py
Original file line number Diff line number Diff line change
Expand Up @@ -67,16 +67,22 @@ def __call__(self,user_id: str, start_date: Optional[int] = None, end_date: Opti
projects = self.actionrepo.get_all_projects()

member_projects = {member.user_id: [] for member in members}

for project in projects:
project_name = project.name
for member_user_id in project.members_user_ids:
if member_user_id in member_projects:
member_projects[member_user_id].append(project_name)

for member in members:
member_user_id = member.user_id

member_list_strikes = self.strikerepo.get_strike_by_target_id(target_user_id=member_user_id)
if member_list_strikes:
member_list_strike_this_sem = [
s for s in member_list_strikes
if start_date <= s.occurred_date <= end_date
]
member_list_strikes = self.strikerepo.get_strike_by_target_id(target_user_id=member_user_id) or []

member_list_strike_this_sem = [
s for s in member_list_strikes
if start_date <= s.occurred_date <= end_date
]

total_projects= len(member_projects[member_user_id])

Expand Down
Loading
Loading