Revision 992b81b6 snf-astakos-app/astakos/im/models.py
b/snf-astakos-app/astakos/im/models.py | ||
---|---|---|
2117 | 2117 |
} |
2118 | 2118 |
|
2119 | 2119 |
|
2120 |
class PendingMembershipError(Exception): |
|
2121 |
pass |
|
2122 |
|
|
2123 |
|
|
2124 | 2120 |
class ProjectMembershipManager(ForUpdateManager): |
2125 | 2121 |
|
2126 | 2122 |
def any_accepted(self): |
... | ... | |
2209 | 2205 |
def user_friendly_state_display(self): |
2210 | 2206 |
return self.USER_FRIENDLY_STATE_DISPLAY.get(self.state, _('Unknown')) |
2211 | 2207 |
|
2212 |
def get_combined_state(self): |
|
2213 |
return self.state, self.is_active, self.is_pending |
|
2214 |
|
|
2215 | 2208 |
class Meta: |
2216 | 2209 |
unique_together = ("person", "project") |
2217 | 2210 |
#index_together = [["project", "state"]] |
... | ... | |
2243 | 2236 |
return self.state == self.REQUESTED |
2244 | 2237 |
|
2245 | 2238 |
def accept(self): |
2246 |
if self.is_pending: |
|
2247 |
m = _("%s: attempt to accept while is pending") % (self,) |
|
2248 |
raise AssertionError(m) |
|
2249 |
|
|
2250 | 2239 |
if not self.can_accept(): |
2251 | 2240 |
m = _("%s: attempt to accept in state '%s'") % (self, self.state) |
2252 | 2241 |
raise AssertionError(m) |
... | ... | |
2255 | 2244 |
self.acceptance_date = now |
2256 | 2245 |
self._set_history_item(reason='ACCEPT', date=now) |
2257 | 2246 |
self.state = self.ACCEPTED |
2258 |
self.is_pending = True |
|
2259 | 2247 |
self.save() |
2260 | 2248 |
|
2261 | 2249 |
def can_leave(self): |
2262 | 2250 |
return self.state in self.ACCEPTED_STATES |
2263 | 2251 |
|
2264 | 2252 |
def leave_request(self): |
2265 |
if self.is_pending: |
|
2266 |
m = _("%s: attempt to request to leave while is pending") % (self,) |
|
2267 |
raise AssertionError(m) |
|
2268 |
|
|
2269 | 2253 |
if not self.can_leave(): |
2270 | 2254 |
m = _("%s: attempt to request to leave in state '%s'") % ( |
2271 | 2255 |
self, self.state) |
... | ... | |
2279 | 2263 |
return self.state == self.LEAVE_REQUESTED |
2280 | 2264 |
|
2281 | 2265 |
def leave_request_deny(self): |
2282 |
if self.is_pending: |
|
2283 |
m = _("%s: attempt to deny leave request while is pending") % ( |
|
2284 |
self,) |
|
2285 |
raise AssertionError(m) |
|
2286 |
|
|
2287 | 2266 |
if not self.can_deny_leave(): |
2288 | 2267 |
m = _("%s: attempt to deny leave request in state '%s'") % ( |
2289 | 2268 |
self, self.state) |
... | ... | |
2297 | 2276 |
return self.state == self.LEAVE_REQUESTED |
2298 | 2277 |
|
2299 | 2278 |
def leave_request_cancel(self): |
2300 |
if self.is_pending: |
|
2301 |
m = _("%s: attempt to cancel leave request while is pending") % ( |
|
2302 |
self,) |
|
2303 |
raise AssertionError(m) |
|
2304 |
|
|
2305 | 2279 |
if not self.can_cancel_leave(): |
2306 | 2280 |
m = _("%s: attempt to cancel leave request in state '%s'") % ( |
2307 | 2281 |
self, self.state) |
... | ... | |
2315 | 2289 |
return self.state in self.ACCEPTED_STATES |
2316 | 2290 |
|
2317 | 2291 |
def remove(self): |
2318 |
if self.is_pending: |
|
2319 |
m = _("%s: attempt to remove while is pending") % (self,) |
|
2320 |
raise AssertionError(m) |
|
2321 |
|
|
2322 | 2292 |
if not self.can_remove(): |
2323 | 2293 |
m = _("%s: attempt to remove in state '%s'") % (self, self.state) |
2324 | 2294 |
raise AssertionError(m) |
2325 | 2295 |
|
2326 | 2296 |
self._set_history_item(reason='REMOVE') |
2327 | 2297 |
self.state = self.REMOVED |
2328 |
self.is_pending = True |
|
2329 | 2298 |
self.save() |
2330 | 2299 |
|
2331 | 2300 |
def can_reject(self): |
2332 | 2301 |
return self.state == self.REQUESTED |
2333 | 2302 |
|
2334 | 2303 |
def reject(self): |
2335 |
if self.is_pending: |
|
2336 |
m = _("%s: attempt to reject while is pending") % (self,) |
|
2337 |
raise AssertionError(m) |
|
2338 |
|
|
2339 | 2304 |
if not self.can_reject(): |
2340 | 2305 |
m = _("%s: attempt to reject in state '%s'") % (self, self.state) |
2341 | 2306 |
raise AssertionError(m) |
... | ... | |
2349 | 2314 |
return self.state == self.REQUESTED |
2350 | 2315 |
|
2351 | 2316 |
def cancel(self): |
2352 |
if self.is_pending: |
|
2353 |
m = _("%s: attempt to cancel while is pending") % (self,) |
|
2354 |
raise AssertionError(m) |
|
2355 |
|
|
2356 | 2317 |
if not self.can_cancel(): |
2357 | 2318 |
m = _("%s: attempt to cancel in state '%s'") % (self, self.state) |
2358 | 2319 |
raise AssertionError(m) |
Also available in: Unified diff