Skip to content

Commit

Permalink
add pyproject.toml; add devcontainer for development; bump some packages
Browse files Browse the repository at this point in the history
  • Loading branch information
Evan Babb committed Nov 13, 2024
1 parent 2379562 commit 7adcf66
Show file tree
Hide file tree
Showing 14 changed files with 188 additions and 35 deletions.
15 changes: 15 additions & 0 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"name": "[Optional] Your project name here",
"dockerComposeFile": "docker-compose.yml",
"service": "roundware-dev",
"remoteUser": "root",
"runServices": ["roundware-db"],
"shutdownAction": "stopCompose",
"containerEnv": {
"DJANGO_SETTINGS_MODULE": "roundware.settings.testing",
},
"workspaceFolder": "/code",
"postCreateCommand": [
"./.devcontainer/postCreate.sh"
]
}
23 changes: 20 additions & 3 deletions docker-compose.yml → .devcontainer/docker-compose.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
version: "3"
services:
roundware-db:
image: postgis/postgis
Expand All @@ -8,20 +7,38 @@ services:
POSTGRES_PASSWORD: round
ports:
- "5432"

roundware:
build: "."
build:
context: ..
image: roundware:latest
ports:
- "8888:8888"
command: python3 roundware/manage.py runserver 0.0.0.0:8888
environment:
ROUNDWARE_DEBUG: "true"
ROUNDWARE_DB_HOST: "roundware-db"
ROUNDWARE_DB_NAME: "round"
ROUNDWARE_DB_USER: "round"
volumes:
- logs:/roundware/logs
depends_on:
- roundware-db

roundware-dev:
build:
context: ..
image: roundware-dev:latest
ports:
- "8888:8888"
command: python3 -m roundware.manage.py runserver 0.0.0.0:8888
environment:
ROUNDWARE_DEBUG: "true"
ROUNDWARE_DB_HOST: "roundware-db"
ROUNDWARE_DB_NAME: "round"
volumes:
- logs:/roundware/logs
- ../roundware:/code/roundware
depends_on:
- roundware-db
volumes:
logs:
15 changes: 15 additions & 0 deletions .devcontainer/postCreate.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#!/usr/bin/env bash

# install git in our devcontainer
apt-get update -y
apt-get install -y git
apt-get clean
rm -rf /var/lib/apt/lists/*

# migrate the database
python -m roundware.manage migrate

# load fixture data
python -m roundware.manage loaddata default_auth.json
python -m roundware.manage loaddata sample_project.json

5 changes: 2 additions & 3 deletions .github/workflows/django.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ jobs:
strategy:
max-parallel: 4
matrix:
python-version: [3.8]
python-version: [3.12]
services:
# Label used to access the service container
postgres:
Expand Down Expand Up @@ -41,8 +41,7 @@ jobs:
DEBIAN_FRONTEND=noninteractive xargs -a requirements.apt apt-get install -y --fix-missing
python3 --version
python3 -m pip install --upgrade pip setuptools
python3 -m pip install -r requirements/common.txt
python3 -m pip install -r requirements/dev.txt
python3 -m pip install .[test]
echo "PYTHONPATH=$GITHUB_WORKSPACE:$PYTHONPATH" >> $GITHUB_ENV
- name: Run Tests
Expand Down
2 changes: 1 addition & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,4 +27,4 @@ before_script:
- sudo mkdir /var/www
- sudo chmod 777 /var/www
- export PYTHONPATH=.:/usr/lib/python2.7/dist-packages/
script: python roundware/manage.py test --settings=roundware.settings.testing
script: python src/roundware/manage.py test --settings=roundware.settings.testing
40 changes: 25 additions & 15 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,21 +1,31 @@
FROM ubuntu:20.04 as roundware
FROM ubuntu:24.04
RUN mkdir /code
ENV PATH=/code:$PATH
ENV PYTHONPATH=/code
WORKDIR /code
RUN apt-get update

WORKDIR /code
ADD requirements.apt .
RUN apt-get update
RUN DEBIAN_FRONTEND=noninteractive xargs -a requirements.apt apt-get install -y --fix-missing
RUN python3 -m pip install pip setuptools --upgrade
RUN which python3 && python3 --version
ADD requirements ./requirements
ADD requirements.txt .
ADD scripts ./scripts
ADD roundware ./roundware
RUN python3 -m pip install -r requirements.txt
RUN python3 -m pip install -r requirements/dev.txt
RUN python3 roundware/manage.py collectstatic
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update -y && \
xargs -a requirements.apt apt-get install -y --fix-missing && \
apt-get upgrade -y gdal-bin \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*

ENV VIRTUAL_ENV=/pythonenv/roundware-venv
RUN mkdir /pythonenv/
RUN python3 -m venv $VIRTUAL_ENV
ENV PATH="$VIRTUAL_ENV/bin:$PATH"

RUN python3 -m pip install pip setuptools --upgrade && \
which python3 \
&& python3 --version

ADD pyproject.toml .
ADD scripts/ ./scripts
ADD roundware/ ./roundware

RUN python3 -m pip install .
RUN python3 -m roundware.manage collectstatic

ADD .coveragerc .
ADD .coveragerc .
95 changes: 95 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
# pyproject.toml for installing instrument-data-collector
[build-system]
requires = ["setuptools"]
build-backend = "setuptools.build_meta"

[project]
name = "roundware"
description = "Roundware Server"
license = {text = "License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)"}
dynamic = ['version']
authors = [
{"name" = "Halsey Burgund", "email" = "[email protected]"},
{"name" = "Mike MacHenry"},
{"name" = "Ben McAllister"},
{"name" = "Jule Slootbeek"},
{"name" = "Bryan Wilson"},
{"name" = "Brad Erickson", "email" = "[email protected]" },
{"name" = "Evan Babb", "email" = "[email protected]"},
]

maintainers = [
{"name" = "Halsey Burgund", "email" = "[email protected]"},
{"name" = "Evan Babb", "email" = "[email protected]"},
]

requires-python = ">=3.11"

dependencies = [
"Django==3.0",
# Creates REST APIs
"djangorestframework",
# locks down access to api endpoints
"django-dry-rest-permissions",
# Used for DRF filtering
"django-filter<2.3",
# Used in roundware/rw/admin.py, roundware/rw/forms.py, roundware/rw/views, and more.
"django-guardian==2.2.0",
# Used by roundware/api1/commands.py
"psutil==3.4.2",
# Used by roundware/rw/fields.py
# django-validated-file==2.0.1
"python-magic==0.4.8",
# Used in roundware/rw/views.py
"django-braces==1.14.0",
# Loaded in roundware/urls.py
# django-adminplus==0.2.1
# Used in roundware/rw/forms.py
"django-crispy-forms==1.9.1",
# Used in roundware/rw/widgets.py
"django-floppyforms==1.9.0",
# Used in roundware/rw/views.py:
"django-extra-views==0.13.0",
# Used in roundware/rw/fields.py and roundware/rw/widgets.py
"django-sortedm2m==3.1.1",
# Required for RDF Date parsing
"python-dateutil==2.2",
# Used in roundwared/icecast2.py
"requests<2.5",
# Used in admin, including Batch Tag Add
"django-formset-js==0.4.0",
# database adapter for PostgreSQL
"psycopg2",
# geographic distance calculator utilities
"geopy",
# cors support to remove php layer
"django-cors-headers==3.3.0",
# fiona is a useful tool for processing geographic files (ETL)
"fiona",
# geographic extensions for djangorestframework-gis
"djangorestframework-gis<=0.16",
# leaflet map utilities for django admin
"django-leaflet",
# Bootstrap admin theme for Django 1.9
# https://github.com/roundware/django-admin-bootstrapped/zipball/3.0.0
# audio conversions
"ffmpeg-python==0.2.0"
]

[project.optional-dependencies]
dev = [
"ipython",
]
test = [
"coverage",
"webtest",
"django-webtest",
"model_bakery",
"mock",
]

[tool.setuptools.dynamic]
version = { attr = "roundware.__version__"}

[tool.setuptools.packages.find]
where = ["."]
1 change: 1 addition & 0 deletions requirements.apt
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,4 @@ pacpl
python3
python3-dev
python3-pip
python3-venv
2 changes: 1 addition & 1 deletion requirements/common.txt
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ django-floppyforms==1.9.0
# Used in roundware/rw/views.py:
django-extra-views==0.13.0
# Used in roundware/rw/fields.py and roundware/rw/widgets.py
django-sortedm2m==0.8.1
django-sortedm2m==3.1.1
# Required for RDF Date parsing
python-dateutil==2.2
# Used in roundwared/icecast2.py
Expand Down
1 change: 1 addition & 0 deletions roundware/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
__version__ = '0.4.0'
6 changes: 3 additions & 3 deletions roundware/rw/migrations/0037_asset_file_and_loc_caption.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

import django.core.files.storage
from django.db import migrations
import rw.fields
import roundware.rw.fields


class Migration(migrations.Migration):
Expand All @@ -17,11 +17,11 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='asset',
name='file',
field=rw.fields.ValidatedFileField(help_text='Upload file', storage=django.core.files.storage.FileSystemStorage(base_url='/rwmedia/', location='/var/www/roundware/rwmedia/'), upload_to='.'),
field=roundware.rw.fields.ValidatedFileField(help_text='Upload file', storage=django.core.files.storage.FileSystemStorage(base_url='/rwmedia/', location='/var/www/roundware/rwmedia/'), upload_to='.'),
),
migrations.AlterField(
model_name='asset',
name='loc_caption',
field=rw.fields.ValidatedFileField(help_text='Upload captions', null=True, storage=django.core.files.storage.FileSystemStorage(base_url='/rwmedia/', location='/var/www/roundware/rwmedia/'), upload_to='.'),
field=roundware.rw.fields.ValidatedFileField(help_text='Upload captions', null=True, storage=django.core.files.storage.FileSystemStorage(base_url='/rwmedia/', location='/var/www/roundware/rwmedia/'), upload_to='.'),
),
]
2 changes: 1 addition & 1 deletion roundware/rw/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
from django.utils.safestring import mark_safe
from django.db import transaction
from django.contrib.gis.db import models
from rw.fields import ValidatedFileField
from roundware.rw.fields import ValidatedFileField
from django.conf import settings
from datetime import datetime
from django.db.models.signals import post_save
Expand Down
14 changes: 7 additions & 7 deletions roundware/rw/tests/test_models.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,15 @@
from roundware.rw import models
from roundware.settings import DEFAULT_SESSION_ID

from rw.tests.common import use_locmemcache, RWTestCase
from roundware.rw.tests.common import use_locmemcache, RWTestCase


class TestUIGroup(RWTestCase):

""" exercise UIGroup model class """

def setUp(self):
super(type(self), TestUIGroup).setUp(self)
super().setUp()

# make uigroup, makes our tagcategory, uimode, project,
# selectionmethod
Expand Down Expand Up @@ -50,7 +50,7 @@ def test_tag_category_cache_invalidation_post_save(self):
class TestProject(RWTestCase):

def setUp(self):
super(type(self), TestProject).setUp(self)
super().setUp()
self.project = baker.make('rw.Project')
self.ui_mode = models.UIGroup.LISTEN

Expand Down Expand Up @@ -82,7 +82,7 @@ def test_no_tag_cats_returned_wrong_uimode(self):
class TestAsset(RWTestCase):

def setUp(self):
super(type(self), TestAsset).setUp(self)
super().setUp()

self.session1 = baker.make('rw.Session')
self.session2 = baker.make('rw.Session')
Expand All @@ -99,11 +99,11 @@ def setUp(self):
asset=self.asset1, type="flag")

def test_get_likes(self):
self.assertEquals(2, self.asset1.get_likes())
self.assertEquals(1, self.asset2.get_likes())
self.assertEqual(2, self.asset1.get_likes())
self.assertEqual(1, self.asset2.get_likes())

def test_get_flags(self):
self.assertEquals(1, self.asset1.get_flags())
self.assertEqual(1, self.asset1.get_flags())

def test_distance(self):
distance = self.asset1.distance({'latitude': 0, 'longitude': 0})
2 changes: 1 addition & 1 deletion scripts/tests.sh
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ fi

# runs Django test_coverage script on rw app and roundware-server tests with appropriate settings
cd ..
coverage run --source=roundware roundware/manage.py test --settings=roundware.settings.testing $TESTS
coverage run --source=roundware src/roundware/manage.py test --settings=roundware.settings.testing $TESTS

# Only display coverage results on full tests
if [ "$TESTS" == "tests" ]; then
Expand Down

0 comments on commit 7adcf66

Please sign in to comment.