FederationOfTech / Coalesce

An open source volunteer management platform from the Federation of Humanitarian Technologists
GNU Affero General Public License v3.0
13 stars 13 forks source link

Create an Application REST API #73

Open stefanha opened 2 years ago

stefanha commented 2 years ago

Add an Application REST API that stores the details of a Volunteer applying for an Opportunity. The basic requirement is that a Volunteer can create an Application for an Opportunity. Additional fields that would be useful:

The REST API should be available at /applications:

Feel free to split this up into multiple issues.

MennaTullahTaha commented 2 years ago
Traceback (most recent call last):
  File "/home/menna/.local/lib/python3.9/site-packages/django/core/management/base.py", line 354, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/home/menna/.local/lib/python3.9/site-packages/django/core/management/base.py", line 393, in execute
    self.check()
  File "/home/menna/.local/lib/python3.9/site-packages/django/core/management/base.py", line 419, in check
    all_issues = checks.run_checks(
  File "/home/menna/.local/lib/python3.9/site-packages/django/core/checks/registry.py", line 76, in run_checks
    new_errors = check(app_configs=app_configs, databases=databases)
  File "/home/menna/.local/lib/python3.9/site-packages/django/core/checks/urls.py", line 100, in check_url_settings
    value = getattr(settings, name)
  File "/home/menna/.local/lib/python3.9/site-packages/django/conf/__init__.py", line 82, in __getattr__
    self._setup(name)
  File "/home/menna/.local/lib/python3.9/site-packages/django/conf/__init__.py", line 69, in _setup
    self._wrapped = Settings(settings_module)
  File "/home/menna/.local/lib/python3.9/site-packages/django/conf/__init__.py", line 170, in __init__
    mod = importlib.import_module(self.SETTINGS_MODULE)
  File "/usr/lib/python3.9/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 664, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 627, in _load_backward_compatible
  File "/usr/local/lib/python3.9/dist-packages/configurations/importer.py", line 153, in load_module
    mod = imp.load_module(fullname, *self.location)
  File "/usr/lib/python3.9/imp.py", line 244, in load_module
    return load_package(name, filename)
  File "/usr/lib/python3.9/imp.py", line 216, in load_package
    return _load(spec)
  File "<frozen importlib._bootstrap>", line 711, in _load
  File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 850, in exec_module
  File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
  File "/home/menna/Documents/hackathon project/Coalesce/coalesce/config/__init__.py", line 1, in <module>
    from .local import Local  # noqa
  File "/home/menna/Documents/hackathon project/Coalesce/coalesce/config/local.py", line 2, in <module>
    from .common import Common
  File "/home/menna/Documents/hackathon project/Coalesce/coalesce/config/common.py", line 4, in <module>
    import dj_database_url
ModuleNotFoundError: No module named 'dj_database_url'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/menna/Documents/hackathon project/Coalesce/manage.py", line 30, in <module>
    main()
  File "/home/menna/Documents/hackathon project/Coalesce/manage.py", line 26, in main
    execute_from_command_line(sys.argv)
  File "/home/menna/.local/lib/python3.9/site-packages/django/core/management/__init__.py", line 419, in execute_from_command_line
    utility.execute()
  File "/home/menna/.local/lib/python3.9/site-packages/django/core/management/__init__.py", line 413, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/home/menna/.local/lib/python3.9/site-packages/django/core/management/base.py", line 367, in run_from_argv
    connections.close_all()
  File "/home/menna/.local/lib/python3.9/site-packages/django/db/utils.py", line 208, in close_all
    for alias in self:
  File "/home/menna/.local/lib/python3.9/site-packages/django/utils/connection.py", line 73, in __iter__
    return iter(self.settings)
  File "/home/menna/.local/lib/python3.9/site-packages/django/utils/functional.py", line 48, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "/home/menna/.local/lib/python3.9/site-packages/django/utils/connection.py", line 45, in settings
    self._settings = self.configure_settings(self._settings)
  File "/home/menna/.local/lib/python3.9/site-packages/django/db/utils.py", line 144, in configure_settings
    databases = super().configure_settings(databases)
  File "/home/menna/.local/lib/python3.9/site-packages/django/utils/connection.py", line 50, in configure_settings
    settings = getattr(django_settings, self.settings_name)
  File "/home/menna/.local/lib/python3.9/site-packages/django/conf/__init__.py", line 82, in __getattr__
    self._setup(name)
  File "/home/menna/.local/lib/python3.9/site-packages/django/conf/__init__.py", line 69, in _setup
    self._wrapped = Settings(settings_module)
  File "/home/menna/.local/lib/python3.9/site-packages/django/conf/__init__.py", line 170, in __init__
    mod = importlib.import_module(self.SETTINGS_MODULE)
  File "/usr/lib/python3.9/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 664, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 627, in _load_backward_compatible
  File "/usr/local/lib/python3.9/dist-packages/configurations/importer.py", line 153, in load_module
    mod = imp.load_module(fullname, *self.location)
  File "/usr/lib/python3.9/imp.py", line 244, in load_module
    return load_package(name, filename)
  File "/usr/lib/python3.9/imp.py", line 216, in load_package
    return _load(spec)
  File "<frozen importlib._bootstrap>", line 711, in _load
  File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 850, in exec_module
  File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
  File "/home/menna/Documents/hackathon project/Coalesce/coalesce/config/__init__.py", line 1, in <module>
    from .local import Local  # noqa
  File "/home/menna/Documents/hackathon project/Coalesce/coalesce/config/local.py", line 2, in <module>
    from .common import Common
  File "/home/menna/Documents/hackathon project/Coalesce/coalesce/config/common.py", line 4, in <module>
    import dj_database_url
ModuleNotFoundError: No module named 'dj_database_url'
menna@MennasRazer:~/Documents/hackathon project/Coalesce$ python3 manage.py makemigrations
Traceback (most recent call last):
  File "/home/menna/Documents/hackathon project/Coalesce/manage.py", line 30, in <module>
    main()
  File "/home/menna/Documents/hackathon project/Coalesce/manage.py", line 26, in main
    execute_from_command_line(sys.argv)
  File "/home/menna/.local/lib/python3.9/site-packages/django/core/management/__init__.py", line 419, in execute_from_command_line
    utility.execute()
  File "/home/menna/.local/lib/python3.9/site-packages/django/core/management/__init__.py", line 395, in execute
    django.setup()
  File "/home/menna/.local/lib/python3.9/site-packages/django/__init__.py", line 24, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/home/menna/.local/lib/python3.9/site-packages/django/apps/registry.py", line 91, in populate
    app_config = AppConfig.create(entry)
  File "/home/menna/.local/lib/python3.9/site-packages/django/apps/config.py", line 124, in create
    mod = import_module(mod_path)
  File "/usr/lib/python3.9/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 850, in exec_module
  File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
  File "/home/menna/.local/lib/python3.9/site-packages/django/contrib/postgres/apps.py", line 1, in <module>
    from psycopg2.extras import (
ModuleNotFoundError: No module named 'psycopg2'
menna@MennasRazer:~/Documents/hackathon project/Coalesce$ python3 manage.py makemigrations
Traceback (most recent call last):
  File "/home/menna/.local/lib/python3.9/site-packages/django/apps/config.py", line 244, in create
    app_module = import_module(app_name)
  File "/usr/lib/python3.9/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 984, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'volunteers'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/menna/Documents/hackathon project/Coalesce/manage.py", line 30, in <module>
    main()
  File "/home/menna/Documents/hackathon project/Coalesce/manage.py", line 26, in main
    execute_from_command_line(sys.argv)
  File "/home/menna/.local/lib/python3.9/site-packages/django/core/management/__init__.py", line 419, in execute_from_command_line
    utility.execute()
  File "/home/menna/.local/lib/python3.9/site-packages/django/core/management/__init__.py", line 395, in execute
    django.setup()
  File "/home/menna/.local/lib/python3.9/site-packages/django/__init__.py", line 24, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/home/menna/.local/lib/python3.9/site-packages/django/apps/registry.py", line 91, in populate
    app_config = AppConfig.create(entry)
  File "/home/menna/.local/lib/python3.9/site-packages/django/apps/config.py", line 246, in create
    raise ImproperlyConfigured(
django.core.exceptions.ImproperlyConfigured: Cannot import 'volunteers'. Check that 'coalesce.volunteers.apps.VolunteersConfig.name' is correct.
MennaTullahTaha commented 2 years ago

remote: Permission to FederationOfTech/Coalesce.git denied to MennaTullahTaha. fatal: unable to access 'https://github.com/FederationOfTech/Coalesce.git/': The requested URL returned error: 403

stefanha commented 2 years ago

I recommend running ./manage.py inside the api container where the environment is set up with all the Python package dependencies:

$ docker-compose exec api bash
api$ ./manage.py makemigrations ...

The Coalesce source tree is shared between the api container and your laptop, so any migrations files generated inside the container will be available in your source tree without the need to copy files between the api container and your laptop.

stefanha commented 2 years ago

remote: Permission to FederationOfTech/Coalesce.git denied to MennaTullahTaha. fatal: unable to access 'https://github.com/FederationOfTech/Coalesce.git/': The requested URL returned error: 403

Looks like git push is attempting to store your commits in the official Coalesce repository (https://github.com/FederationOfTech/Coalesce.git) instead of your personal repository (https://github.com/MennaTullahTaha/Coalesce.git).

If you haven't already set up a git remote for your repository, make sure you've forked the Coalesce repo on GitHub by clicking the "fork" button at https://github.com/FederationOfTech/Coalesce and then add the remote like this:

$ git remote add personal git@github.com:MennaTullahTaha/Coalesce.git

Now you can push to your personal repo like this:

$ git push personal HEAD

GitHub's server will output a URL that you can open to create a pull request for your branch so the Coalesce developers can review and merge it.