Repository: TOMToolkit/tom_base

Issue:
Missing dataclasses
Following the tom_base install instructions, I pip installed the requirements.txt and then tried 
> ./manage.py migrate

which ended with the following error:
  File "<frozen importlib._bootstrap_external>", line 678, in exec_module
  File "<frozen importlib._bootstrap>", line 205, in _call_with_frames_removed
  File "/Users/rstreet/software/tom_base/tom_alerts/urls.py", line 3, in <module>
    from tom_alerts.views import BrokerQueryCreateView, BrokerQueryListView, BrokerQueryUpdateView, RunQueryView
  File "/Users/rstreet/software/tom_base/tom_alerts/views.py", line 3, in <module>
    from tom_alerts.alerts import get_service_class, get_service_classes
  File "/Users/rstreet/software/tom_base/tom_alerts/alerts.py", line 5, in <module>
    from dataclasses import dataclass
ModuleNotFoundError: No module named 'dataclasses'



Discussion:
[That was following the quickstart instructions.  Now trying the documentation on the tomtoolkit.github.io page]

After activating the venv, users should immediately update pip:
> pip install --upgrade pip

Otherwise the next instruction
>pip install django

Fails with:
Collecting django
  Could not fetch URL https://pypi.python.org/simple/django/: There was a problem confirming the ssl certificate: [SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:645) - skipping
  Could not find a version that satisfies the requirement django (from versions: )
No matching distribution found for django

The rest of the instructions on the github.io page seem to work well through the edits to the settings.py.  One comment is that many astronomers will not be at all familiar with editing this kind of file, so explaining that the changes can just be added at the end of it would be helpful.  You should probably also explain that the default file comes from Django rather than the TOM, which is why the additional settings aren't included by default. 

I still hit a problem with the 
> ./manage.py migrate
command though:

  File "<frozen importlib._bootstrap_external>", line 665, in exec_module
  File "<frozen importlib._bootstrap>", line 222, in _call_with_frames_removed
  File "/Users/rstreet/software/tom_env/lib/python3.5/site-packages/tom_alerts/urls.py", line 3, in <module>
    from tom_alerts.views import BrokerQueryCreateView, BrokerQueryListView, BrokerQueryUpdateView, RunQueryView
  File "/Users/rstreet/software/tom_env/lib/python3.5/site-packages/tom_alerts/views.py", line 3, in <module>
    from tom_alerts.alerts import get_service_class, get_service_classes
  File "/Users/rstreet/software/tom_env/lib/python3.5/site-packages/tom_alerts/alerts.py", line 46
    timestamp: datetime

Hi Rachel,
The TOM is developed under python 3.7. 
You can install the `dataclasses` backport for python 3.6 with:

    pip install dataclasses
Thanks.  I was trying to approach the instructions from the perspective of a complete novice and highlight any instructions that it would be good to add for such a user.  
Added prerequisites to https://tomtoolkit.github.io/docs/getting_started

Resolving patch:
diff --git a/setup.py b/setup.py
--- a/setup.py
+++ b/setup.py
@@ -46,6 +46,7 @@
         'pillow',
         'fits2image',
         'specutils',
+        "dataclasses; python_version < '3.7'",
     ],
     extras_require={
         'test': ['factory_boy']


Test patch: