| 107 | |
| 108 | |
| 109 | class Share_Project(): |
| 110 | |
| 111 | def __init__( |
| 112 | self, |
| 113 | session, |
| 114 | member, |
| 115 | member_list, # for existing members only? |
| 116 | mode, # NEW , REMOVE |
| 117 | project, |
| 118 | user_dict, # "NEW" user dict |
| 119 | notify = False |
| 120 | ): |
| 121 | |
| 122 | """ |
| 123 | |
| 124 | user_dict of form: |
| 125 | {'email': str}, |
| 126 | {'permission_type': str}, |
| 127 | {'note': None} |
| 128 | |
| 129 | Assumption is that member_list, or user_dict can be None based on the mode |
| 130 | And then the new() or remove() etc method will check if the dict it needs exists |
| 131 | """ |
| 132 | |
| 133 | self.session = session |
| 134 | self.member = member |
| 135 | self.mode = mode |
| 136 | self.log = regular_log.default() |
| 137 | self.mode = mode |
| 138 | self.project_string_id = project.project_string_id # Convenience since it's used a lot |
| 139 | self.project = project |
| 140 | self.member_list_untrusted = member_list |
| 141 | self.member_list = [] |
| 142 | self.user_dict = user_dict |
| 143 | self.notify = notify |
| 144 | |
| 145 | def main(self): |
| 146 | if self.mode == "NEW": |
| 147 | self.new() |
| 148 | |
| 149 | if log_has_error(self.log): |
| 150 | return |
| 151 | |
| 152 | # Could add "update" here in future... |
| 153 | if self.mode in ["REMOVE"]: |
| 154 | self.verify_member_list_untrusted() |
| 155 | |
| 156 | for member in self.member_list: |
| 157 | |
| 158 | self.member_to_modify = member |
| 159 | |
| 160 | if self.mode == "REMOVE": |
| 161 | self.remove() |
| 162 | |
| 163 | if log_has_error(self.log): |
| 164 | return |
| 165 | |
| 166 | if len(self.log["error"].keys()) == 0: |
no outgoing calls
no test coverage detected