diff --git a/Dockerfile-static b/Dockerfile-static
new file mode 100644
index 00000000..acc79897
--- /dev/null
+++ b/Dockerfile-static
@@ -0,0 +1,34 @@
+FROM python:3.8.2-buster as builder
+
+# Install required packages
+RUN apt-get update && \
+ apt-get install -y \
+ libsasl2-dev \
+ python-dev \
+ libldap2-dev \
+ libssl-dev &&\
+ rm -rf /var/lib/apt/lists/*
+
+# Set workdir and install python requirements
+WORKDIR /usr/src/love
+COPY manager/requirements.txt .
+RUN pip install -r requirements.txt
+
+# Copy source code and collect statics
+COPY manager ./manager
+WORKDIR /usr/src/love/manager
+RUN find . | grep -E "(__pycache__|\.pyc|\.pyo$)" | xargs rm -rf
+RUN python manage.py collectstatic --noinput
+
+# Copy media data
+RUN mkdir -p media/thumbnails
+RUN cp -u ui_framework/fixtures/thumbnails/* media/thumbnails
+RUN mkdir -p media/configs
+RUN cp -u api/fixtures/configs/* media/configs
+
+# copy compiled files to smaller image
+FROM alpine:3.8
+COPY --from=builder /usr/src/love/manager/static /usr/src/love/manager/static
+COPY --from=builder /usr/src/love/manager/media /usr/src/love/manager/media
+VOLUME /usr/src/love/manager/static
+VOLUME /usr/src/love/manager/media
diff --git a/Jenkinsfile b/Jenkinsfile
index 5fde6ee1..488acf7d 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -18,6 +18,7 @@ pipeline {
branch "bugfix/*"
branch "hotfix/*"
branch "release/*"
+ branch "tickets/*"
}
}
steps {
@@ -29,7 +30,7 @@ pipeline {
if (slashPosition > 0) {
git_tag = git_branch.substring(slashPosition + 1, git_branch.length())
git_branch = git_branch.substring(0, slashPosition)
- if (git_branch == "release" || git_branch == "hotfix" || git_branch == "bugfix") {
+ if (git_branch == "release" || git_branch == "hotfix" || git_branch == "bugfix" || git_branch == "tickets") {
image_tag = git_tag
}
}
@@ -64,6 +65,7 @@ pipeline {
branch "bugfix/*"
branch "hotfix/*"
branch "release/*"
+ branch "tickets/*"
}
}
steps {
diff --git a/docs/doctrees/apidoc/api.doctree b/docs/doctrees/apidoc/api.doctree
index db159d6c..8ecf1b0e 100644
Binary files a/docs/doctrees/apidoc/api.doctree and b/docs/doctrees/apidoc/api.doctree differ
diff --git a/docs/doctrees/apidoc/api.tests.doctree b/docs/doctrees/apidoc/api.tests.doctree
index d7d9e3be..1b234601 100644
Binary files a/docs/doctrees/apidoc/api.tests.doctree and b/docs/doctrees/apidoc/api.tests.doctree differ
diff --git a/docs/doctrees/apidoc/ui_framework.doctree b/docs/doctrees/apidoc/ui_framework.doctree
index 4692f1aa..50951e8e 100644
Binary files a/docs/doctrees/apidoc/ui_framework.doctree and b/docs/doctrees/apidoc/ui_framework.doctree differ
diff --git a/docs/doctrees/environment.pickle b/docs/doctrees/environment.pickle
index bce87e0f..ad5dd7d3 100644
Binary files a/docs/doctrees/environment.pickle and b/docs/doctrees/environment.pickle differ
diff --git a/docs/doctrees/modules/how_to_use_it.doctree b/docs/doctrees/modules/how_to_use_it.doctree
index 65903122..f610d0c6 100644
Binary files a/docs/doctrees/modules/how_to_use_it.doctree and b/docs/doctrees/modules/how_to_use_it.doctree differ
diff --git a/docs/html/_sources/modules/how_to_use_it.rst.txt b/docs/html/_sources/modules/how_to_use_it.rst.txt
index 8811e5cc..386c6fb2 100644
--- a/docs/html/_sources/modules/how_to_use_it.rst.txt
+++ b/docs/html/_sources/modules/how_to_use_it.rst.txt
@@ -1202,3 +1202,106 @@ Delete WorkspaceView
{
"status": 204
}
+
+
+EFD
+============
+
+Timeseries
+~~~~~~~~~~~~~~~~~~~~
+Endpoint to request EFD timeseries.
+
+- Url: :code:` final_validator: a standard validator that does not alter
the data being validated.5.1.2. Submodules
+
+
set_default_properties
(properties, skip_properties, instance)¶
validate
(data_dict)¶5.1.2. SubmodulesCustom Serializer for responses to validate and get token requests.
get_config
(token) → dict¶get_config
(token) → Optional[dict]¶
Return the config file. If the ‘no_config’ flag is present in the url of the original request, then the file is not read and the return value is None
api.views.
query_efd
(self, request, *args, **kwargs)¶Queries data from an EFD timeseries by redirecting the request to the Commander
+The Request object
+List of addittional arguments. Currently unused
+start_date (required): String specifying the start of the query range. Default current date minus 10 minutes +timewindow (required): Int specifying the number of minutes to query starting from start_date. Default 10 +topics (required): Dictionary of the form
++++
+- {
- +
+
+- CSC1: {
- +
index: [topic1, topic2…],
+}, +CSC2: {
+++index: [topic1, topic2…],
+},
+}
+
resample (optional): The offset string representing target resample conversion, e.g. ‘15min’, ‘10S’
+The response and status code of the request to the LOVE-Commander
+Response
+api.views.
salinfo_metadata
(self, request, *args, **kwargs)¶api.views.
tcs_aux_command
(self, request, *args, **kwargs)¶Sends command to the ATCS
+The Request object
+List of addittional arguments. Currently unused
+command_name (required): The name of the command to be run. It should be a field of the lsst.ts.observatory.control.auxtel.ATCS class +params (required): Parameters to be passed to the command method, e.g.
++++
+- {
- +
ra: 80, +dec: 30,
+}
+
The response and status code of the request to the LOVE-Commander
+Response
+api.views.
validate_config_schema
(self, request, *args, **kwargs)¶api.tests.test_commander.
EFDTestCase
(methodName='runTest')¶Bases: django.test.testcases.TestCase
maxDiff
= None¶setUp
()¶Define the test suite setup.
+test_timeseries_query
(mock_requests, mock_environ)¶Test authorized user can query and get a timeseries
+api.tests.test_commander.
SalinfoTestCase
(methodName='runTest')¶api.tests.test_commander.
TCSTestCase
(methodName='runTest')¶Bases: django.test.testcases.TestCase
maxDiff
= None¶setUp
()¶Define the test suite setup.
+test_command_query
(mock_requests, mock_environ)¶Test authorized user can send a TCS command
+api.tests.tests_configfile.
setUp
(self)¶queryset
= <QuerySet [<View: sqqtest>, <View: CSCSummary>, <View: Random view>, <View: CSCSummary + CSCG>, <View: Dome & Mount>, <View: HealthStatusSummary>, <View: LATISS + Camera>, <View: Network + Scheduler>, <View: TimeDisplay>, <View: Watcher + ObsLogs>, <View: WeatherStation>, <View: Dome-Mount test>, <View: logslogs>, <View: LATISS>, <View: ATCamera>, <View: AT Lightpath>, <View: ATMount overview>, <View: HealthStatusSummary>, <View: ObservingLog>, <View: Time Displays>, '...(remaining elements truncated)...']>¶queryset
= <QuerySet [<View: fdsfdsddsda>, <View: TimeSeriesPlot>, <View: CSCSummary>, <View: sqqtest>, <View: Random view>, <View: CSCSummary + CSCG>, <View: Dome & Mount>, <View: HealthStatusSummary>, <View: LATISS + Camera>, <View: Network + Scheduler>, <View: TimeDisplay>, <View: Watcher + ObsLogs>, <View: WeatherStation>, <View: Dome-Mount test>, <View: logslogs>, <View: LATISS>, <View: ATCamera>, <View: AT Lightpath>, <View: ATMount overview>, <View: HealthStatusSummary>, '...(remaining elements truncated)...']>¶
Set of objects to be accessed by queries to this viewsets endpoints