Previous version of GitlabAccountRequest view used an option one-to-one field keyed to UserIdentifier. Realized that this would mean that users who had a REJECTED request wouldn't then be able to create a new, fixed request (e.g., if a request was rejected for "need more information in comment"--the user could not then make a new, better request with more information, because the one-to-one key would reject with a DatabaseIntegrityError as there already is a GitlabAccountRequest.)
Instead, GitlabAccountRequest model has an optional ForeignKey to user. Made migrations.
CreateGitlabAccountRequestView now does the following:
1.) If user string passed in view kwargs, run validator to make sure it is a valid user_identifier pattern. If it fails, return redirect to 'user-login-error'.
2.) Else, try to retrieve that user from database. If exception-ObjectDoesNotExist, user is created, saved, and then the gitlabaccountrequest is created and saved with status pending.
3.) If the user exists, view pulls all GitlabAccountRequests and filters by user=linked_user. If len list != 0, check all requests to see if any have a pending reviewer status. If so, return a redirect to a view that explains this objects cannot be created, as the user already has a pending request. If form gets through all requests in list without redirecting, create the new gitlab account request with status of pending.
4.) If there is no user_identifier argument passed in url, just create the request without the linked_user field to user_identifier, and save as status pending.