Skip to content

Commit fef2ac3

Browse files
Merge branch 'dev' into lukaszgryglicki-update-gitignore
2 parents 1d107c8 + f7fa410 commit fef2ac3

File tree

7 files changed

+108
-86
lines changed

7 files changed

+108
-86
lines changed

cla-backend-go/cla_manager/service.go

Lines changed: 56 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ type IService interface {
3939
PendingRequest(companyID, claGroupID, requestID string) (*models.ClaManagerRequest, error)
4040
DeleteRequest(requestID string) error
4141

42-
AddClaManager(ctx context.Context, authUser *auth.User, companyID string, claGroupID string, LFID string, projectSFName string) (*models.Signature, error)
42+
AddClaManager(ctx context.Context, authUser *auth.User, companyID string, claGroupID string, LFID string, projectSFID string) (*models.Signature, error)
4343
RemoveClaManager(ctx context.Context, authUser *auth.User, companyID string, claGroupID string, LFID string, projectSFName string) (*models.Signature, error)
4444
}
4545

@@ -193,17 +193,17 @@ func (s service) DeleteRequest(requestID string) error {
193193
}
194194

195195
// AddClaManager Adds LFID to Signature Access Control list
196-
func (s service) AddClaManager(ctx context.Context, authUser *auth.User, companyID string, claGroupID string, LFID string, projectSFName string) (*models.Signature, error) {
196+
func (s service) AddClaManager(ctx context.Context, authUser *auth.User, companyID string, claGroupID string, LFID string, projectSFID string) (*models.Signature, error) {
197197

198198
f := logrus.Fields{
199199
"functionName": "v1.cla_manager.AddClaManager",
200200
utils.XREQUESTID: ctx.Value(utils.XREQUESTID),
201201
"companyID": companyID,
202202
"claGroupID": claGroupID,
203203
"LFID": LFID,
204-
"projectName": projectSFName,
204+
"projectSFID": projectSFID,
205205
}
206-
206+
var projectSFName string
207207
userModel, userErr := s.usersService.GetUserByLFUserName(LFID)
208208
if userErr != nil || userModel == nil {
209209
return nil, userErr
@@ -218,11 +218,6 @@ func (s service) AddClaManager(ctx context.Context, authUser *auth.User, company
218218
return nil, projectErr
219219
}
220220

221-
// if projectSFName is empty, we can set clagroup project name.
222-
if projectSFName == "" {
223-
projectSFName = claGroupModel.ProjectName
224-
}
225-
226221
// Look up signature ACL to ensure the user can add cla manager
227222

228223
signed := true
@@ -258,16 +253,17 @@ func (s service) AddClaManager(ctx context.Context, authUser *auth.User, company
258253
RecipientAddress: manager.LfEmail.String(),
259254
CompanyName: companyModel.CompanyName,
260255
},
261-
Name: userModel.Username,
262-
Email: userModel.LfEmail.String(),
256+
Name: userModel.Username,
257+
Email: userModel.LfEmail.String(),
258+
ProjectSFID: projectSFID,
263259
}, claGroupModel)
264260
}
265261
// Notify the added user
266262
s.sendClaManagerAddedEmailToUser(s.emailTemplateService, emails.CommonEmailParams{
267263
RecipientName: userModel.Username,
268264
RecipientAddress: userModel.LfEmail.String(),
269265
CompanyName: companyModel.CompanyName,
270-
}, claGroupModel)
266+
}, claGroupModel, projectSFID)
271267

272268
// Send an event
273269
s.eventsService.LogEventWithContext(ctx, &events.LogEventArgs{
@@ -317,7 +313,7 @@ func (s service) getCompanySignature(ctx context.Context, companyID string, claG
317313
}
318314

319315
// RemoveClaManager removes lfid from signature acl with given company and project
320-
func (s service) RemoveClaManager(ctx context.Context, authUser *auth.User, companyID string, claGroupID string, LFID string, projectSFName string) (*models.Signature, error) {
316+
func (s service) RemoveClaManager(ctx context.Context, authUser *auth.User, companyID string, claGroupID string, LFID string, projectSFID string) (*models.Signature, error) {
321317

322318
f := logrus.Fields{
323319
"functionName": "v1.cla_manager.RemoveClaManager",
@@ -327,6 +323,7 @@ func (s service) RemoveClaManager(ctx context.Context, authUser *auth.User, comp
327323
"companyID": companyID,
328324
}
329325

326+
var projectSFName string
330327
userModel, userErr := s.usersService.GetUserByLFUserName(LFID)
331328
if userErr != nil || userModel == nil {
332329
return nil, userErr
@@ -341,11 +338,6 @@ func (s service) RemoveClaManager(ctx context.Context, authUser *auth.User, comp
341338
return nil, projectErr
342339
}
343340

344-
// if projectSFName is empty, we can set clagroup project name.
345-
if projectSFName == "" {
346-
projectSFName = claGroupModel.ProjectName
347-
}
348-
349341
signed := true
350342
approved := true
351343
sigModel, sigErr := s.sigService.GetProjectCompanySignature(ctx, companyID, claGroupID, &signed, &approved, nil, aws.Int64(5))
@@ -420,50 +412,56 @@ func (s service) RemoveClaManager(ctx context.Context, authUser *auth.User, comp
420412

421413
type ProjectDetails struct {
422414
ProjectName string
423-
ProjectSFID string
415+
ProjectSFID []string
424416
}
425417

426-
func (s service) getProjectDetails(ctx context.Context, claGroupModel *models.ClaGroup) ProjectDetails {
427-
f := logrus.Fields{
428-
"functionName": "v1.cla_manager.getProjectDetails",
429-
utils.XREQUESTID: ctx.Value(utils.XREQUESTID),
430-
"claGroupID": claGroupModel.ProjectID,
431-
}
418+
// func (s service) getProjectDetails(ctx context.Context, claGroupModel *models.ClaGroup) ProjectDetails {
419+
// f := logrus.Fields{
420+
// "functionName": "v1.cla_manager.getProjectDetails",
421+
// utils.XREQUESTID: ctx.Value(utils.XREQUESTID),
422+
// "claGroupID": claGroupModel.ProjectID,
423+
// }
424+
// projectSFIDs := make([]string, 0)
432425

433-
projectDetails := ProjectDetails{
434-
ProjectName: claGroupModel.ProjectName,
435-
ProjectSFID: claGroupModel.ProjectExternalID,
436-
}
437-
signedAtFoundation := false
426+
// projectDetails := ProjectDetails{
427+
// ProjectName: claGroupModel.ProjectName,
428+
// }
429+
// signedAtFoundation := false
430+
// var err error
438431

439-
pcg, err := s.projectClaRepository.GetCLAGroup(ctx, claGroupModel.ProjectID)
440-
if err != nil {
441-
log.WithFields(f).Warnf("unable to fetch project cla group by project id: %s, error: %+v", claGroupModel.ProjectID, err)
442-
}
432+
// pcg, pcgErr := s.projectClaRepository.GetCLAGroup(ctx, claGroupModel.ProjectID)
433+
// if pcgErr != nil {
434+
// log.WithFields(f).WithError(err).Debug("unable too get pcg record")
435+
// }
443436

444-
// check if cla group is signed at foundation level
445-
if pcg != nil && pcg.FoundationSFID != "" {
446-
signedAtFoundation, err = s.projectClaRepository.IsExistingFoundationLevelCLAGroup(ctx, pcg.FoundationSFID)
447-
if err != nil {
448-
log.WithFields(f).Warnf("unable to fetch foundation level cla group by foundation id: %s, error: %+v", pcg.FoundationSFID, err)
449-
}
437+
// signedAtFoundation, err = s.projectClaRepository.SignedAtFoundation(ctx, claGroupModel.ProjectID)
438+
// if err != nil {
439+
// log.WithFields(f).WithError(err).Debug("unable to get status of cla signed at foundation")
440+
// }
450441

451-
if signedAtFoundation {
452-
log.WithFields(f).Debugf("cla group is signed at foundation level...")
453-
projectDetails.ProjectName = pcg.FoundationName
454-
projectDetails.ProjectSFID = pcg.FoundationSFID
455-
}
456-
}
442+
// if signedAtFoundation && pcg != nil && err != nil {
443+
// log.WithFields(f).Debug("cla group is signed at foundation level...")
444+
// projectDetails.ProjectName = pcg.FoundationName
445+
// projectSFIDs = append(projectSFIDs, pcg.FoundationSFID)
457446

458-
return projectDetails
459-
}
447+
// } else {
448+
// log.WithFields(f).Debug("cla group is signed at project level ...")
449+
450+
// }
460451

461-
func (s service) sendClaManagerAddedEmailToUser(emailSvc emails.EmailTemplateService, emailParams emails.CommonEmailParams, claGroupModel *models.ClaGroup) {
462-
projectDetails := s.getProjectDetails(context.Background(), claGroupModel)
463-
projectName := projectDetails.ProjectName
464-
projectSFID := projectDetails.ProjectSFID
452+
// projectDetails.ProjectSFID = projectSFIDs
453+
454+
// return projectDetails
455+
// }
456+
457+
func (s service) sendClaManagerAddedEmailToUser(emailSvc emails.EmailTemplateService, emailParams emails.CommonEmailParams, claGroupModel *models.ClaGroup, projectSFID string) {
458+
f := logrus.Fields{
459+
"functionName": "sendClaManagerAddedEmailToUser",
460+
"projectSFID": projectSFID,
461+
}
462+
log.WithFields(f).Info("Sending email to user")
465463
// subject string, body string, recipients []string
466-
subject := fmt.Sprintf("EasyCLA: Added as CLA Manager for Project :%s", projectName)
464+
subject := fmt.Sprintf("EasyCLA: Added as CLA Manager for Project :%s", claGroupModel.ProjectName)
467465
recipients := []string{emailParams.RecipientAddress}
468466
body, err := emails.RenderClaManagerAddedEToUserTemplate(emailSvc, claGroupModel.Version, projectSFID, emails.ClaManagerAddedEToUserTemplateParams{
469467
CommonEmailParams: emailParams,
@@ -553,10 +551,12 @@ func sendRemovedClaManagerEmailToRecipient(emailSvc emails.EmailTemplateService,
553551
body, err := emails.RenderRemovedCLAManagerTemplate(
554552
emailSvc,
555553
claGroupModel.Version,
556-
claGroupModel.ProjectExternalID,
557554
emails.RemovedCLAManagerTemplateParams{
558555
CommonEmailParams: emailParams,
559556
CLAManagers: emailCLAManagerParams,
557+
CLAGroupTemplateParams: emails.CLAGroupTemplateParams{
558+
CLAGroupName: projectName,
559+
},
560560
})
561561

562562
if err != nil {
@@ -573,14 +573,11 @@ func sendRemovedClaManagerEmailToRecipient(emailSvc emails.EmailTemplateService,
573573
}
574574

575575
func (s service) sendClaManagerDeleteEmailToCLAManagers(emailSvc emails.EmailTemplateService, emailParams emails.ClaManagerDeletedToCLAManagersTemplateParams, claGroupModel *models.ClaGroup) {
576-
projectDetails := s.getProjectDetails(context.Background(), claGroupModel)
577-
projectName := projectDetails.ProjectName
578-
projectSFID := projectDetails.ProjectSFID
579576

580577
// subject string, body string, recipients []string
581-
subject := fmt.Sprintf("EasyCLA: CLA Manager Removed Notice for %s", projectName)
578+
subject := fmt.Sprintf("EasyCLA: CLA Manager Removed Notice for %s", claGroupModel.ProjectName)
582579
recipients := []string{emailParams.RecipientAddress}
583-
body, err := emails.RenderClaManagerDeletedToCLAManagersTemplate(emailSvc, claGroupModel.Version, projectSFID, emailParams)
580+
body, err := emails.RenderClaManagerDeletedToCLAManagersTemplate(emailSvc, claGroupModel.Version, claGroupModel.ProjectName)
584581

585582
if err != nil {
586583
log.Warnf("email template render : %s failed : %v", emails.ClaManagerDeletedToCLAManagersTemplateName, err)

cla-backend-go/emails/cla_manager_templates.go

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ const (
1616
// RemovedCLAManagerTemplate includes the email template for email when user is removed as CLA Manager
1717
RemovedCLAManagerTemplate = `
1818
<p>Hello {{.RecipientName}},</p>
19-
<p>This is a notification email from EasyCLA regarding the project {{.GetProjectNameOrFoundation}} and CLA Group {{.CLAGroupName}}.</p>
20-
<p>You have been removed as a CLA Manager from {{.CompanyName}} for the project {{.Project.ExternalProjectName}}.</p>
19+
<p>This is a notification email from EasyCLA regarding the CLA Group {{.CLAGroupName}}.</p>
20+
<p>You have been removed as a CLA Manager from {{.CompanyName}} for the CLA Group {{.CLAGroupName}}.</p>
2121
<p>If you have further questions about this, please contact one of the existing managers from
2222
{{.CompanyName}}:</p>
2323
<ul>
@@ -29,13 +29,7 @@ const (
2929
)
3030

3131
// RenderRemovedCLAManagerTemplate renders the RemovedCLAManagerTemplate
32-
func RenderRemovedCLAManagerTemplate(svc EmailTemplateService, claGroupModelVersion, projectSFID string, params RemovedCLAManagerTemplateParams) (string, error) {
33-
claGroupParams, err := svc.GetCLAGroupTemplateParamsFromProjectSFID(claGroupModelVersion, projectSFID)
34-
if err != nil {
35-
return "", err
36-
}
37-
params.CLAGroupTemplateParams = claGroupParams
38-
32+
func RenderRemovedCLAManagerTemplate(svc EmailTemplateService, claGroupModelVersion string, params RemovedCLAManagerTemplateParams) (string, error) {
3933
return RenderTemplate(claGroupModelVersion, RemovedCLAManagerTemplateName, RemovedCLAManagerTemplate, params)
4034
}
4135

@@ -242,8 +236,9 @@ func RenderClaManagerAddedEToUserTemplate(svc EmailTemplateService, claGroupMode
242236
type ClaManagerAddedToCLAManagersTemplateParams struct {
243237
CommonEmailParams
244238
CLAGroupTemplateParams
245-
Name string
246-
Email string
239+
Name string
240+
Email string
241+
ProjectSFID string
247242
}
248243

249244
const (
@@ -293,12 +288,11 @@ const (
293288
)
294289

295290
// RenderClaManagerDeletedToCLAManagersTemplate renders the RemovedCLAManagerTemplate
296-
func RenderClaManagerDeletedToCLAManagersTemplate(svc EmailTemplateService, claGroupModelVersion, projectSFID string, params ClaManagerDeletedToCLAManagersTemplateParams) (string, error) {
297-
claGroupParams, err := svc.GetCLAGroupTemplateParamsFromProjectSFID(claGroupModelVersion, projectSFID)
298-
if err != nil {
299-
return "", err
291+
func RenderClaManagerDeletedToCLAManagersTemplate(svc EmailTemplateService, claGroupModelVersion, claGroupName string) (string, error) {
292+
293+
params := CLAGroupTemplateParams{
294+
CLAGroupName: claGroupName,
300295
}
301-
params.CLAGroupTemplateParams = claGroupParams
302296

303297
return RenderTemplate(claGroupModelVersion, ClaManagerDeletedToCLAManagersTemplateName, ClaManagerDeletedToCLAManagersTemplate, params)
304298
}

cla-backend-go/emails/cla_manager_templates_test.go

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ func TestRemovedCLAManagerTemplate(t *testing.T) {
3030
params)
3131
assert.NoError(t, err)
3232
assert.Contains(t, result, "Hello JohnsClaManager")
33-
assert.Contains(t, result, "regarding the project JohnsProject")
34-
assert.Contains(t, result, "CLA Manager from JohnsCompany for the project JohnsProject")
33+
assert.Contains(t, result, "regarding the CLA Group JohnsProject")
34+
assert.Contains(t, result, "CLA Manager from JohnsCompany for the CLA Group JohnsProject")
3535
assert.Contains(t, result, "<li>LFUserName LFEmail</li>")
3636

3737
// even if the foundation is set we should show the project name
@@ -41,15 +41,8 @@ func TestRemovedCLAManagerTemplate(t *testing.T) {
4141
params)
4242
assert.NoError(t, err)
4343
assert.Contains(t, result, "Hello JohnsClaManager")
44-
assert.Contains(t, result, "for the project JohnsProject")
44+
assert.Contains(t, result, "for the CLA Group JohnsProject")
4545

46-
// then we increase the child project count so we should get the FoundationName instead of project name
47-
params.ChildProjectCount = 2
48-
result, err = RenderTemplate(utils.V1, RemovedCLAManagerTemplateName, RemovedCLAManagerTemplate,
49-
params)
50-
assert.NoError(t, err)
51-
assert.Contains(t, result, "Hello JohnsClaManager")
52-
assert.Contains(t, result, "regarding the project CNCF")
5346
}
5447

5548
func TestRequestAccessToCLAManagersTemplate(t *testing.T) {

cla-backend-go/emails/prefill.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,8 @@ func (s *emailTemplateServiceProvider) PrefillV2CLAProjectParams(projectSFIDs []
8989
claProjectParams = append(claProjectParams, params)
9090
}
9191

92+
log.Debugf("claProjectParams: %+v", claProjectParams)
93+
9294
return claProjectParams, nil
9395
}
9496

cla-backend-go/projects_cla_groups/mocks/mock_repository.go

Lines changed: 15 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cla-backend-go/projects_cla_groups/repository.go

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ type Repository interface {
5656
IsAssociated(ctx context.Context, projectSFID string, claGroupID string) (bool, error)
5757
UpdateRepositoriesCount(ctx context.Context, projectSFID string, diff int64, reset bool) error
5858
UpdateClaGroupName(ctx context.Context, projectSFID string, claGroupName string) error
59+
SignedAtFoundation(ctx context.Context, claGroupID string) (bool, error)
5960
}
6061

6162
type repo struct {
@@ -124,6 +125,26 @@ func (repo *repo) queryClaGroupsProjects(ctx context.Context, keyCondition expre
124125
return projectClaGroups, nil
125126
}
126127

128+
func (repo *repo) SignedAtFoundation(ctx context.Context, claGroupID string) (bool, error) {
129+
f := logrus.Fields{
130+
"functionName": "SignedAtFoundation",
131+
"claGroupID": claGroupID,
132+
}
133+
pcgs, err := repo.GetProjectsIdsForClaGroup(ctx, claGroupID)
134+
if err != nil {
135+
return false, err
136+
}
137+
138+
log.WithFields(f).Info("checking if claGroup is signed at foundation level..")
139+
for _, pcg := range pcgs {
140+
if pcg.FoundationSFID == pcg.ProjectSFID {
141+
return true, nil
142+
}
143+
}
144+
145+
return false, nil
146+
}
147+
127148
// GetClaGroupIDForProject retrieves the CLA Group ID for the project
128149
func (repo *repo) GetClaGroupIDForProject(ctx context.Context, projectSFID string) (*ProjectClaGroup, error) {
129150
f := logrus.Fields{

cla-backend-go/v2/cla_manager/service.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,7 @@ func (s *service) CreateCLAManager(ctx context.Context, authUser *auth.User, cla
239239
}
240240

241241
// Add CLA Manager to Database
242-
signature, addErr := s.managerService.AddClaManager(ctx, authUser, v1CompanyModel.CompanyID, claGroupID, user.Username, projectSF.Name)
242+
signature, addErr := s.managerService.AddClaManager(ctx, authUser, v1CompanyModel.CompanyID, claGroupID, user.Username, params.ProjectSFID)
243243
if addErr != nil {
244244
msg := buildErrorMessageCreate(params, addErr)
245245
log.WithFields(f).Warn(msg)

0 commit comments

Comments
 (0)