Commit 7b3a0a8f5cd6676cc9347e8fcf10fe4f80224b99
Exists in
master
and in
1 other branch
Merge branch 'master' of https://gitlab.irap.omp.eu/epallier/pyros.git
Conflicts: .project .pydevproject
Showing
13 changed files
with
733 additions
and
11 deletions
Show diff stats
.project
@@ -12,7 +12,7 @@ | @@ -12,7 +12,7 @@ | ||
12 | </buildCommand> | 12 | </buildCommand> |
13 | </buildSpec> | 13 | </buildSpec> |
14 | <natures> | 14 | <natures> |
15 | - <nature>org.python.pydev.django.djangoNature</nature> | ||
16 | <nature>org.python.pydev.pythonNature</nature> | 15 | <nature>org.python.pydev.pythonNature</nature> |
16 | + <nature>org.python.pydev.django.djangoNature</nature> | ||
17 | </natures> | 17 | </natures> |
18 | </projectDescription> | 18 | </projectDescription> |
.pydevproject
@@ -2,13 +2,4 @@ | @@ -2,13 +2,4 @@ | ||
2 | <?eclipse-pydev version="1.0"?><pydev_project> | 2 | <?eclipse-pydev version="1.0"?><pydev_project> |
3 | <pydev_property name="org.python.pydev.PYTHON_PROJECT_INTERPRETER">venv_py35_pyros</pydev_property> | 3 | <pydev_property name="org.python.pydev.PYTHON_PROJECT_INTERPRETER">venv_py35_pyros</pydev_property> |
4 | <pydev_property name="org.python.pydev.PYTHON_PROJECT_VERSION">python 3.0</pydev_property> | 4 | <pydev_property name="org.python.pydev.PYTHON_PROJECT_VERSION">python 3.0</pydev_property> |
5 | -<pydev_variables_property name="org.python.pydev.PROJECT_VARIABLE_SUBSTITUTION"> | ||
6 | -<key>DJANGO_MANAGE_LOCATION</key> | ||
7 | -<value>src/manage.py</value> | ||
8 | -<key>DJANGO_SETTINGS_MODULE</key> | ||
9 | -<value>pyros.settings</value> | ||
10 | -</pydev_variables_property> | ||
11 | -<pydev_pathproperty name="org.python.pydev.PROJECT_SOURCE_PATH"> | ||
12 | -<path>/${PROJECT_DIR_NAME}/src</path> | ||
13 | -</pydev_pathproperty> | ||
14 | </pydev_project> | 5 | </pydev_project> |
@@ -0,0 +1,26 @@ | @@ -0,0 +1,26 @@ | ||
1 | +<?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||
2 | +<?eclipse-pydev version="1.0"?><pydev_project> | ||
3 | +<pydev_property name="org.python.pydev.PYTHON_PROJECT_INTERPRETER">venv_py35_pyros</pydev_property> | ||
4 | +<pydev_property name="org.python.pydev.PYTHON_PROJECT_VERSION">python 3.0</pydev_property> | ||
5 | +<<<<<<< HEAD | ||
6 | +<pydev_variables_property name="org.python.pydev.PROJECT_VARIABLE_SUBSTITUTION"> | ||
7 | +<key>DJANGO_MANAGE_LOCATION</key> | ||
8 | +<value>src/manage.py</value> | ||
9 | +<key>DJANGO_SETTINGS_MODULE</key> | ||
10 | +<value>pyros.settings</value> | ||
11 | +</pydev_variables_property> | ||
12 | +<pydev_pathproperty name="org.python.pydev.PROJECT_SOURCE_PATH"> | ||
13 | +<path>/${PROJECT_DIR_NAME}/src</path> | ||
14 | +</pydev_pathproperty> | ||
15 | +======= | ||
16 | +<pydev_pathproperty name="org.python.pydev.PROJECT_SOURCE_PATH"> | ||
17 | +<path>/${PROJECT_DIR_NAME}/src</path> | ||
18 | +</pydev_pathproperty> | ||
19 | +<pydev_variables_property name="org.python.pydev.PROJECT_VARIABLE_SUBSTITUTION"> | ||
20 | +<key>DJANGO_MANAGE_LOCATION</key> | ||
21 | +<value>src/manage.py</value> | ||
22 | +<key>DJANGO_SETTINGS_MODULE</key> | ||
23 | +<value>pyros.settings</value> | ||
24 | +</pydev_variables_property> | ||
25 | +>>>>>>> branch 'master' of https://gitlab.irap.omp.eu/epallier/pyros.git | ||
26 | +</pydev_project> |
@@ -0,0 +1,55 @@ | @@ -0,0 +1,55 @@ | ||
1 | +digraph "classes_No_Name" { | ||
2 | +charset="utf-8" | ||
3 | +rankdir=BT | ||
4 | +"0" [label="{Album|created : DateTimeField\ldesc : TextField\ldetector : ForeignKey\lname : CharField\lsequence : ForeignKey\lupdated : DateTimeField\l|}", shape="record"]; | ||
5 | +"1" [label="{Alert|burst_dec : CharField\lburst_jd : CharField\lburst_ra : CharField\lclient : CharField\ldef_not_grb : IntegerField\leditor : CharField\lequinox : CharField\lflag : CharField\lgrb_error : CharField\lidgcn_notice : IntegerField\ljd_pkt : IntegerField\ljd_received : IntegerField\ljd_send : IntegerField\lrequest : ForeignKey\lstrategyobs : ForeignKey\ltrigger_instrum : CharField\ltrigger_num : CharField\ltype : CharField\lvoevent_xml : TextField\l|}", shape="record"]; | ||
6 | +"2" [label="{Country|desc : TextField\lname : CharField\lquota : FloatField\l|}", shape="record"]; | ||
7 | +"3" [label="{Detector|acq_start : DateTimeField\lacq_stop : DateTimeField\lcheck_temp : FloatField\ldevice : ForeignKey\lequivalent_foc_len : CharField\lgain : FloatField\lhas_shutter : IntegerField\lidcam_readout_mode : IntegerField\lnb_photo_x : IntegerField\lnb_photo_y : IntegerField\lphoto_size_x : IntegerField\lphoto_size_y : IntegerField\lreadout_noise : FloatField\lreadout_time : FloatField\lstatus : CharField\ltelescope : ForeignKey\l|}", shape="record"]; | ||
8 | +"4" [label="{Device|created : DateTimeField\ldesc : TextField\lis_online : IntegerField\lmaintenance_date : DateTimeField\lname : CharField\lstatus : CharField\lupdated : DateTimeField\l|}", shape="record"]; | ||
9 | +"5" [label="{Filter|category : CharField\ldetector : ForeignKey\ldevice : ForeignKey\ltransmission_curve_doc : CharField\l|}", shape="record"]; | ||
10 | +"6" [label="{Image|created : DateTimeField\ldate_from_gps : CharField\ldesc : TextField\ldwn : CharField\ldwncata : CharField\ldwnimg : CharField\lexposure : CharField\lflaggps : CharField\lhumidext : CharField\llevel : IntegerField\llevel0_fits_name : CharField\llevel1a_fits_name : CharField\llevel1b_fits_name : CharField\lname : CharField\lnrtanalysis : ForeignKey\lplan : ForeignKey\lpressure : CharField\lquality : CharField\ltempext : CharField\ltype : CharField\lupdated : DateTimeField\lwind : CharField\lwind_dir : CharField\l|}", shape="record"]; | ||
11 | +"7" [label="{Meta|db_table : str\lmanaged : bool\l|}", shape="record"]; | ||
12 | +"8" [label="{Meta|db_table : str\lmanaged : bool\l|}", shape="record"]; | ||
13 | +"9" [label="{Meta|db_table : str\lmanaged : bool\l|}", shape="record"]; | ||
14 | +"10" [label="{Meta|db_table : str\lmanaged : bool\l|}", shape="record"]; | ||
15 | +"11" [label="{Meta|db_table : str\lmanaged : bool\l|}", shape="record"]; | ||
16 | +"12" [label="{Meta|db_table : str\lmanaged : bool\lunique_together : tuple\l|}", shape="record"]; | ||
17 | +"13" [label="{Meta|db_table : str\lmanaged : bool\l|}", shape="record"]; | ||
18 | +"14" [label="{Meta|db_table : str\lmanaged : bool\l|}", shape="record"]; | ||
19 | +"15" [label="{Meta|db_table : str\lmanaged : bool\l|}", shape="record"]; | ||
20 | +"16" [label="{Meta|db_table : str\lmanaged : bool\l|}", shape="record"]; | ||
21 | +"17" [label="{Meta|db_table : str\lmanaged : bool\l|}", shape="record"]; | ||
22 | +"18" [label="{Meta|db_table : str\lmanaged : bool\l|}", shape="record"]; | ||
23 | +"19" [label="{Meta|db_table : str\lmanaged : bool\l|}", shape="record"]; | ||
24 | +"20" [label="{Meta|db_table : str\lmanaged : bool\l|}", shape="record"]; | ||
25 | +"21" [label="{Meta|db_table : str\lmanaged : bool\l|}", shape="record"]; | ||
26 | +"22" [label="{Meta|db_table : str\lmanaged : bool\l|}", shape="record"]; | ||
27 | +"23" [label="{Meta|db_table : str\lmanaged : bool\l|}", shape="record"]; | ||
28 | +"24" [label="{Meta|db_table : str\lmanaged : bool\l|}", shape="record"]; | ||
29 | +"25" [label="{Meta|db_table : str\lmanaged : bool\l|}", shape="record"]; | ||
30 | +"26" [label="{Meta|db_table : str\lmanaged : bool\l|}", shape="record"]; | ||
31 | +"27" [label="{Meta|db_table : str\lmanaged : bool\l|}", shape="record"]; | ||
32 | +"28" [label="{Meta|db_table : str\lmanaged : bool\lunique_together : tuple\l|}", shape="record"]; | ||
33 | +"29" [label="{Meta|db_table : str\lmanaged : bool\l|}", shape="record"]; | ||
34 | +"30" [label="{Meta|db_table : str\lmanaged : bool\l|}", shape="record"]; | ||
35 | +"31" [label="{Meta|db_table : str\lmanaged : bool\l|}", shape="record"]; | ||
36 | +"32" [label="{Nrtanalysis|analysis : TextField\lcreated : DateTimeField\ldesc : TextField\lname : CharField\lupdated : DateTimeField\l|}", shape="record"]; | ||
37 | +"33" [label="{Plan|album : ForeignKey\lcreated : DateTimeField\ldesc : CharField\ldithering : IntegerField\lduration : FloatField\lexposure_time : FloatField\lfilter : ForeignKey\lname : CharField\lnb_images : IntegerField\lposition : CharField\lupdated : DateTimeField\l|}", shape="record"]; | ||
38 | +"34" [label="{PyrosappConfig|name : str\l|}", shape="record"]; | ||
39 | +"35" [label="{Request|autodeposit : IntegerField\lcheckpoint : CharField\lcreated : DateTimeField\ldesc : TextField\lflag : CharField\lis_alert : IntegerField\lname : CharField\lpriority : IntegerField\lscientificprogram : ForeignKey\lstatus : CharField\ltarget_or_theme : CharField\ltype : CharField\lupdated : DateTimeField\luser : ForeignKey\l|}", shape="record"]; | ||
40 | +"36" [label="{Schedule|created : DateTimeField\lday_start : DateTimeField\lday_stop : DateTimeField\lflag : CharField\l|}", shape="record"]; | ||
41 | +"37" [label="{ScheduleHasSequences|schedulehistory : ForeignKey\lsequence : ForeignKey\l|}", shape="record"]; | ||
42 | +"38" [label="{Schedulehistory|created : DateTimeField\lday_start : DateTimeField\lday_stop : DateTimeField\lflag : CharField\l|}", shape="record"]; | ||
43 | +"39" [label="{Scientificprogram|desc : TextField\lname : CharField\lpriority : IntegerField\lquota : FloatField\l|}", shape="record"]; | ||
44 | +"40" [label="{Sequence|alt_min : IntegerField\lanalysis_method : CharField\lcreated : DateTimeField\ldesc : TextField\lduration : FloatField\lexec_start : DateTimeField\lexec_stop : DateTimeField\lflag : CharField\limg_current : CharField\limg_total : CharField\lis_alert : IntegerField\lmoon_min : IntegerField\lname : CharField\lnot_obs : IntegerField\lobsolete : IntegerField\lpointing : CharField\lpriority : IntegerField\lprocessing : IntegerField\lrequest : ForeignKey\lschedule : ForeignKey\lsequencetype : ForeignKey\lstatus : CharField\ltype : CharField\lupdated : DateTimeField\lwith_drift : IntegerField\l|}", shape="record"]; | ||
45 | +"41" [label="{Sequencetype|desc : TextField\lname : CharField\lpriority : IntegerField\l|}", shape="record"]; | ||
46 | +"42" [label="{Sitewatch|dome : CharField\ldoors : CharField\llights : CharField\ltemperature : FloatField\lupdated : DateTimeField\l|}", shape="record"]; | ||
47 | +"43" [label="{Sitewatchhistory|id : IntegerField\l|}", shape="record"]; | ||
48 | +"44" [label="{Strategyobs|desc : TextField\ljson_file : CharField\lname : CharField\l|}", shape="record"]; | ||
49 | +"45" [label="{Telescope|address : CharField\laltitude : FloatField\ldevice : ForeignKey\ldiameter : FloatField\lhorizon_def : FloatField\lhorizon_type : CharField\llatitude : FloatField\llim_dec_max : FloatField\llim_dec_min : FloatField\llim_ha_rise : FloatField\llim_ha_set : FloatField\llongitude : FloatField\lmount_type : CharField\lmpc_code : CharField\lnight_elev_sun : FloatField\lreadout_time : IntegerField\lsens : CharField\lslew_dead : IntegerField\lslew_rate_max : FloatField\lslew_time : IntegerField\lstatus : CharField\l|}", shape="record"]; | ||
50 | +"46" [label="{User|acqvalid_beg : CharField\lacqvalid_end : CharField\laddress : CharField\lcan_del_void_req : IntegerField\lcountry : ForeignKey\lcreated : DateTimeField\lcur_connect : DateTimeField\ldesc : TextField\ldir_level : IntegerField\lemail : CharField\lfirstname : CharField\llast_connect : DateTimeField\llogin : CharField\lname : CharField\lp_priority : IntegerField\lpass_field : CharField\lputvalid_beg : DateTimeField\lputvalid_end : DateTimeField\lquota : FloatField\lquota_rea : FloatField\ltel1 : CharField\ltel2 : CharField\lu_priority : IntegerField\lupdated : DateTimeField\lurl : CharField\luserlevel : ForeignKey\l|}", shape="record"]; | ||
51 | +"47" [label="{UserHasScientificprograms|scientificprogram : ForeignKey\luser : ForeignKey\l|}", shape="record"]; | ||
52 | +"48" [label="{Userlevel|desc : TextField\lname : CharField\lpriority : IntegerField\lquota : FloatField\l|}", shape="record"]; | ||
53 | +"49" [label="{Weatherwatch|dwn : CharField\lhumid_ext : FloatField\lhumid_int : FloatField\lpressure : FloatField\lrain : FloatField\ltemp_ext : FloatField\ltemp_int : FloatField\lupdated : DateTimeField\lwind : FloatField\lwind_dir : CharField\l|}", shape="record"]; | ||
54 | +"50" [label="{Weatherwatchhistory|datetime : DateTimeField\ldwn : CharField\lhumid_ext : CharField\lhumid_int : CharField\lpressure : CharField\lrain : CharField\ltemp_ext : CharField\ltemp_int : CharField\lwind : CharField\lwind_dir : CharField\l|}", shape="record"]; | ||
55 | +} |
3.75 KB
@@ -0,0 +1,11 @@ | @@ -0,0 +1,11 @@ | ||
1 | +digraph "packages_No_Name" { | ||
2 | +charset="utf-8" | ||
3 | +rankdir=BT | ||
4 | +"0" [label="pyrosapp", shape="box"]; | ||
5 | +"1" [label="pyrosapp.admin", shape="box"]; | ||
6 | +"2" [label="pyrosapp.apps", shape="box"]; | ||
7 | +"3" [label="pyrosapp.migrations", shape="box"]; | ||
8 | +"4" [label="pyrosapp.models_ORIG", shape="box"]; | ||
9 | +"5" [label="pyrosapp.tests", shape="box"]; | ||
10 | +"6" [label="pyrosapp.views", shape="box"]; | ||
11 | +} |
7.33 KB
No preview for this file type
No preview for this file type
No preview for this file type
src/pyrosapp/admin.py
1 | +from django import forms | ||
1 | from django.contrib import admin | 2 | from django.contrib import admin |
3 | +from pyrosapp.models import * | ||
2 | 4 | ||
3 | -# Register your models here. | 5 | +# Many To Many interface adapter |
6 | + | ||
7 | +class UserAndSPInline(admin.TabularInline): | ||
8 | + model = ScientificProgram.users.through | ||
9 | + | ||
10 | +class SequenceAndSHInline(admin.TabularInline): | ||
11 | + model = ScheduleHistory.sequences.through | ||
12 | + | ||
13 | +class ScheduleHistoryAdmin(admin.ModelAdmin): | ||
14 | + inlines = [ | ||
15 | + SequenceAndSHInline, | ||
16 | + ] | ||
17 | + exclude = ('sequences',) | ||
18 | + | ||
19 | + | ||
20 | +# One To Many interface adapters | ||
21 | + | ||
22 | +class SequenceInline(admin.TabularInline): | ||
23 | + model = Sequence | ||
24 | + fields = ("name",) | ||
25 | + show_change_link = True | ||
26 | + | ||
27 | +class RequestInline(admin.TabularInline): | ||
28 | + model = Request | ||
29 | + fields = ("name",) | ||
30 | + show_change_link = True | ||
31 | + | ||
32 | +class AlbumInline(admin.TabularInline): | ||
33 | + model = Album | ||
34 | + fields = ("name",) | ||
35 | + show_change_link = True | ||
36 | + | ||
37 | +class PlanInline(admin.TabularInline): | ||
38 | + model = Plan | ||
39 | + fields = ("name",) | ||
40 | + show_change_link = True | ||
41 | + | ||
42 | +class ImageInline(admin.TabularInline): | ||
43 | + model = Image | ||
44 | + fields = ("name",) | ||
45 | + show_change_link = True | ||
46 | + | ||
47 | +class DetectorInline(admin.TabularInline): | ||
48 | + model = Detector | ||
49 | + fields = ("name",) | ||
50 | + show_change_link = True | ||
51 | + | ||
52 | +class UserInline(admin.TabularInline): | ||
53 | + model = User | ||
54 | + fields = ("name",) | ||
55 | + show_change_link = True | ||
56 | + | ||
57 | +class FilterInline(admin.TabularInline): | ||
58 | + model = Filter | ||
59 | + fields = ("name",) | ||
60 | + show_change_link = True | ||
61 | + | ||
62 | +class AlertInline(admin.TabularInline): | ||
63 | + model = Alert | ||
64 | + fields = ("request.name",) | ||
65 | + show_change_link = True | ||
66 | + | ||
67 | + | ||
68 | + | ||
69 | +class RequestAdmin(admin.ModelAdmin): | ||
70 | + inlines = [ | ||
71 | + SequenceInline, | ||
72 | + ] | ||
73 | + | ||
74 | +class ScheduleAdmin(admin.ModelAdmin): | ||
75 | + inlines = [ | ||
76 | + SequenceInline, | ||
77 | + ] | ||
78 | + | ||
79 | +class SequenceAdmin(admin.ModelAdmin): | ||
80 | + inlines = [ | ||
81 | + AlbumInline, | ||
82 | + SequenceAndSHInline, # for M2M interface | ||
83 | + ] | ||
84 | + | ||
85 | +class UserAdmin(admin.ModelAdmin): | ||
86 | + inlines = [ | ||
87 | + RequestInline, | ||
88 | + UserAndSPInline, # for M2M interface | ||
89 | + ] | ||
90 | + | ||
91 | +class StrategyObsAdmin(admin.ModelAdmin): | ||
92 | + inlines = [ | ||
93 | + AlertInline, | ||
94 | + ] | ||
95 | + | ||
96 | +class ScientificProgramAdmin(admin.ModelAdmin): | ||
97 | + inlines = [ | ||
98 | + RequestInline, | ||
99 | + UserAndSPInline, # for M2M interface | ||
100 | + ] | ||
101 | + exclude = ('users',) # for M2M interface | ||
102 | + | ||
103 | +class CountryAdmin(admin.ModelAdmin): | ||
104 | + inlines = [ | ||
105 | + UserInline, | ||
106 | + ] | ||
107 | + | ||
108 | +class UserLevelAdmin(admin.ModelAdmin): | ||
109 | + inlines = [ | ||
110 | + UserInline, | ||
111 | + ] | ||
112 | + | ||
113 | +class FilterAdmin(admin.ModelAdmin): | ||
114 | + inlines = [ | ||
115 | + PlanInline, | ||
116 | + ] | ||
117 | + | ||
118 | +class NrtAnalysisAdmin(admin.ModelAdmin): | ||
119 | + inlines = [ | ||
120 | + ImageInline, | ||
121 | + ] | ||
122 | + | ||
123 | +class DetectorAdmin(admin.ModelAdmin): | ||
124 | + inlines = [ | ||
125 | + FilterInline, | ||
126 | + AlbumInline, | ||
127 | + ] | ||
128 | + | ||
129 | +class TelescopeAdmin(admin.ModelAdmin): | ||
130 | + inlines = [ | ||
131 | + DetectorInline, | ||
132 | + ] | ||
133 | + | ||
134 | +class PlanAdmin(admin.ModelAdmin): | ||
135 | + inlines = [ | ||
136 | + ImageInline, | ||
137 | + ] | ||
138 | + | ||
139 | +class AlbumAdmin(admin.ModelAdmin): | ||
140 | + inlines = [ | ||
141 | + PlanInline, | ||
142 | + ] | ||
143 | + | ||
144 | +class SequenceTypeAdmin(admin.ModelAdmin): | ||
145 | + inlines = [ | ||
146 | + SequenceInline, | ||
147 | + ] | ||
148 | + | ||
149 | + | ||
150 | +# Link the models to the admin interface | ||
151 | + | ||
152 | +admin.site.register(Album, AlbumAdmin) | ||
153 | +admin.site.register(Alert) | ||
154 | +admin.site.register(Country, CountryAdmin) | ||
155 | +admin.site.register(Detector, DetectorAdmin) | ||
156 | +admin.site.register(Device) | ||
157 | +admin.site.register(Filter, FilterAdmin) | ||
158 | +admin.site.register(Image) | ||
159 | +admin.site.register(NrtAnalysis, NrtAnalysisAdmin) | ||
160 | +admin.site.register(Plan, PlanAdmin) | ||
161 | +admin.site.register(Request, RequestAdmin) | ||
162 | +admin.site.register(Schedule, ScheduleAdmin) | ||
163 | +admin.site.register(ScheduleHistory, ScheduleHistoryAdmin) | ||
164 | +admin.site.register(ScientificProgram, ScientificProgramAdmin) | ||
165 | +admin.site.register(Sequence, SequenceAdmin) | ||
166 | +admin.site.register(SequenceType, SequenceTypeAdmin) | ||
167 | +admin.site.register(SiteWatch) | ||
168 | +admin.site.register(SiteWatchHistory) | ||
169 | +admin.site.register(StrategyObs, StrategyObsAdmin) | ||
170 | +admin.site.register(Telescope, TelescopeAdmin) | ||
171 | +admin.site.register(User, UserAdmin) | ||
172 | +admin.site.register(UserLevel, UserLevelAdmin) | ||
173 | +admin.site.register(WeatherWatch) | ||
174 | +admin.site.register(WeatherWatchHistory) |
@@ -0,0 +1,464 @@ | @@ -0,0 +1,464 @@ | ||
1 | +# This is an auto-generated Django model module. | ||
2 | +# You'll have to do the following manually to clean this up: | ||
3 | +# * Rearrange models' order | ||
4 | +# * Make sure each model has one field with primary_key=True | ||
5 | +# * Make sure each ForeignKey has `on_delete` set to the desired behavior. | ||
6 | +# * Remove `managed = False` lines if you wish to allow Django to create, modify, and delete the table | ||
7 | +# Feel free to rename the models, but don't rename db_table values or field names. | ||
8 | +from __future__ import unicode_literals | ||
9 | + | ||
10 | +from django.db import models | ||
11 | + | ||
12 | + | ||
13 | +class Album(models.Model): | ||
14 | + sequence = models.ForeignKey('Sequence', models.CASCADE, related_name="albums") | ||
15 | + detector = models.ForeignKey('Detector', models.DO_NOTHING, related_name="albums") | ||
16 | + name = models.CharField(max_length=45, blank=True, null=True) | ||
17 | + desc = models.TextField(blank=True, null=True) | ||
18 | + created = models.DateTimeField(blank=True, null=True) | ||
19 | + updated = models.DateTimeField(blank=True, null=True) | ||
20 | + | ||
21 | + class Meta: | ||
22 | + managed = True | ||
23 | + db_table = 'album' | ||
24 | + | ||
25 | + def __str__(self): | ||
26 | + return (str(self.name)) | ||
27 | + | ||
28 | + | ||
29 | +class Alert(models.Model): | ||
30 | + request = models.OneToOneField('Request', models.CASCADE) | ||
31 | + strategyobs = models.ForeignKey('StrategyObs', models.DO_NOTHING, related_name="alerts") | ||
32 | + voevent_xml = models.TextField(blank=True, null=True) | ||
33 | + type = models.CharField(max_length=45, blank=True, null=True) | ||
34 | + client = models.CharField(max_length=45, blank=True, null=True) | ||
35 | + burst_jd = models.CharField(max_length=45, blank=True, null=True) | ||
36 | + burst_ra = models.CharField(max_length=45, blank=True, null=True) | ||
37 | + burst_dec = models.CharField(max_length=45, blank=True, null=True) | ||
38 | + equinox = models.CharField(max_length=45, blank=True, null=True) | ||
39 | + jd_pkt = models.IntegerField(blank=True, null=True) | ||
40 | + jd_send = models.IntegerField(blank=True, null=True) | ||
41 | + jd_received = models.IntegerField(blank=True, null=True) | ||
42 | + trigger_instrum = models.CharField(max_length=45, blank=True, null=True) | ||
43 | + trigger_num = models.CharField(max_length=45, blank=True, null=True) | ||
44 | + grb_error = models.CharField(max_length=45, blank=True, null=True) | ||
45 | + def_not_grb = models.IntegerField(blank=True, null=True) | ||
46 | + editor = models.CharField(max_length=45, blank=True, null=True) | ||
47 | + flag = models.CharField(max_length=45, blank=True, null=True) | ||
48 | + idgcn_notice = models.IntegerField(blank=True, null=True) | ||
49 | + | ||
50 | + class Meta: | ||
51 | + managed = True | ||
52 | + db_table = 'alert' | ||
53 | + | ||
54 | + def __str__(self): | ||
55 | + return (self.request.name) | ||
56 | + | ||
57 | + | ||
58 | +class Country(models.Model): | ||
59 | + name = models.CharField(max_length=45, blank=True, null=True) | ||
60 | + desc = models.TextField(blank=True, null=True) | ||
61 | + quota = models.FloatField(blank=True, null=True) | ||
62 | + | ||
63 | + class Meta: | ||
64 | + managed = True | ||
65 | + db_table = 'country' | ||
66 | + | ||
67 | + def __str__(self): | ||
68 | + return (str(self.name)) | ||
69 | + | ||
70 | + | ||
71 | +class Detector(models.Model): | ||
72 | + device = models.OneToOneField('Device', models.CASCADE) | ||
73 | + telescope = models.ForeignKey('Telescope', models.DO_NOTHING, related_name="detectors") | ||
74 | + status = models.CharField(max_length=7, blank=True, null=True) | ||
75 | + nb_photo_x = models.IntegerField(blank=True, null=True) | ||
76 | + nb_photo_y = models.IntegerField(blank=True, null=True) | ||
77 | + photo_size_x = models.IntegerField(blank=True, null=True) | ||
78 | + photo_size_y = models.IntegerField(blank=True, null=True) | ||
79 | + has_shutter = models.IntegerField(blank=True, null=True) | ||
80 | + equivalent_foc_len = models.CharField(max_length=45, blank=True, null=True) | ||
81 | + acq_start = models.DateTimeField(blank=True, null=True) | ||
82 | + acq_stop = models.DateTimeField(blank=True, null=True) | ||
83 | + check_temp = models.FloatField(blank=True, null=True) | ||
84 | + gain = models.FloatField(blank=True, null=True) | ||
85 | + readout_noise = models.FloatField(blank=True, null=True) | ||
86 | + readout_time = models.FloatField(blank=True, null=True) | ||
87 | + idcam_readout_mode = models.IntegerField(blank=True, null=True) | ||
88 | + | ||
89 | + class Meta: | ||
90 | + managed = True | ||
91 | + db_table = 'detector' | ||
92 | + | ||
93 | + def __str__(self): | ||
94 | + return (self.device.name) | ||
95 | + | ||
96 | +class Device(models.Model): | ||
97 | + name = models.CharField(max_length=45, blank=True, null=True) | ||
98 | + desc = models.TextField(blank=True, null=True) | ||
99 | + created = models.DateTimeField(blank=True, null=True) | ||
100 | + updated = models.DateTimeField(blank=True, null=True) | ||
101 | + is_online = models.IntegerField(blank=True, null=True) | ||
102 | + status = models.CharField(max_length=11, blank=True, null=True) | ||
103 | + maintenance_date = models.DateTimeField(blank=True, null=True) | ||
104 | + | ||
105 | + class Meta: | ||
106 | + managed = True | ||
107 | + db_table = 'device' | ||
108 | + | ||
109 | + def __str__(self): | ||
110 | + return (str(self.name)) | ||
111 | + | ||
112 | +class Filter(models.Model): | ||
113 | + device = models.OneToOneField(Device, models.CASCADE) | ||
114 | + detector = models.ForeignKey(Detector, models.DO_NOTHING, related_name="filters") | ||
115 | + category = models.CharField(max_length=1, blank=True, null=True) | ||
116 | + transmission_curve_doc = models.CharField(max_length=45, blank=True, null=True) | ||
117 | + | ||
118 | + class Meta: | ||
119 | + managed = True | ||
120 | + db_table = 'filter' | ||
121 | + | ||
122 | + def __str__(self): | ||
123 | + return (self.device.name) | ||
124 | + | ||
125 | + | ||
126 | +class Image(models.Model): | ||
127 | + plan = models.ForeignKey('Plan', models.CASCADE, related_name="images") | ||
128 | + nrtanalysis = models.ForeignKey('NrtAnalysis', models.DO_NOTHING, blank=True, null=True, related_name="images") | ||
129 | + name = models.CharField(max_length=45, blank=True, null=True) | ||
130 | + desc = models.TextField(blank=True, null=True) | ||
131 | + created = models.DateTimeField(blank=True, null=True) | ||
132 | + updated = models.DateTimeField(blank=True, null=True) | ||
133 | + date_from_gps = models.CharField(max_length=45, blank=True, null=True) | ||
134 | + level = models.IntegerField(blank=True, null=True) | ||
135 | + type = models.CharField(max_length=5, blank=True, null=True) | ||
136 | + quality = models.CharField(max_length=45, blank=True, null=True) | ||
137 | + flaggps = models.CharField(max_length=45, blank=True, null=True) | ||
138 | + exposure = models.CharField(max_length=45, blank=True, null=True) | ||
139 | + tempext = models.CharField(max_length=45, blank=True, null=True) | ||
140 | + pressure = models.CharField(max_length=45, blank=True, null=True) | ||
141 | + humidext = models.CharField(max_length=45, blank=True, null=True) | ||
142 | + wind = models.CharField(max_length=45, blank=True, null=True) | ||
143 | + wind_dir = models.CharField(max_length=45, blank=True, null=True) | ||
144 | + dwnimg = models.CharField(max_length=45, blank=True, null=True) | ||
145 | + dwncata = models.CharField(max_length=45, blank=True, null=True) | ||
146 | + dwn = models.CharField(max_length=45, blank=True, null=True) | ||
147 | + level0_fits_name = models.CharField(max_length=45, blank=True, null=True) | ||
148 | + level1a_fits_name = models.CharField(max_length=45, blank=True, null=True) | ||
149 | + level1b_fits_name = models.CharField(max_length=45, blank=True, null=True) | ||
150 | + | ||
151 | + class Meta: | ||
152 | + managed = True | ||
153 | + db_table = 'image' | ||
154 | + | ||
155 | + def __str__(self): | ||
156 | + return (str(self.name)) | ||
157 | + | ||
158 | + | ||
159 | +class NrtAnalysis(models.Model): | ||
160 | + name = models.CharField(max_length=45, blank=True, null=True) | ||
161 | + desc = models.TextField(blank=True, null=True) | ||
162 | + created = models.DateTimeField(blank=True, null=True) | ||
163 | + updated = models.DateTimeField(blank=True, null=True) | ||
164 | + analysis = models.TextField(blank=True, null=True) | ||
165 | + | ||
166 | + class Meta: | ||
167 | + managed = True | ||
168 | + db_table = 'nrtanalysis' | ||
169 | + | ||
170 | + def __str__(self): | ||
171 | + return (str(self.name)) | ||
172 | + | ||
173 | + | ||
174 | +class Plan(models.Model): | ||
175 | + album = models.ForeignKey(Album, models.CASCADE, related_name="plans") | ||
176 | + filter = models.ForeignKey(Filter, models.DO_NOTHING, related_name="plans") | ||
177 | + name = models.CharField(max_length=45, blank=True, null=True) | ||
178 | + desc = models.CharField(max_length=45, blank=True, null=True) | ||
179 | + created = models.DateTimeField(blank=True, null=True) | ||
180 | + updated = models.DateTimeField(blank=True, null=True) | ||
181 | + duration = models.FloatField(blank=True, null=True) | ||
182 | + position = models.CharField(max_length=45, blank=True, null=True) | ||
183 | + exposure_time = models.FloatField(blank=True, null=True) | ||
184 | + nb_images = models.IntegerField(blank=True, null=True) | ||
185 | + dithering = models.IntegerField(blank=True, null=True) | ||
186 | + | ||
187 | + class Meta: | ||
188 | + managed = True | ||
189 | + db_table = 'plan' | ||
190 | + | ||
191 | + def __str__(self): | ||
192 | + return (str(self.name)) | ||
193 | + | ||
194 | + | ||
195 | +class Request(models.Model): | ||
196 | + user = models.ForeignKey('User', models.DO_NOTHING, related_name="requests") | ||
197 | + scientificprogram = models.ForeignKey('ScientificProgram', models.DO_NOTHING, related_name="requests") | ||
198 | + name = models.CharField(max_length=45, blank=True, null=True) | ||
199 | + desc = models.TextField(blank=True, null=True) | ||
200 | + created = models.DateTimeField(blank=True, null=True) | ||
201 | + updated = models.DateTimeField(blank=True, null=True) | ||
202 | + is_alert = models.IntegerField(blank=True, null=True) | ||
203 | + type = models.CharField(max_length=8, blank=True, null=True) | ||
204 | + status = models.CharField(max_length=10, blank=True, null=True) | ||
205 | + target_or_theme = models.CharField(max_length=45, blank=True, null=True) | ||
206 | + priority = models.IntegerField(blank=True, null=True) | ||
207 | + autodeposit = models.IntegerField(blank=True, null=True) | ||
208 | + checkpoint = models.CharField(max_length=45, blank=True, null=True) | ||
209 | + flag = models.CharField(max_length=45, blank=True, null=True) | ||
210 | + | ||
211 | + class Meta: | ||
212 | + managed = True | ||
213 | + db_table = 'request' | ||
214 | + | ||
215 | + def __str__(self): | ||
216 | + return (str(self.name)) | ||
217 | + | ||
218 | + | ||
219 | +class Schedule(models.Model): | ||
220 | + created = models.DateTimeField(blank=True, null=True) | ||
221 | + day_start = models.DateTimeField(blank=True, null=True) | ||
222 | + day_stop = models.DateTimeField(blank=True, null=True) | ||
223 | + flag = models.CharField(max_length=45, blank=True, null=True) | ||
224 | + | ||
225 | + class Meta: | ||
226 | + managed = True | ||
227 | + db_table = 'schedule' | ||
228 | + | ||
229 | + def __str__(self): | ||
230 | + return (str(self.created)) | ||
231 | + | ||
232 | + | ||
233 | +class ScheduleHistory(models.Model): | ||
234 | + sequences = models.ManyToManyField('Sequence', related_name='schedulehistorys') | ||
235 | + created = models.DateTimeField(blank=True, null=True) | ||
236 | + day_start = models.DateTimeField(blank=True, null=True) | ||
237 | + day_stop = models.DateTimeField(blank=True, null=True) | ||
238 | + flag = models.CharField(max_length=45, blank=True, null=True) | ||
239 | + | ||
240 | + class Meta: | ||
241 | + managed = True | ||
242 | + db_table = 'schedulehistory' | ||
243 | + | ||
244 | + def __str__(self): | ||
245 | + return (str(self.created)) | ||
246 | + | ||
247 | + | ||
248 | +class ScientificProgram(models.Model): | ||
249 | + users = models.ManyToManyField('User', related_name="scientificprograms") | ||
250 | + name = models.CharField(max_length=45, blank=True, null=True) | ||
251 | + desc = models.TextField(blank=True, null=True) | ||
252 | + quota = models.FloatField(blank=True, null=True) | ||
253 | + priority = models.IntegerField(blank=True, null=True) | ||
254 | + | ||
255 | + class Meta: | ||
256 | + managed = True | ||
257 | + db_table = 'scientificprogram' | ||
258 | + | ||
259 | + def __str__(self): | ||
260 | + return (str(self.name)) | ||
261 | + | ||
262 | +class Sequence(models.Model): | ||
263 | + request = models.ForeignKey(Request, models.CASCADE, related_name="sequences") | ||
264 | + sequencetype = models.ForeignKey('SequenceType', models.DO_NOTHING, related_name="sequences") | ||
265 | + schedule = models.ForeignKey(Schedule, models.DO_NOTHING, related_name="sequences") | ||
266 | + name = models.CharField(max_length=45, blank=True, null=True) | ||
267 | + desc = models.TextField(blank=True, null=True) | ||
268 | + created = models.DateTimeField(blank=True, null=True) | ||
269 | + updated = models.DateTimeField(blank=True, null=True) | ||
270 | + is_alert = models.IntegerField(blank=True, null=True) | ||
271 | + status = models.CharField(max_length=11, blank=True, null=True) | ||
272 | + duration = models.FloatField(blank=True, null=True) | ||
273 | + pointing = models.CharField(max_length=45, blank=True, null=True) | ||
274 | + with_drift = models.IntegerField(blank=True, null=True) | ||
275 | + priority = models.IntegerField(blank=True, null=True) | ||
276 | + analysis_method = models.CharField(max_length=45, blank=True, null=True) | ||
277 | + exec_start = models.DateTimeField() | ||
278 | + exec_stop = models.DateTimeField(blank=True, null=True) | ||
279 | + moon_min = models.IntegerField(blank=True, null=True) | ||
280 | + alt_min = models.IntegerField(blank=True, null=True) | ||
281 | + type = models.CharField(max_length=6, blank=True, null=True) | ||
282 | + img_current = models.CharField(max_length=45, blank=True, null=True) | ||
283 | + img_total = models.CharField(max_length=45, blank=True, null=True) | ||
284 | + not_obs = models.IntegerField(blank=True, null=True) | ||
285 | + obsolete = models.IntegerField(blank=True, null=True) | ||
286 | + processing = models.IntegerField(blank=True, null=True) | ||
287 | + flag = models.CharField(max_length=45, blank=True, null=True) | ||
288 | + | ||
289 | + class Meta: | ||
290 | + managed = True | ||
291 | + db_table = 'sequence' | ||
292 | + | ||
293 | + def __str__(self): | ||
294 | + return (str(self.name)) | ||
295 | + | ||
296 | + | ||
297 | +class SequenceType(models.Model): | ||
298 | + name = models.CharField(max_length=45, blank=True, null=True) | ||
299 | + desc = models.TextField(blank=True, null=True) | ||
300 | + priority = models.IntegerField(blank=True, null=True) | ||
301 | + | ||
302 | + class Meta: | ||
303 | + managed = True | ||
304 | + db_table = 'sequencetype' | ||
305 | + | ||
306 | + def __str__(self): | ||
307 | + return (str(self.name)) | ||
308 | + | ||
309 | + | ||
310 | +class SiteWatch(models.Model): | ||
311 | + updated = models.DateTimeField(blank=True, null=True) | ||
312 | + lights = models.CharField(max_length=45, blank=True, null=True) | ||
313 | + dome = models.CharField(max_length=45, blank=True, null=True) | ||
314 | + doors = models.CharField(max_length=45, blank=True, null=True) | ||
315 | + temperature = models.FloatField(blank=True, null=True) | ||
316 | + | ||
317 | + class Meta: | ||
318 | + managed = True | ||
319 | + db_table = 'sitewatch' | ||
320 | + | ||
321 | + def __str__(self): | ||
322 | + return (str(self.updated)) | ||
323 | + | ||
324 | + | ||
325 | +class SiteWatchHistory(models.Model): | ||
326 | + id = models.IntegerField(primary_key=True) | ||
327 | + | ||
328 | + class Meta: | ||
329 | + managed = True | ||
330 | + db_table = 'sitewatchhistory' | ||
331 | + | ||
332 | + | ||
333 | +class StrategyObs(models.Model): | ||
334 | + name = models.CharField(max_length=45, blank=True, null=True) | ||
335 | + desc = models.TextField(blank=True, null=True) | ||
336 | + json_file = models.CharField(max_length=45, blank=True, null=True) | ||
337 | + | ||
338 | + class Meta: | ||
339 | + managed = True | ||
340 | + db_table = 'strategyobs' | ||
341 | + | ||
342 | + def __str__(self): | ||
343 | + return (str(self.name)) | ||
344 | + | ||
345 | + | ||
346 | +class Telescope(models.Model): | ||
347 | + device = models.OneToOneField(Device, models.CASCADE) | ||
348 | + mount_type = models.CharField(max_length=9, blank=True, null=True) | ||
349 | + diameter = models.FloatField(blank=True, null=True) | ||
350 | + status = models.CharField(max_length=45, blank=True, null=True) | ||
351 | + latitude = models.FloatField(blank=True, null=True) | ||
352 | + longitude = models.FloatField(blank=True, null=True) | ||
353 | + sens = models.CharField(max_length=1, blank=True, null=True) | ||
354 | + altitude = models.FloatField(blank=True, null=True) | ||
355 | + readout_time = models.IntegerField(blank=True, null=True) | ||
356 | + slew_time = models.IntegerField(blank=True, null=True) | ||
357 | + slew_dead = models.IntegerField(blank=True, null=True) | ||
358 | + slew_rate_max = models.FloatField(blank=True, null=True) | ||
359 | + horizon_type = models.CharField(max_length=45, blank=True, null=True) | ||
360 | + horizon_def = models.FloatField(blank=True, null=True) | ||
361 | + lim_dec_max = models.FloatField(blank=True, null=True) | ||
362 | + lim_dec_min = models.FloatField(blank=True, null=True) | ||
363 | + lim_ha_rise = models.FloatField(blank=True, null=True) | ||
364 | + lim_ha_set = models.FloatField(blank=True, null=True) | ||
365 | + address = models.CharField(max_length=45, blank=True, null=True) | ||
366 | + night_elev_sun = models.FloatField(blank=True, null=True) | ||
367 | + mpc_code = models.CharField(max_length=45, blank=True, null=True) | ||
368 | + | ||
369 | + class Meta: | ||
370 | + managed = True | ||
371 | + db_table = 'telescope' | ||
372 | + | ||
373 | + def __str__(self): | ||
374 | + return (self.device.name) | ||
375 | + | ||
376 | + | ||
377 | +class User(models.Model): | ||
378 | + country = models.ForeignKey(Country, models.DO_NOTHING, related_name="users") | ||
379 | + userlevel = models.ForeignKey('UserLevel', models.DO_NOTHING, related_name="users") | ||
380 | + name = models.CharField(max_length=45, blank=True, null=True) | ||
381 | + desc = models.TextField(blank=True, null=True) | ||
382 | + created = models.DateTimeField(blank=True, null=True) | ||
383 | + updated = models.DateTimeField(blank=True, null=True) | ||
384 | + firstname = models.CharField(max_length=45, blank=True, null=True) | ||
385 | + email = models.CharField(max_length=45, blank=True, null=True) | ||
386 | + url = models.CharField(max_length=45, blank=True, null=True) | ||
387 | + tel1 = models.CharField(max_length=45, blank=True, null=True) | ||
388 | + tel2 = models.CharField(max_length=45, blank=True, null=True) | ||
389 | + address = models.CharField(max_length=45, blank=True, null=True) | ||
390 | + login = models.CharField(max_length=15, blank=True, null=True) | ||
391 | + pass_field = models.CharField(db_column='pass', max_length=45, blank=True, null=True) # Field renamed because it was a Python reserved word. | ||
392 | + last_connect = models.DateTimeField(blank=True, null=True) | ||
393 | + cur_connect = models.DateTimeField(blank=True, null=True) | ||
394 | + putvalid_beg = models.DateTimeField(blank=True, null=True) | ||
395 | + putvalid_end = models.DateTimeField(blank=True, null=True) | ||
396 | + acqvalid_beg = models.CharField(max_length=45, blank=True, null=True) | ||
397 | + acqvalid_end = models.CharField(max_length=45, blank=True, null=True) | ||
398 | + quota = models.FloatField(blank=True, null=True) | ||
399 | + quota_rea = models.FloatField(blank=True, null=True) | ||
400 | + u_priority = models.IntegerField(blank=True, null=True) | ||
401 | + p_priority = models.IntegerField(blank=True, null=True) | ||
402 | + dir_level = models.IntegerField(blank=True, null=True) | ||
403 | + can_del_void_req = models.IntegerField(blank=True, null=True) | ||
404 | + | ||
405 | + class Meta: | ||
406 | + managed = True | ||
407 | + db_table = 'user' | ||
408 | + | ||
409 | + def __str__(self): | ||
410 | + return (str(self.name)) | ||
411 | + | ||
412 | + | ||
413 | +class UserLevel(models.Model): | ||
414 | + name = models.CharField(max_length=45, blank=True, null=True) | ||
415 | + desc = models.TextField(blank=True, null=True) | ||
416 | + priority = models.IntegerField(blank=True, null=True) | ||
417 | + quota = models.FloatField(blank=True, null=True) | ||
418 | + | ||
419 | + class Meta: | ||
420 | + managed = True | ||
421 | + db_table = 'userlevel' | ||
422 | + | ||
423 | + def __str__(self): | ||
424 | + return (str(self.name)) | ||
425 | + | ||
426 | + | ||
427 | +class WeatherWatch(models.Model): | ||
428 | + updated = models.DateTimeField(blank=True, null=True) | ||
429 | + humid_int = models.FloatField(blank=True, null=True) | ||
430 | + humid_ext = models.FloatField(blank=True, null=True) | ||
431 | + wind = models.FloatField(blank=True, null=True) | ||
432 | + wind_dir = models.CharField(max_length=1, blank=True, null=True) | ||
433 | + temp_int = models.FloatField(blank=True, null=True) | ||
434 | + temp_ext = models.FloatField(blank=True, null=True) | ||
435 | + pressure = models.FloatField(blank=True, null=True) | ||
436 | + rain = models.FloatField(blank=True, null=True) | ||
437 | + dwn = models.CharField(max_length=45, blank=True, null=True) | ||
438 | + | ||
439 | + class Meta: | ||
440 | + managed = True | ||
441 | + db_table = 'weatherwatch' | ||
442 | + | ||
443 | + def __str__(self): | ||
444 | + return (str(self.updated)) | ||
445 | + | ||
446 | + | ||
447 | +class WeatherWatchHistory(models.Model): | ||
448 | + datetime = models.DateTimeField(blank=True, null=True) | ||
449 | + humid_int = models.CharField(max_length=45, blank=True, null=True) | ||
450 | + humid_ext = models.CharField(max_length=45, blank=True, null=True) | ||
451 | + wind = models.CharField(max_length=45, blank=True, null=True) | ||
452 | + wind_dir = models.CharField(max_length=45, blank=True, null=True) | ||
453 | + temp_int = models.CharField(max_length=45, blank=True, null=True) | ||
454 | + temp_ext = models.CharField(max_length=45, blank=True, null=True) | ||
455 | + pressure = models.CharField(max_length=45, blank=True, null=True) | ||
456 | + rain = models.CharField(max_length=45, blank=True, null=True) | ||
457 | + dwn = models.CharField(max_length=45, blank=True, null=True) | ||
458 | + | ||
459 | + class Meta: | ||
460 | + managed = True | ||
461 | + db_table = 'weatherwatchhistory' | ||
462 | + | ||
463 | + def __str__(self): | ||
464 | + return (str(self.datetime)) |