[cig-commits] r11740 - in cs/portal/trunk/seismo/SeismoWebPortal: . data sql templates/SeismoWebPortal
leif at geodynamics.org
leif at geodynamics.org
Wed Apr 2 19:02:26 PDT 2008
Author: leif
Date: 2008-04-02 19:02:25 -0700 (Wed, 02 Apr 2008)
New Revision: 11740
Added:
cs/portal/trunk/seismo/SeismoWebPortal/data/
cs/portal/trunk/seismo/SeismoWebPortal/data/STATIONS_FULL_758
cs/portal/trunk/seismo/SeismoWebPortal/management.py
cs/portal/trunk/seismo/SeismoWebPortal/templates/SeismoWebPortal/eventworkspace_form.html
cs/portal/trunk/seismo/SeismoWebPortal/templates/SeismoWebPortal/folder.html
Removed:
cs/portal/trunk/seismo/SeismoWebPortal/templates/SeismoWebPortal/home.html
cs/portal/trunk/seismo/SeismoWebPortal/templates/SeismoWebPortal/trash.html
Modified:
cs/portal/trunk/seismo/SeismoWebPortal/forms.py
cs/portal/trunk/seismo/SeismoWebPortal/gui.py
cs/portal/trunk/seismo/SeismoWebPortal/middleware.py
cs/portal/trunk/seismo/SeismoWebPortal/models.py
cs/portal/trunk/seismo/SeismoWebPortal/sql/stationnetwork.sql
cs/portal/trunk/seismo/SeismoWebPortal/templates/SeismoWebPortal/mineosparameters_form.html
cs/portal/trunk/seismo/SeismoWebPortal/templates/SeismoWebPortal/specfem3dglobeparameters_detail.html
cs/portal/trunk/seismo/SeismoWebPortal/templates/SeismoWebPortal/specfem3dglobeparameters_form.html
cs/portal/trunk/seismo/SeismoWebPortal/templates/SeismoWebPortal/specfem3dgloberequest_form.html
cs/portal/trunk/seismo/SeismoWebPortal/views.py
Log:
More work on Event Viewer -- browsing to an event now creates an
"EventWorkspace". Generate defaults for Specfem during "syncdb".
Added "Shared" folder.
Copied: cs/portal/trunk/seismo/SeismoWebPortal/data/STATIONS_FULL_758 (from rev 11739, seismo/3D/SPECFEM3D_GLOBE/trunk/DATA/STATIONS_FULL_758)
===================================================================
--- cs/portal/trunk/seismo/SeismoWebPortal/data/STATIONS_FULL_758 (rev 0)
+++ cs/portal/trunk/seismo/SeismoWebPortal/data/STATIONS_FULL_758 2008-04-03 02:02:25 UTC (rev 11740)
@@ -0,0 +1,758 @@
+MCK AK 63.7323 -148.9349 618.0 0.0
+CTAO AS -20.0882 146.2545 357.0 0.0
+KONO AS 59.6491 9.5982 216.0 0.0
+MAJO AS 36.5409 138.2083 431.0 0.0
+ZOBO AS -16.2700 -68.1250 4450.0 0.0
+ASBS AZ 33.6208 -116.4664 1400.0 0.0
+BZN AZ 33.4915 -116.6670 1301.0 0.0
+CRY AZ 33.5654 -116.7373 1128.0 0.0
+ELKS AZ 33.5813 -116.4496 1169.0 0.0
+FRD AZ 33.4947 -116.6022 1164.0 0.0
+GLA AZ 33.0512 -114.8270 579.0 0.0
+GLAC AZ 33.6014 -116.4781 1169.0 0.0
+KNW AZ 33.7141 -116.7119 1507.0 0.0
+LVA2 AZ 33.3516 -116.5615 1435.0 0.0
+MONP AZ 32.8927 -116.4225 1920.0 0.0
+PFO AZ 33.6117 -116.4594 1259.0 0.0
+RDM AZ 33.6300 -116.8478 1365.0 0.0
+SHUM AZ 33.6327 -116.4445 1195.0 0.0
+SMTC AZ 32.9449 -115.7999 100.0 0.0
+SND AZ 33.5519 -116.6129 1358.0 0.0
+SOL AZ 32.8410 -117.2480 245.0 0.0
+TRO AZ 33.5234 -116.4257 2628.0 0.0
+WMC AZ 33.5736 -116.6747 1271.0 0.0
+YAQ AZ 33.1666 -116.3539 430.0 0.0
+BFO BF 48.3319 8.3311 739.0 0.0
+CMB BK 38.0350 -120.3850 719.0 0.0
+BJI CD 40.0403 116.1750 43.0 0.0
+ENH CD 30.2718 109.4868 487.0 0.0
+HIA CD 49.2667 119.7417 610.0 0.0
+KMI CD 25.1233 102.7400 1975.0 0.0
+LSA CD 29.7000 91.1500 3789.0 0.0
+LZH CD 36.0867 103.8444 1560.0 0.0
+MDJ CD 44.6164 129.5919 250.0 0.0
+QIZ CD 19.0294 109.8433 230.0 0.0
+SSE CD 31.0956 121.1867 15.0 0.0
+WMQ CD 43.8211 87.6950 903.0 0.0
+DRLN CN 49.2560 -57.5042 238.0 0.0
+FRB CN 63.7467 -68.5467 18.0 0.0
+GAC CN 45.7033 -75.4783 62.0 0.0
+INK CN 68.3067 -133.5200 40.0 0.0
+LLLB CN 50.6090 -121.8815 700.0 0.0
+MBC CN 76.2417 -119.3600 15.0 0.0
+PMB CN 50.5188 -123.0765 400.0 0.0
+RES CN 74.6870 -94.9000 15.0 0.0
+SCHQ CN 54.8319 -66.8336 501.0 0.0
+WHY CN 60.6597 -134.8806 1292.0 0.0
+YKW1 CN 62.4931 -114.5086 204.9 0.0
+YKW3 CN 62.5608 -114.6164 200.0 0.0
+FERN CT 37.1526 -121.8123 518.0 0.0
+ICAN CT 37.5049 -121.3278 312.0 0.0
+SAVY CT 37.3889 -121.4956 600.0 0.0
+BTO CU 42.5060 -71.5580 180.0 0.0
+GUYA CU 42.5060 -71.5580 180.0 0.0
+NJ2 CU 42.5060 -71.5580 180.0 0.0
+TIA CU 42.5060 -71.5580 180.0 0.0
+TIL CU 42.5060 -71.5580 180.0 0.0
+TIY CU 42.5060 -71.5580 180.0 0.0
+DPC CZ 50.3583 16.4111 760.0 0.0
+AFI DW -13.9093 -171.7773 706.0 0.0
+BDF DW -15.6639 -47.9033 1260.0 0.0
+CMB DW 38.0350 -120.3850 719.0 0.0
+COL DW 64.9000 -147.7933 320.0 0.0
+GDH DW 69.2500 -53.5333 23.0 0.0
+HON DW 21.3217 -158.0083 2.0 0.0
+KEV DW 69.7553 27.0067 80.0 0.0
+LON DW 46.7500 -121.8100 854.0 0.0
+SCP DW 40.7949 -77.8650 352.0 0.0
+SLR DW -25.7349 28.2816 1348.0 0.0
+TAU DW -42.9099 147.3204 132.0 0.0
+TOL DW 39.8814 -4.0485 480.0 0.0
+APE GE 37.1454 25.5230 615.0 0.0
+APEZ GE 34.9777 24.8859 435.0 0.0
+BGIO GE 31.7219 35.0877 752.0 0.0
+BOA GE 12.4493 -85.6659 380.0 0.0
+BRNL GE 52.4278 13.3580 42.0 0.0
+CART GE 37.5868 -1.0012 65.0 0.0
+CSS GE 34.9611 33.3310 396.0 0.0
+DAG GE 76.7713 -18.6550 23.0 0.0
+DSB GE 53.2452 -6.3762 236.0 0.0
+EIL GE 29.6699 34.9512 210.0 0.0
+FODE GE 35.3797 24.9576 50.0 0.0
+GHAR GE 32.1220 13.0864 675.0 0.0
+GVD GE 34.8392 24.0873 180.0 0.0
+IBBN GE 52.3072 7.7566 140.0 0.0
+ISP GE 37.8433 30.5093 1100.0 0.0
+JER GE 31.7719 35.1972 770.0 0.0
+KBS GE 78.9256 11.9417 77.0 0.0
+KMBO GE -1.1268 37.2523 1960.0 0.0
+KRIS GE 35.1780 25.5030 850.0 0.0
+KWP GE 49.6305 22.7078 463.0 0.0
+LID GE 54.5481 13.3664 1.0 0.0
+LVC GE -22.6182 -68.9113 2915.0 0.0
+MAHO GE 39.8959 4.2665 15.0 0.0
+MALT GE 38.3134 38.4273 1120.0 0.0
+MAUI GE 20.7668 -156.2448 2060.0 0.0
+MELI GE 35.2900 -2.9380 20.0 0.0
+MHV GE 54.9595 37.7664 150.0 0.0
+MLR GE 45.4912 25.9456 1378.0 0.0
+MORC GE 49.7766 17.5428 740.0 0.0
+MRNI GE 33.1178 35.3920 918.0 0.0
+MTE GE 40.3997 -7.5442 815.0 0.0
+NAI GE -1.2739 36.8037 1692.0 0.0
+PMG GE -9.4092 147.1539 67.0 0.0
+PSZ GE 47.9190 19.8940 549.0 0.0
+PUL GE 59.7670 30.3170 65.0 0.0
+RGN GE 54.5477 13.3214 15.0 0.0
+RIOB GE -10.1501 -67.7470 0.0 0.0
+RUE GE 52.4759 13.7800 40.0 0.0
+SANT GE 36.3710 25.4590 540.0 0.0
+SELV GE 37.2383 -3.7277 650.0 0.0
+SFJ GE 66.9967 -50.6156 365.0 0.0
+SFS GE 36.4656 -6.2055 21.0 0.0
+SFUC GE 36.6370 -6.1750 88.0 0.0
+SKD GE 35.4120 23.9280 306.0 0.0
+SNAA GE -71.6707 -2.8379 846.0 0.0
+STU GE 48.7719 9.1950 360.0 0.0
+SUW GE 54.0125 23.1808 152.0 0.0
+TRTE GE 58.3786 26.7205 0.0 0.0
+UGM GE -7.9125 110.5231 350.0 0.0
+WLF GE 49.6646 6.1526 295.0 0.0
+GRA1 GR 49.6919 11.2217 499.5 0.0
+AIS G -37.7970 77.5690 35.0 0.0
+ATD G 11.5300 42.8470 610.0 0.0
+BNG G 4.4350 18.5470 378.0 0.0
+CAN G -35.3210 148.9990 650.0 0.0
+CRZF G -46.4300 51.8610 140.0 0.0
+DRV G -66.6650 140.0100 40.0 0.0
+ECH G 48.2160 7.1580 580.0 0.0
+EVO G 38.5320 -8.0130 0.0 0.0
+FDF G 14.7350 -61.1430 467.0 0.0
+HDC G 10.0000 -84.1120 1150.0 0.0
+HYB G 17.4170 78.5530 510.0 0.0
+INU G 35.3500 137.0290 132.0 0.0
+KIP G 21.4230 -158.0150 70.0 0.0
+KOG G 5.2070 -52.7320 10.0 0.0
+NOUC G -22.1010 166.3030 112.0 0.0
+PAF G -49.3510 70.2130 17.0 0.0
+PEL G -33.1460 -70.6750 660.0 0.0
+PPT G -17.5690 -149.5760 340.0 0.0
+PVC G -17.7400 168.3120 80.0 0.0
+RER G -21.1590 55.7460 834.0 0.0
+SCZ G 36.5980 -121.4030 261.0 0.0
+SEY G 62.9330 152.3730 206.0 0.0
+SPB G -23.5920 -47.4320 85.0 0.0
+SSB G 45.2790 4.5420 700.0 0.0
+SSB2 G 45.2790 4.5420 700.0 0.0
+SSB3 G 45.2790 4.5420 700.0 0.0
+TAM G 22.7910 5.5270 1377.0 0.0
+UNM G 19.3290 -99.1780 2280.0 0.0
+WUS G 41.1990 79.2180 1457.0 0.0
+BDFB GT -15.6418 -48.0148 1195.0 0.0
+BGCA GT 5.1764 18.4242 676.0 0.0
+BOSA GT -28.6141 25.2555 1280.0 0.0
+CPUP GT -26.3306 -57.3309 105.0 0.0
+DBIC GT 6.6702 -4.8566 125.0 0.0
+LBTB GT -25.0151 25.5967 1128.0 0.0
+LPAZ GT -16.2879 -68.1307 4769.0 0.0
+PLCA GT -40.7328 -70.5508 1050.0 0.0
+SBA GT -77.8491 166.7573 20.0 0.0
+VNDA GT -77.5172 161.8528 151.0 0.0
+H2O H2 27.8819 -141.9917 -4947.0 0.
+BJT IC 40.0183 116.1679 197.0 0.0
+ENH IC 30.2718 109.4868 487.0 0.0
+HIA IC 49.2667 119.7417 610.0 0.0
+KMI IC 25.1233 102.7400 1975.0 0.0
+LSA IC 29.7000 91.1500 3789.0 0.0
+MDJ IC 44.6164 129.5919 250.0 0.0
+QIZ IC 19.0294 109.8433 230.0 0.0
+SSE IC 31.0951 121.1859 15.0 0.0
+WMQ IC 43.8211 87.6950 903.0 0.0
+XAN IC 34.0313 108.9237 630.0 0.0
+AAK II 42.6390 74.4940 1645.0 0.0
+ABKT II 37.9304 58.1189 678.0 0.0
+ALE II 82.5033 -62.3500 60.0 0.0
+ARU II 56.4302 58.5625 250.0 0.0
+ASCN II -7.9327 -14.3601 173.0 0.0
+BFO II 48.3319 8.3311 589.0 0.0
+BORG II 64.7474 -21.3268 110.0 0.0
+BRVK II 53.0581 70.2828 330.0 0.0
+CMLA II 37.7637 -25.5243 429.0 0.0
+COCO II -12.1901 96.8349 1.0 0.0
+EFI II -51.6753 -58.0637 110.0 0.0
+ERM II 42.0150 143.1572 40.0 0.0
+ESK II 55.3167 -3.2050 242.0 0.0
+FFC II 54.7250 -101.9783 338.0 0.0
+GAR II 39.0000 70.3167 1300.0 0.0
+HOPE II -54.2836 -36.4879 20.0 0.0
+JTS II 10.2908 -84.9525 340.0 0.0
+KAPI II -5.0142 119.7517 30.0 0.0
+KDAK II 57.7828 -152.5835 152.0 0.0
+KIV II 43.9562 42.6888 1210.0 0.0
+KURK II 50.7154 78.6202 184.0 0.0
+KWAJ II 8.8019 167.6130 0.0 0.0
+LVZ II 67.8979 34.6514 630.0 0.0
+MBAR II -0.6019 30.7382 1390.0 0.0
+MSEY II -4.6737 55.4792 475.0 0.0
+MSVF II -17.7333 178.0500 783.0 0.0
+NIL II 33.6506 73.2686 629.0 0.0
+NNA II -11.9875 -76.8422 575.0 0.0
+NRIL II 69.5049 88.4414 92.0 0.0
+NVS II 54.8404 83.2346 150.0 0.0
+OBN II 55.1138 36.5687 160.0 0.0
+PALK II 7.2728 80.7022 460.0 0.0
+PFO II 33.6092 -116.4553 1280.0 0.0
+RAYN II 23.5225 45.5032 631.0 0.0
+RPN II -27.1267 -109.3344 110.0 0.0
+SACV II 14.9702 -23.6085 387.0 0.0
+SHEL II -15.9588 -5.7457 537.0 0.0
+SUR II -32.3797 20.8117 1770.0 0.0
+TAU II -42.9099 147.3204 132.0 0.0
+TLY II 51.6807 103.6438 579.0 0.0
+WRAB II -19.9336 134.3600 366.0 0.0
+XPF II 33.6092 -116.4533 1280.0 0.0
+ATTU IM 52.8821 173.1643 250.0 0.0
+IL31 IM 64.7714 -146.8866 419.0 0.0
+PD31 IM 42.7672 -109.5581 2219.0 0.0
+TX00 IM 29.3338 -103.6670 1013.0 0.0
+TX31 IM 29.3342 -103.6678 1025.0 0.0
+TX32 IM 29.3338 -103.6670 1013.0 0.0
+VNDA IM -77.5139 161.8456 98.0 0.0
+WCI IU 38.2290 -86.2940 638.0 0.0
+WVT IU 36.1300 -87.8300 157.0 0.0
+XMAS IU 2.0448 -157.4453 2.0 0.0
+YAK IU 62.0308 129.6812 105.0 0.0
+YSS IU 46.9583 142.7610 100.0 0.0
+BTDF MS 1.3608 103.7729 64.0 0.0
+TIXI IU 71.6490 128.8665 50.0 0.0
+SBA IU -77.8491 166.7573 20.0 0.0
+SDV IU 8.8790 -70.6330 1550.0 0.0
+SFJ IU 66.9967 -50.6156 365.0 0.0
+SJG IU 18.1117 -66.1500 457.0 0.0
+SNZO IU -41.3103 174.7046 62.0 0.0
+SPA IU -89.9954 115.0000 2927.0 0.0
+SSPA IU 40.6401 -77.8914 352.0 0.0
+TATO IU 24.9754 121.4881 53.0 0.0
+TBT IU 28.6794 -17.9145 180.0 0.0
+TEIG IU 20.2264 -88.2766 69.0 0.0
+TOL IU 39.8814 -4.0485 480.0 0.0
+TRQA IU -38.0567 -61.9795 602.0 0.0
+TSUM IU -19.2022 17.5838 1240.0 0.0
+TUC IU 32.3096 -110.7846 874.0 0.0
+ULN IU 47.8652 107.0528 1615.0 0.0
+WAKE IU 19.2833 166.6536 1.0 0.0
+MSKU IU -1.6557 13.6116 312.0 0.0
+HNR IU -9.4322 159.9471 72.0 0.0
+ANTO SR 39.8689 32.7936 883.0 0.0
+BCAO SR 4.4335 18.5354 336.0 0.0
+CHTO SR 18.7900 98.9769 316.0 0.0
+GUMO SR 13.5878 144.8662 14.0 0.0
+NWAO SR -32.9266 117.2333 265.0 0.0
+SNZO SR -41.3103 174.7046 62.0 0.0
+TATO SR 24.9754 121.4881 53.0 0.0
+BAR TS 32.6800 -116.6720 548.0 0.0
+CALB TS 34.1430 -118.6270 0.0 0.0
+CWC TS 36.4399 -118.0802 1553.0 0.0
+DGR TS 33.6500 -117.0090 700.0 0.0
+GLA TS 33.0520 -114.8270 627.0 0.0
+GPO TS 35.6494 -117.6619 735.0 0.0
+GSC TS 35.3028 -116.8083 990.0 0.0
+ISA TS 35.6630 -118.4733 835.0 0.0
+MLAC TS 37.6310 -118.8340 2170.0 0.0
+NEE TS 34.8230 -114.5960 139.0 0.0
+OSI TS 34.6145 -118.7235 706.0 0.0
+PAS TS 34.1483 -118.1717 295.0 0.0
+PFO TS 33.6092 -116.4553 1280.0 0.0
+RPV TS 33.7438 -118.4035 115.0 0.0
+SBC TS 34.4417 -119.7133 90.0 0.0
+SMTC TS 32.9490 -115.7200 -50.0 0.0
+SNCC TS 33.2480 -119.5240 227.0 0.0
+SVD TS 34.1045 -117.0970 600.0 0.0
+USC TS 34.0210 -118.2870 60.0 0.0
+VTV TS 34.5670 -117.3330 847.0 0.0
+GRFO SR 49.6919 11.2217 425.0 0.0
+AAE IU 9.0292 38.7656 2442.0 0.0
+ADK IU 51.8837 -176.6844 116.0 0.0
+AFI IU -13.9093 -171.7773 706.0 0.0
+ANMO IU 34.9462 -106.4567 1840.0 0.0
+ANTO IU 39.8689 32.7936 883.0 0.0
+BILL IU 68.0651 166.4524 299.0 0.0
+BOCO IU 4.5869 -74.0432 3160.0 0.0
+CASY IU -66.2792 110.5364 159.0 0.0
+CCM IU 38.0557 -91.2446 222.0 0.0
+CHTO IU 18.7900 98.9769 316.0 0.0
+COL IU 64.9000 -147.7933 320.0 0.0
+COLA IU 64.8738 -147.8511 194.0 0.0
+COR IU 44.5857 -123.3032 121.0 0.0
+CTAO IU -20.0882 146.2545 357.0 0.0
+DAV IU 7.0878 125.5747 85.0 0.0
+DWPF IU 28.1102 -81.4327 20.0 0.0
+FURI IU 8.9030 38.6883 2545.0 0.0
+GNI IU 40.1480 44.7410 1609.0 0.0
+GRFO IU 49.6919 11.2217 425.0 0.0
+GUMO IU 13.5878 144.8662 14.0 0.0
+HKT IU 29.9618 -95.8384 -413.0 0.0
+HRV IU 42.5060 -71.5580 180.0 0.0
+INCN IU 37.4833 126.6333 420.0 0.0
+JOHN IU 16.7329 -169.5292 2.0 0.0
+KBS IU 78.9256 11.9417 77.0 0.0
+KEV IU 69.7553 27.0067 80.0 0.0
+KIEV IU 50.6944 29.2083 163.0 0.0
+KIP IU 21.4233 -158.0150 70.0 0.0
+KMBO IU -1.1268 37.2523 1960.0 0.0
+KONO IU 59.6491 9.5982 216.0 0.0
+KOWA IU 14.4967 -4.0140 321.0 0.0
+LCO IU -29.0111 -70.7010 2299.0 0.0
+LSZ IU -15.2766 28.1882 1184.0 0.0
+LVC IU -22.6128 -68.9113 2195.0 0.0
+MA2 IU 59.5756 150.7700 339.0 0.0
+MAJO IU 36.5425 138.2073 405.0 0.0
+MAKZ IU 46.8080 81.9770 600.0 0.0
+MBWA IU -21.1590 119.7312 194.0 0.0
+MIDW IU 28.2157 -177.3697 18.0 0.0
+NAI IU -1.2739 36.8037 1692.0 0.0
+NWAO IU -32.9266 117.2333 265.0 0.0
+OTAV IU 0.2376 -78.4508 3507.0 0.0
+PAB IU 39.5458 -4.3483 925.0 0.0
+PAYG IU -0.6741 -90.2863 295.0 0.0
+PET IU 53.0235 158.6498 150.0 0.0
+PMG IU -9.4092 147.1539 67.0 0.0
+PMSA IU -64.7742 -64.0490 10.0 0.0
+POHA IU 19.7575 -155.5325 1967.0 0.0
+PTCN IU -25.0728 -130.0947 195.0 0.0
+PTGA IU -0.7308 -59.9666 237.0 0.0
+QSPA IU 34.9502 -106.4602 1839.0 0.0
+RAIO IU 46.0403 -122.8851 1.0 0.0
+RAR IU -21.2125 -159.7733 28.0 0.0
+RCBR IU -5.8275 -35.9014 409.0 0.0
+RSSD IU 44.1204 -104.0362 2060.0 0.0
+AAK KN 42.6333 74.4944 1680.0 0.0
+AML KN 42.1311 73.6941 3400.0 0.0
+BGK2 KN 42.6451 74.2274 1640.0 0.0
+CHM KN 42.9986 74.7513 655.0 0.0
+EKS2 KN 42.6615 73.7772 1360.0 0.0
+ERPT KN 42.6011 76.0735 3790.0 0.0
+KBK KN 42.6564 74.9478 1760.0 0.0
+KZA KN 42.0778 75.2496 3520.0 0.0
+NRPT KN 42.6011 76.0735 3790.0 0.0
+TKM KN 42.8601 75.3184 960.0 0.0
+TKM2 KN 42.9208 75.5966 2020.0 0.0
+UCH KN 42.2275 74.5134 3850.0 0.0
+ULHL KN 42.2456 76.2417 2040.0 0.0
+USP KN 43.2669 74.4997 740.0 0.0
+AKT KZ 50.4348 58.0167 360.0 0.0
+AKTK KZ 50.4348 58.0167 360.0 0.0
+BRVK KZ 53.0580 70.2828 315.0 0.0
+CHK KZ 53.6762 70.6152 240.0 0.0
+CHKZ KZ 53.6762 70.6152 120.0 0.0
+KUR KZ 50.7149 78.6208 240.0 0.0
+KURK KZ 50.7149 78.6208 240.0 0.0
+MAK KZ 46.8075 81.9774 600.0 0.0
+MAKZ KZ 46.8080 81.9770 600.0 0.0
+PDG KZ 43.3275 79.4850 1277.0 0.0
+TLG KZ 43.2330 77.2250 1120.0 0.0
+VOS KZ 52.7232 70.9797 450.0 0.0
+ZRN KZ 52.9510 69.0043 420.0 0.0
+ZRNK KZ 52.9510 69.0043 380.0 0.0
+BMN LB 40.4314 -117.2210 1500.0 0.0
+DAC LB 36.2770 -117.5937 1813.0 0.0
+LDS LB 37.2425 -113.3514 1101.0 0.0
+MVU LB 38.5037 -112.2123 2239.0 0.0
+TPH LB 38.0750 -117.2225 1883.0 0.0
+NCB LD 43.9734 -74.2229 469.0 0.0
+PAL LD 41.0057 -73.9071 91.0 0.0
+CDRO LX 38.6292 -28.6992 195.0 0.0
+AQU MN 42.3540 13.4050 710.0 0.0
+BGY MN 44.8026 20.5158 250.0 0.0
+BNI MN 45.0520 6.6780 1395.0 0.0
+CII MN 41.7230 14.3050 910.0 0.0
+CLTB MN 37.5780 13.2160 949.0 0.0
+GFA MN 34.3380 9.0730 250.0 0.0
+IDI MN 35.2880 24.8900 750.0 0.0
+ISP MN 37.8430 30.5090 1100.0 0.0
+KEG MN 29.9275 31.8292 460.0 0.0
+MDT MN 32.8170 -4.6140 1200.0 0.0
+MEB MN 36.3030 2.7300 500.0 0.0
+TIR MN 41.3477 19.8650 198.0 0.0
+TNV MN -74.7000 164.1200 40.0 0.0
+TRI MN 45.7090 13.7640 161.0 0.0
+TTE MN 45.6600 13.7900 92.0 0.0
+VLC MN 44.1594 10.3864 555.0 0.0
+VSL MN 39.4960 9.3780 370.0 0.0
+VTS MN 42.6180 23.2350 1490.0 0.0
+WDD MN 35.8670 14.5230 41.0 0.0
+HGN NL 50.7640 5.9317 135.0 0.0
+BLO NM 39.1719 -86.5222 246.0 0.0
+MPH NM 35.1230 -89.9320 93.0 0.0
+PLAL NM 34.9824 -88.0755 165.0 0.0
+SIUC NM 37.7148 -89.2174 120.0 0.0
+SLM NM 38.6361 -90.2364 186.0 0.0
+UALR NM 34.7753 -92.3436 138.0 0.0
+UTMT NM 36.3423 -88.6642 120.0 0.0
+BAG PS 16.4108 120.5797 1507.0 0.0
+MCSJ PS 24.2900 153.9780 10.0 0.0
+OGS PS 27.0570 142.2030 20.0 0.0
+PATS PS 6.8367 158.3152 10.0 0.0
+PSI PS 2.6938 98.9237 987.0 0.0
+SYO PS -69.0067 39.5850 20.0 0.0
+TGY PS 14.1000 120.9400 0.0 0.0
+TSK PS 36.2108 140.1097 350.0 0.0
+ANPB TW 25.1865 121.5202 825.0 0.0
+HWAB TW 23.9800 121.6000 0.0 0.0
+KMNB TW 24.4638 118.3884 43.0 0.0
+LYUB TW 22.0017 121.5840 40.0 0.0
+MATB TW 26.1515 119.9456 75.1 0.0
+NACB TW 24.1738 121.5947 130.0 0.0
+SSLB TW 23.7875 120.9540 450.0 0.0
+TATO TW 24.9754 121.4881 53.0 0.0
+TDCB TW 24.2574 121.2550 1280.0 0.0
+TPUB TW 23.3005 120.6296 370.0 0.0
+TWGB TW 22.8176 121.0799 195.0 0.0
+TWKB TW 21.9406 120.8125 90.0 0.0
+WFSB TW 25.0710 121.7810 100.0 0.0
+YULB TW 23.3924 121.2971 294.7 0.0
+DBO UO 43.1192 -123.2428 980.0 0.0
+EUO UO 44.0294 -123.0689 160.0 0.0
+PIN UO 43.8111 -120.8719 1860.0 0.0
+AAM US 42.3012 -83.6567 172.0 0.0
+ACSO US 40.2319 -82.9820 288.0 0.0
+AHID US 42.7654 -111.1004 1960.0 0.0
+BINY US 42.1993 -75.9861 498.0 0.0
+BLA US 37.2113 -80.4210 634.0 0.0
+BMN US 40.4315 -117.2218 1500.0 0.0
+BOZ US 45.6470 -111.6296 1589.0 0.0
+BW06 US 42.7667 -109.5583 2224.0 0.0
+CBKS US 38.8140 -99.7374 677.0 0.0
+CBM US 46.9325 -68.1208 250.0 0.0
+CEH US 35.8908 -79.0928 152.0 0.0
+DUG US 40.1950 -112.8133 1477.0 0.0
+ELK US 40.7448 -115.2388 2210.0 0.0
+EYMN US 47.9462 -91.4950 475.0 0.0
+GOGA US 33.4112 -83.4666 150.0 0.0
+GOL US 39.7003 -105.3711 2359.0 0.0
+GWDE US 38.8256 -75.6171 19.0 0.0
+HAWA US 46.3925 -119.5326 364.0 0.0
+HLID US 43.5625 -114.4138 1772.0 0.0
+HWUT US 41.6069 -111.5652 1830.0 0.0
+ISCO US 39.7997 -105.6134 2743.0 0.0
+JCT US 30.4794 -99.8022 591.0 0.0
+JFWS US 42.9143 -90.2481 335.0 0.0
+KNB US 37.0166 -112.8224 1715.0 0.0
+LBNH US 44.2401 -71.9259 367.0 0.0
+LKWY US 44.5652 -110.4000 2424.0 0.0
+LSCT US 41.6784 -73.2244 318.0 0.0
+LTX US 29.3339 -103.6669 1013.0 0.0
+MCWV US 39.6581 -79.8456 280.0 0.0
+MIAR US 34.5454 -93.5765 207.0 0.0
+MNV US 38.4328 -118.1531 1524.0 0.0
+MYNC US 35.0739 -84.1279 550.0 0.0
+NCB US 43.9708 -74.2236 500.0 0.0
+NEW US 48.2633 -117.1200 760.0 0.0
+NHSC US 33.1067 -80.1778 11.0 0.0
+OCWA US 47.7489 -124.1781 671.0 0.0
+OXF US 34.5118 -89.4092 101.0 0.0
+RSNY US 44.5483 -74.5300 396.0 0.0
+RSSD US 44.1204 -104.0362 2060.0 0.0
+TPNV US 36.9488 -116.2495 1600.0 0.0
+WMOK US 34.7379 -98.7810 486.0 0.0
+WUAZ US 35.5169 -111.3739 1592.0 0.0
+WVOR US 42.4340 -118.6367 1344.0 0.0
+YSNY US 42.4758 -78.5375 628.0 0.0
+CHE UW 45.3544 -122.9886 430.0 0.0
+DBO UW 43.1192 -123.2428 980.0 0.0
+GNW UW 47.5644 -122.8253 160.0 0.0
+HEBO UW 45.2137 -123.7542 100.0 0.0
+LON UW 46.7500 -121.8100 850.0 0.0
+LTY UW 47.2559 -120.6648 970.0 0.0
+MEGW UW 46.2659 -123.8773 100.0 0.0
+OFR UW 47.9333 -124.3947 150.0 0.0
+OPC UW 48.1003 -123.4116 90.0 0.0
+PIN UW 43.8111 -120.8719 1860.0 0.0
+RWW UW 46.9639 -123.5433 10.0 0.0
+SQM UW 48.0775 -123.0456 30.0 0.0
+SSW UW 46.9723 -123.4338 120.0 0.0
+TAKO UW 43.7433 -124.0822 100.0 0.0
+TOLO UW 44.6219 -123.9225 100.0 0.0
+TTW UW 47.6946 -121.6889 540.0 0.0
+AZ01 XA 37.0430 -113.1280 1514.8 0.0
+AZ02 XA 37.0370 -113.3130 1066.8 0.0
+AZ03 XA 37.0270 -113.5760 868.6 0.0
+AZ04 XA 37.0270 -113.8680 1060.7 0.0
+AZ05 XA 37.1800 -114.1320 1133.8 0.0
+AZ06 XA 37.0730 -114.3420 957.0 0.0
+AZ07 XA 37.1310 -114.7130 987.5 0.0
+AZ08 XA 37.0800 -114.8420 1072.8 0.0
+AZ09 XA 37.2390 -115.1980 1094.2 0.0
+AZ10 XA 37.3300 -115.3100 1889.7 0.0
+MM01 XA 42.3175 -72.7117 122.0 0.0
+MM02 XA 42.1660 -73.7187 134.0 0.0
+MM03 XA 42.0388 -74.8462 670.5 0.0
+MM04 XA 41.8530 -76.1980 473.0 0.0
+MM05 XA 41.6530 -76.9220 701.0 0.0
+MM06 XA 41.3915 -78.1262 647.0 0.0
+MM07 XA 41.2571 -79.1350 518.0 0.0
+MM08 XA 41.1095 -80.0682 381.0 0.0
+MM09 XA 40.7911 -81.2056 357.0 0.0
+MM10 XA 40.6147 -82.3031 346.0 0.0
+MM11 XA 40.2214 -83.1947 283.0 0.0
+MM12 XA 40.0439 -84.3725 305.0 0.0
+MM13 XA 39.8317 -85.3114 337.0 0.0
+MM14 XA 39.5494 -86.3948 290.0 0.0
+MM15 XA 39.2945 -87.3135 190.6 0.0
+MM16 XA 38.9219 -88.3046 165.0 0.0
+MM17 XA 38.6694 -89.3255 143.8 0.0
+MM18 XA 38.5287 -90.5686 185.6 0.0
+MO18 XA 38.5144 -90.5644 161.0 0.0
+SA01 XA -34.2945 19.2460 220.0 0.0
+SA02 XA -33.7351 20.2663 500.0 0.0
+SA03 XA -33.6619 21.3354 500.0 0.0
+SA04 XA -32.8505 19.6206 1200.0 0.0
+SA05 XA -32.6050 21.5346 800.0 0.0
+SA07 XA -31.9776 20.2262 1277.0 0.0
+SA08 XA -31.9103 22.0729 1387.0 0.0
+SA09 XA -30.9221 22.9861 1200.0 0.0
+SA10 XA -30.9724 23.9136 1400.0 0.0
+SA11 XA -29.9650 20.9466 1066.0 0.0
+SA12 XA -29.8486 22.2533 1125.0 0.0
+SA13 XA -29.9788 23.1396 1047.0 0.0
+SA139 XA -25.8519 26.2662 1600.0 0.0
+SA14 XA -29.8682 24.0226 1200.0 0.0
+SA15 XA -29.9038 25.0323 1400.0 0.0
+SA155 XA -22.8786 28.3402 900.0 0.0
+SA16 XA -28.9503 22.1951 1026.0 0.0
+SA169 XA -22.2623 29.2134 618.0 0.0
+SA17 XA -28.9321 23.2257 1249.0 0.0
+SA18 XA -28.6328 24.3056 1102.0 0.0
+SA19 XA -28.9056 24.8328 1200.0 0.0
+SA20 XA -29.0221 26.1953 1400.0 0.0
+SA22 XA -27.9662 22.0091 1076.0 0.0
+SA23 XA -27.9304 23.4046 1612.0 0.0
+SA24 XA -27.8833 24.2365 1244.0 0.0
+SA25 XA -27.8459 25.1259 1253.0 0.0
+SA26 XA -27.5456 26.1803 1300.0 0.0
+SA27 XA -27.8625 27.2943 1400.0 0.0
+SA28 XA -27.8982 28.0656 1600.0 0.0
+SA29 XA -26.9317 23.0349 1120.0 0.0
+SA30 XA -27.0715 24.1651 1361.0 0.0
+SA31 XA -26.9952 25.0209 1348.0 0.0
+SA32 XA -26.8655 26.2845 1380.0 0.0
+SA33 XA -26.8986 27.1793 1400.0 0.0
+SA34 XA -26.8000 28.1000 1500.0 0.0
+SA35 XA -27.0183 29.0883 1600.0 0.0
+SA36 XA -26.8771 30.1249 1600.0 0.0
+SA37 XA -25.9705 23.7212 1142.0 0.0
+SA38 XA -25.9334 25.0846 1219.0 0.0
+SA39 XA -25.8952 26.1514 1545.0 0.0
+SA40 XA -25.8981 27.1490 1512.0 0.0
+SA42 XA -25.6650 29.2223 1500.0 0.0
+SA43 XA -25.7868 30.0669 1800.0 0.0
+SA44 XA -26.0321 30.9022 1000.0 0.0
+SA45 XA -24.8792 26.1644 1015.0 0.0
+SA46 XA -24.8382 27.1092 1037.0 0.0
+SA47 XA -24.8469 28.1618 1153.0 0.0
+SA48 XA -24.8948 29.2163 1000.0 0.0
+SA49 XA -24.9597 30.3091 0.0 0.0
+SA50 XA -23.8722 27.1662 976.0 0.0
+SA51 XA -23.8628 28.1567 1233.0 0.0
+SA52 XA -23.7983 28.8975 1321.0 0.0
+SA53 XA -24.1134 29.3328 1300.0 0.0
+SA54 XA -23.7288 30.6680 500.0 0.0
+SA55 XA -22.9800 28.2981 918.0 0.0
+SA56 XA -23.0059 29.0743 909.0 0.0
+SA57 XA -22.9811 30.0202 787.0 0.0
+SA58 XA -23.5179 31.3973 356.0 0.0
+SA59 XA -24.8373 24.4640 1137.0 0.0
+SA60 XA -23.8519 24.9594 1043.0 0.0
+SA61 XA -23.9481 24.0220 1069.0 0.0
+SA62 XA -24.8505 25.1350 1214.0 0.0
+SA63 XA -23.6583 26.0820 1008.0 0.0
+SA64 XA -22.9694 26.2017 1151.0 0.0
+SA65 XA -22.8183 27.2218 907.0 0.0
+SA66 XA -21.9005 26.3727 1057.0 0.0
+SA67 XA -21.8859 27.2736 913.0 0.0
+SA68 XA -21.9504 28.1878 737.0 0.0
+SA69 XA -22.3048 29.2661 651.0 0.0
+SA70 XA -21.0883 26.3352 990.0 0.0
+SA71 XA -20.9258 27.1408 1072.0 0.0
+SA72 XA -20.1430 28.6113 1337.0 0.0
+SA73 XA -21.8537 30.2776 590.0 0.0
+SA74 XA -21.9230 30.9357 487.0 0.0
+SA75 XA -20.8601 28.9991 971.0 0.0
+SA76 XA -20.6361 29.8464 978.0 0.0
+SA77 XA -20.7557 30.9191 576.0 0.0
+SA78 XA -19.4671 30.7723 1401.0 0.0
+SA79 XA -20.0211 30.5173 1078.0 0.0
+SA80 XA -19.9593 31.3179 1064.0 0.0
+SA81 XA -30.9251 21.2681 1270.0 0.0
+SA82 XA -30.9771 22.2466 1452.0 0.0
+ADO CI 34.5505 -117.4339 0.0 0.0
+AGA CI 33.6384 -116.4011 0.0 0.0
+ALP CI 34.6871 -118.2995 0.0 0.0
+BAK CI 35.3441 -119.1043 0.0 0.0
+BAR CI 32.6800 -116.7220 0.0 0.0
+BBR CI 34.2623 -116.9208 0.0 0.0
+BBS CI 33.9214 -116.9809 0.0 0.0
+BC3 CI 33.6548 -115.4531 0.0 0.0
+BCC CI 33.5751 -117.2612 0.0 0.0
+BEL CI 34.0006 -115.9982 0.0 0.0
+BFS CI 34.2370 -117.6582 0.0 0.0
+BKR CI 35.2693 -116.0703 0.0 0.0
+BOR CI 33.2682 -116.4172 0.0 0.0
+BRE CI 33.8100 -117.9817 0.0 0.0
+BTC CI 33.0126 -115.2199 0.0 0.0
+BTP CI 34.6833 -118.5750 0.0 0.0
+CALA CI 34.1430 -118.6270 0.0 0.0
+CALB CI 34.1430 -118.6270 0.0 0.0
+CAP CI 33.3885 -117.1905 0.0 0.0
+CCC CI 35.5247 -117.3646 0.0 0.0
+CHF CI 34.3334 -118.0260 0.0 0.0
+CHN CI 33.9988 -117.6804 0.0 0.0
+CIA CI 33.4020 -118.4152 0.0 0.0
+CIU CI 33.4458 -118.4830 0.0 0.0
+CLC CI 35.8158 -117.5975 0.0 0.0
+CLT CI 34.0932 -117.3167 0.0 0.0
+COO CI 33.8960 -118.2164 0.0 0.0
+CPP CI 34.0602 -117.8090 0.0 0.0
+CTC CI 33.6546 -115.9899 0.0 0.0
+CWC CI 36.4400 -118.0800 0.0 0.0
+DAN CI 34.6371 -115.3805 0.0 0.0
+DEV CI 33.9350 -116.5770 0.0 0.0
+DGR CI 33.6500 -117.0090 0.0 0.0
+DJJ CI 34.1058 -118.4538 0.0 0.0
+DJJB CI 34.1058 -118.4538 0.0 0.0
+DLA CI 33.8482 -118.0962 0.0 0.0
+DPP CI 32.9986 -116.9415 0.0 0.0
+DRC CI 32.8054 -115.4465 0.0 0.0
+DVT CI 32.6591 -116.1006 0.0 0.0
+EDW CI 34.8830 -117.9911 0.0 0.0
+EML CI 32.8913 -116.8460 0.0 0.0
+ERR CI 33.1168 -115.8227 0.0 0.0
+FIG CI 34.7321 -119.9841 0.0 0.0
+FMP CI 33.7126 -118.2938 0.0 0.0
+FPC CI 35.0820 -117.5827 0.0 0.0
+FUR CI 36.4667 -116.8635 0.0 0.0
+GLA CI 33.0510 -114.8280 0.0 0.0
+GOR CI 33.1600 -117.2300 0.0 0.0
+GPO CI 35.6490 -117.6620 0.0 0.0
+GR2 CI 34.1183 -118.2994 0.0 0.0
+GRA CI 36.9833 -117.3592 0.0 0.0
+GSC CI 35.3020 -116.8050 0.0 0.0
+HEC CI 34.8294 -116.3350 0.0 0.0
+HLL CI 34.1764 -118.3598 0.0 0.0
+ISA CI 35.6630 -118.4730 0.0 0.0
+JCS CI 33.0859 -116.5959 0.0 0.0
+JRC CI 35.9825 -117.8081 0.0 0.0
+JVA CI 34.3662 -116.6127 0.0 0.0
+LAF CI 33.8693 -118.3311 0.0 0.0
+LCG CI 34.0003 -118.3779 0.0 0.0
+LDF CI 35.0781 -115.1096 0.0 0.0
+LFP CI 34.3050 -118.4879 0.0 0.0
+LGB CI 33.9756 -118.1491 0.0 0.0
+LGU CI 34.1082 -119.0659 0.0 0.0
+LKL CI 34.6160 -117.8245 0.0 0.0
+LLS CI 33.6847 -117.9429 0.0 0.0
+LRL CI 35.4794 -117.6821 0.0 0.0
+LTP CI 33.8811 -118.1757 0.0 0.0
+LUG CI 34.3661 -117.3658 0.0 0.0
+MAG CI 35.3616 -118.9228 0.0 0.0
+MCT CI 34.2264 -116.0408 0.0 0.0
+MGE CI 33.8184 -116.3687 0.0 0.0
+MIK CI 34.1370 -118.1260 0.0 0.0
+MLA CI 37.6310 -118.8340 0.0 0.0
+MLAC CI 37.6310 -118.8340 0.0 0.0
+MLS CI 34.0046 -117.5609 0.0 0.0
+MOP CI 34.2808 -118.9049 0.0 0.0
+MPM CI 36.0580 -117.4890 0.0 0.0
+MSJ CI 33.8084 -116.9680 0.0 0.0
+MTL CI 34.2688 -118.2374 0.0 0.0
+MTP CI 35.4848 -115.5533 0.0 0.0
+MWC CI 34.2233 -118.0583 0.0 0.0
+NEE CI 34.8230 -114.5960 0.0 0.0
+NSS CI 33.5561 -115.9465 0.0 0.0
+OLI CI 33.9455 -117.9237 0.0 0.0
+OLP CI 32.6077 -116.9304 0.0 0.0
+OSI CI 34.6150 -118.7240 0.0 0.0
+PAS CI 34.1484 -118.1711 295.0 0.0
+PDE CI 34.4421 -118.5823 0.0 0.0
+PDR CI 33.9627 -118.4370 0.0 0.0
+PDU CI 34.1208 -117.6379 0.0 0.0
+PFO CI 33.6120 -116.4590 0.0 0.0
+PHL CI 35.4082 -120.5455 0.0 0.0
+PLC CI 33.8243 -116.5121 0.0 0.0
+PLM CI 33.3537 -116.8627 0.0 0.0
+PLS CI 33.7953 -117.6091 0.0 0.0
+QUG CI 34.3959 -118.4985 0.0 0.0
+RCT CI 36.3052 -119.2438 0.0 0.0
+RIN CI 34.2820 -118.4792 0.0 0.0
+RIO CI 34.1047 -117.9796 0.0 0.0
+RPV CI 33.7440 -118.4030 0.0 0.0
+RRX CI 34.9000 -117.0300 0.0 0.0
+RSS CI 33.9733 -117.3267 0.0 0.0
+RUS CI 34.0505 -118.0799 0.0 0.0
+RVR CI 33.9935 -117.3755 0.0 0.0
+SAL CI 33.2799 -115.9862 0.0 0.0
+SBC CI 34.4420 -119.7130 0.0 0.0
+SBPX CI 34.2322 -117.2348 0.0 0.0
+SCI CI 32.9800 -118.5467 0.0 0.0
+SDD CI 33.5531 -117.6618 0.0 0.0
+SDR CI 32.6080 -116.9290 0.0 0.0
+SES CI 34.4367 -119.1382 0.0 0.0
+SHO CI 35.9000 -116.2760 0.0 0.0
+SLA CI 35.8908 -117.2834 0.0 0.0
+SMM CI 35.3142 -119.9958 0.0 0.0
+SMS CI 34.0147 -118.4562 0.0 0.0
+SMTC CI 32.9490 -115.7200 0.0 0.0
+SNCC CI 33.2480 -119.5240 0.0 0.0
+SOT CI 34.4165 -118.4493 0.0 0.0
+SPF CI 34.0593 -118.6461 0.0 0.0
+SPG CI 36.1356 -118.8112 0.0 0.0
+SRN CI 33.8284 -117.7894 0.0 0.0
+SSM CI 35.3142 -119.9958 0.0 0.0
+SSN CI 33.2480 -119.5240 0.0 0.0
+SSW CI 33.1766 -115.6024 0.0 0.0
+STC CI 34.3027 -119.1870 0.0 0.0
+STG CI 33.6640 -117.7686 0.0 0.0
+STS CI 33.7902 -118.1985 0.0 0.0
+SVD CI 34.1040 -117.0970 0.0 0.0
+SWS CI 32.9448 -115.8000 0.0 0.0
+SYP CI 34.5278 -119.9783 0.0 0.0
+TA2 CI 34.3820 -117.6781 0.0 0.0
+TEH CI 35.2913 -118.4208 0.0 0.0
+THX CI 33.6348 -116.1640 0.0 0.0
+TIN CI 37.0542 -118.2301 0.0 0.0
+TOV CI 34.1560 -118.8190 0.0 0.0
+USC CI 34.0190 -118.2850 0.0 0.0
+VCS CI 34.4900 -118.1180 0.0 0.0
+VES CI 35.8409 -119.0847 0.0 0.0
+VTV CI 34.5670 -117.3330 0.0 0.0
+WES CI 32.7590 -115.7315 0.0 0.0
+WGR CI 34.5108 -119.2741 0.0 0.0
+WLT CI 34.0097 -117.9508 0.0 0.0
+WNS CI 34.1150 -118.3800 0.0 0.0
+WSS CI 34.1717 -118.6497 0.0 0.0
+WTT CI 33.9490 -118.2553 0.0 0.0
+BCAO GB 4.4336 18.5355 0.0 0.0
+BDF GB -15.6639 -47.9033 0.0 0.0
+BGY GB 44.8026 20.5158 0.0 0.0
+BJI GB 40.0403 116.1750 0.0 0.0
+BNI GB 45.0520 6.6780 0.0 0.0
+BOCO GB 4.6167 -74.1167 0.0 0.0
+BTDF GB 1.3608 103.7729 0.0 0.0
+COL GB 64.8999 -147.7932 0.0 0.0
+DPC GB 50.3583 16.4111 0.0 0.0
+DSB GB 53.2452 -6.3762 0.0 0.0
+GDH GB 69.2500 -53.5333 0.0 0.0
+GFA GB 34.5000 8.5000 0.0 0.0
+HON GB 21.3217 -158.0083 0.0 0.0
+LON GB 46.7500 -121.8100 0.0 0.0
+MSKU GB -1.6557 13.6116 0.0 0.0
+NAI GB -1.2739 36.8037 0.0 0.0
+NOU GB -22.1010 166.3030 0.0 0.0
+PFOT GB 33.6090 -116.4553 0.0 0.0
+SCP GB 40.7950 -77.8650 0.0 0.0
+SLR GB -25.7349 28.2816 0.0 0.0
+TOL GB 39.8814 -4.0485 0.0 0.0
+ZOBO GB -16.2700 -68.1250 0.0 0.0
+DGAR II -7.4121 72.4525 1.0 2.0
+FUNA IU 8.5300 179.2000 -1.0 1.0
+TRIS IU -37.0578 -12.3159 -2.0 2.0
Modified: cs/portal/trunk/seismo/SeismoWebPortal/forms.py
===================================================================
--- cs/portal/trunk/seismo/SeismoWebPortal/forms.py 2008-04-02 20:13:07 UTC (rev 11739)
+++ cs/portal/trunk/seismo/SeismoWebPortal/forms.py 2008-04-03 02:02:25 UTC (rev 11740)
@@ -5,6 +5,7 @@
from django.core import validators
from models import Specfem3DGlobeMesh, Event, DataSource, Region, Source
from models import UserInfo, Invite, Folder
+from models import EventWorkspace, StationList
from cmt import CMTSolution
@@ -313,15 +314,25 @@
del args['when_time']
source = Source.objects.create(**args)
- return event
+ # Create a new workspace for this event.
+ workspace = EventWorkspace(event = event,
+ stations = StationList.favorite(),
+ )
+ workspace.save()
+
+ workspace.fsNode.name = source.eventName
+ workspace.fsNode.save()
+ return workspace
+
class SingleSourceEventChangeManipulator(Source.ChangeManipulator):
- def __init__(self, event):
- self.event = event
+ def __init__(self, workspace):
+ self.workspace = workspace
+ self.event = workspace.event
- object_id = event.singleSource.id
+ object_id = self.event.singleSource.id
super(SingleSourceEventChangeManipulator, self).__init__(object_id)
# replace generic fields with custom fields
@@ -352,7 +363,7 @@
new_data['event'] = event.id
super(SingleSourceEventChangeManipulator, self).save(new_data)
- return event
+ return self.workspace
class UploadEventManipulator(forms.Manipulator):
@@ -381,17 +392,26 @@
cmtSolution = new_data['cmtsolution']['content']
cmtSolutionList = CMTSolution.parse(cmtSolution)
+ filename = new_data['cmtsolution']['filename']
+
# Create the new event.
- event = Event.objects.create()
- event.fsNode.name = new_data['cmtsolution']['filename']
- event.fsNode.save()
+ event = Event.objects.create(name = filename)
# Add each source.
for cmtSolution in cmtSolutionList:
Source.saveSource(event, cmtSolution)
- return event
+ # Create a new workspace for this event.
+ workspace = EventWorkspace(event = event,
+ stations = StationList.favorite(),
+ )
+ workspace.save()
+
+ workspace.fsNode.name = filename
+ workspace.fsNode.save()
+ return workspace
+
# end of file
Modified: cs/portal/trunk/seismo/SeismoWebPortal/gui.py
===================================================================
--- cs/portal/trunk/seismo/SeismoWebPortal/gui.py 2008-04-02 20:13:07 UTC (rev 11739)
+++ cs/portal/trunk/seismo/SeismoWebPortal/gui.py 2008-04-03 02:02:25 UTC (rev 11740)
@@ -218,9 +218,9 @@
class EventViewer(Navigator):
- def __init__(self, url, title, root, event):
+ def __init__(self, url, title, root, workspace):
Navigator.__init__(self, url, title, root)
- self.event = event
+ self.workspace = workspace
def icon(self):
- return self.event.icon()
+ return self.workspace.icon()
Added: cs/portal/trunk/seismo/SeismoWebPortal/management.py
===================================================================
--- cs/portal/trunk/seismo/SeismoWebPortal/management.py (rev 0)
+++ cs/portal/trunk/seismo/SeismoWebPortal/management.py 2008-04-03 02:02:25 UTC (rev 11740)
@@ -0,0 +1,115 @@
+
+from django.dispatch import dispatcher
+from django.db.models import signals
+import models
+
+
+def createSpecfem3DGlobeModels():
+ for type, name in models.MODEL_TYPES:
+ model = models.Specfem3DGlobeModel.objects.create(
+ type = type,
+ oceans = True,
+ gravity = True,
+ attenuation = True,
+ topography = True,
+ rotation = True,
+ ellipticity = True)
+ model.fsNode.name = name
+ model.fsNode.save()
+ print "Adding Specfem3DGlobeModel '%s'" % model
+ return
+
+
+def createSpecfem3DGlobeMeshes():
+
+ m = {}
+
+ # Iterate through every mesh that could possibly be created using
+ # the global mesh form. Partition them according to 'Nex', which
+ # determines the shortest period (which is all anyone really cares
+ # about).
+ for nproc in xrange(1, 10):
+ for nex_c in xrange(1, 10):
+ nex = 8 * nex_c * nproc
+ l = m.setdefault(nex, [])
+ l.append((nex_c, nproc))
+
+ # Generate every possible global mesh...
+ nexs = m.keys()
+ nexs.sort()
+ nexs.reverse()
+ lastSP = 0
+ for nex in nexs:
+ # ...rejecting those below Nex = 160 (27s)...
+ if nex < 160:
+ break
+ # ...selecting those variants that use the fewest processors...
+ nex_c, nproc = m[nex][0]
+ mesh = models.Specfem3DGlobeMesh(
+ nchunks = 6,
+ nproc_xi = nproc,
+ nproc_eta = nproc,
+ nex_xi_c = nex_c,
+ nex_eta_c = nex_c,
+ angular_width_eta = 90.0,
+ angular_width_xi = 90.0,
+ center_latitude = 0.0,
+ center_longitude = 0.0,
+ gamma_rotation_azimuth = 0.0,
+ )
+ sp = "%.0f" % mesh.shortestPeriod()
+ # ...rejecting those that look the same when rounded to the
+ # nearest second.
+ if sp == lastSP:
+ continue
+ mesh.save()
+ lastSP = sp
+ mesh.fsNode.name = "global %ss Nex=%d" % (sp, mesh.nex_xi())
+ mesh.fsNode.save()
+ print "Adding Specfem3DGlobeMesh '%s'" % mesh
+
+ return
+
+
+def createStationList():
+ from views import parse_station_list
+ from os.path import dirname, join
+
+ filename = "STATIONS_FULL_758"
+ pathname = join(dirname(__file__), "data", filename)
+
+ print "Adding StationList '%s'" % filename
+
+ stationList = models.StationList.objects.create()
+ stationList.fsNode.name = filename
+ stationList.fsNode.save()
+
+ stream = open(pathname, 'r')
+ parse_station_list(stationList, stream)
+
+ return
+
+
+def createSpecfem3DGlobeParameters():
+ # Create a parameter set for every mesh/model combination.
+ for model in models.Specfem3DGlobeModel.objects.all():
+ for mesh in models.Specfem3DGlobeMesh.objects.all():
+ parameters = models.Specfem3DGlobeParameters.objects.create(
+ model = model,
+ mesh = mesh,
+ receivers_can_be_buried = True,
+ )
+ parameters.fsNode.name = str(model) + ' ' + str(mesh)
+ parameters.fsNode.save()
+ print "Adding Specfem3DGlobeParameters '%s'" % parameters
+ return
+
+
+def createDefaults(app, created_models):
+ createSpecfem3DGlobeModels()
+ createSpecfem3DGlobeMeshes()
+ createSpecfem3DGlobeParameters()
+ createStationList()
+
+
+dispatcher.connect(createDefaults, sender=models, signal=signals.post_syncdb)
Modified: cs/portal/trunk/seismo/SeismoWebPortal/middleware.py
===================================================================
--- cs/portal/trunk/seismo/SeismoWebPortal/middleware.py 2008-04-02 20:13:07 UTC (rev 11739)
+++ cs/portal/trunk/seismo/SeismoWebPortal/middleware.py 2008-04-03 02:02:25 UTC (rev 11740)
@@ -16,10 +16,8 @@
_thread_locals = local()
-class You_need_to_add_ThreadLocals_to_MIDDLEWARE_CLASSES(object): pass
-
def get_current_user():
- return getattr(_thread_locals, 'user', You_need_to_add_ThreadLocals_to_MIDDLEWARE_CLASSES())
+ return getattr(_thread_locals, 'user', None)
# Add this to MIDDLEWARE_CLASSES.
class ThreadLocals(object):
Modified: cs/portal/trunk/seismo/SeismoWebPortal/models.py
===================================================================
--- cs/portal/trunk/seismo/SeismoWebPortal/models.py 2008-04-02 20:13:07 UTC (rev 11739)
+++ cs/portal/trunk/seismo/SeismoWebPortal/models.py 2008-04-03 02:02:25 UTC (rev 11740)
@@ -41,6 +41,10 @@
@classmethod
def newNode(cls, contents):
owner = get_current_user()
+ if owner is None:
+ parent = Folder.sharedFolder().fsNode
+ else:
+ parent = Folder.homeFolder(owner).fsNode
name = "untitled"
number = 1
while True:
@@ -51,7 +55,7 @@
name = "untitled %d" % number
fsNode = FSNode(name = name,
owner = owner,
- parent = Folder.homeFolder(owner).fsNode,
+ parent = parent,
contents = contents)
fsNode.save()
return fsNode
@@ -71,6 +75,13 @@
return userInfo.trash
@classmethod
+ def sharedFolder(cls):
+ q = cls.objects.filter(fsNode__owner__isnull = True)
+ if q.count() == 0:
+ return cls.newFolder("Shared", None)
+ return q.get()
+
+ @classmethod
def newFolder(cls, name, owner):
folder = Folder()
folder.save()
@@ -105,8 +116,8 @@
class Event(models.Model):
- fsNode = models.ForeignKey(FSNode, null=True)
-
+ name = models.CharField(maxlength=100)
+
def _getSingleSource(self):
if not hasattr(self, '_singleSource'):
if self.source_set.count() == 1:
@@ -119,21 +130,12 @@
def sources(self):
return self.source_set.order_by('timeShift')
- def __str__(self): return self.fsNode.name
+ def __str__(self): return self.name
def icon(self):
ss = self.singleSource
return ss and ss.beachball() or '<img class="icon" src="/specfem3dglobe/icons/document.gif">'
- def save(self):
- super(Event, self).save()
- if self.fsNode is None:
- self.fsNode = FSNode.newNode(self)
- super(Event, self).save()
- else:
- self.fsNode.save() # touch
- return
-
def delete(self):
self.source_set.all().delete()
super(Event, self).delete()
@@ -286,7 +288,12 @@
self.station_set.all().delete()
super(StationList, self).delete()
+ @classmethod
+ def favorite(self):
+ # NYI
+ return StationList.objects.get()
+
class Station(models.Model):
stationList = models.ForeignKey(StationList)
@@ -447,9 +454,6 @@
movie_surface = models.BooleanField(core=True)
movie_volume = models.BooleanField(core=True)
- # STATIONS
- stations = models.ForeignKey(StationList, limit_choices_to = userFSChoices)
-
# hdur_movie:
hdur_movie = models.FloatField(max_digits=19, decimal_places=10, core=True, default=0.0, blank=True)
# absorbing_conditions: set to true for regional, and false for global
@@ -594,7 +598,6 @@
catalog = models.ForeignKey(MineosModeCatalog, limit_choices_to = userFSChoices)
model = models.ForeignKey(MineosModel, limit_choices_to = userFSChoices)
- stations = models.ForeignKey(StationList, limit_choices_to = userFSChoices)
# jcom
radial = models.BooleanField(default=True)
@@ -631,6 +634,38 @@
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+# Event Workspaces
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+
+class EventWorkspace(models.Model):
+
+ fsNode = models.ForeignKey(FSNode, null=True)
+
+ event = models.ForeignKey(Event)
+ stations = models.ForeignKey(StationList, limit_choices_to = userFSChoices)
+ record_length = models.FloatField(max_digits=19, decimal_places=10, core=True, default=20.0,
+ validator_list=[isValidRecordLength])
+
+ follow = dict(fsNode = False,
+ event = False)
+
+ def __str__(self): return self.fsNode.name
+
+ def icon(self):
+ return self.event.icon()
+
+ def save(self):
+ super(EventWorkspace, self).save()
+ if self.fsNode is None:
+ self.fsNode = FSNode.newNode(self)
+ super(EventWorkspace, self).save()
+ else:
+ self.fsNode.save() # touch
+ return
+
+
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Status
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Modified: cs/portal/trunk/seismo/SeismoWebPortal/sql/stationnetwork.sql
===================================================================
--- cs/portal/trunk/seismo/SeismoWebPortal/sql/stationnetwork.sql 2008-04-02 20:13:07 UTC (rev 11739)
+++ cs/portal/trunk/seismo/SeismoWebPortal/sql/stationnetwork.sql 2008-04-03 02:02:25 UTC (rev 11740)
@@ -8,7 +8,7 @@
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('ALQ', 'USGS Albuquerque Seismological Laboratory, Albuquerque, New Mexico, USA');
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('ANZA', 'Anza Seismic Network, IGPP, UC San Diego, La Jolla, Calif, USA');
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('ARO', 'Observatoire Ghysique d''Arta, Djibouti');
-INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('AS', 'Modified High Gain Long Period Network (ASRO), Albuquerque, USA');
+UPDATE SeismoWebPortal_stationnetwork SET name = 'Modified High Gain Long Period Network (ASRO), Albuquerque, USA' WHERE code = 'AS';
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('ASRS', 'GSRAS Siberian Branch, Altay-Sayan Reg. Seis. Ctr., Novosibirsk, Russia');
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('ATH', 'National Observatory of Athens, Greece');
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('ATL', 'Georgia Institute of Technology, Atlanta, USA');
@@ -28,7 +28,7 @@
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('BHKY', 'University of Kentucky, Lexington, USA');
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('BHL', 'Conseil National de la Recherche Scientifique, Beirut, Lebanon');
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('BJI', 'Institute of Geophysics, China Earthquake Administration, Beijing');
-INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('BK', 'Berkeley Digital Seismograph Network, California, USA');
+UPDATE SeismoWebPortal_stationnetwork SET name = 'Berkeley Digital Seismograph Network, California, USA' WHERE code = 'BK';
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('BKK', 'Meteorological Department, Bangkok, Thailand');
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('BKN', 'Procurement Executive, Ministry of Defence, Blacknest, England, UK');
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('BLA', 'Virginia Polytechnic Institute and State University, Blacksburg, USA');
@@ -54,7 +54,7 @@
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('CAN', 'Australian National University, Canberra, ACT, Australia');
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('CAR', 'FUNVISIS, Caracas, Venezuela');
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('CAT', 'Istituto Scienze della Terra, Catania, Italy');
-INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('CD', 'China Digital Broadband Seismic Network (CDSN), Beijing, China');
+UPDATE SeismoWebPortal_stationnetwork SET name = 'China Digital Broadband Seismic Network (CDSN), Beijing, China' WHERE code = 'CD';
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('CDMG', 'California Division of Mines and Geology, Sacramento, USA');
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('CDPJ', 'Nat. Research Ctr for Disaster Prevention, Ibaraki-ken, Japan--now NIED');
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('CDR', 'Commissariat a l''Energie Atomique (CEA), Fontenay aux Roses, France');
@@ -66,7 +66,7 @@
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('CIG', 'Cen. de Investigaciones Geotecnicas, San Salvador, El Salvador (closed)');
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('CLE', 'John Carroll University, Cleveland, Ohio, USA (closed)');
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('CLTN', 'GSC Charlevoix Local Telemetered Network, Ottawa, Canada');
-INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('CN', 'Canadian National Seismic Network (CNSN) BB stations, Ottawa, Canada');
+UPDATE SeismoWebPortal_stationnetwork SET name = 'Canadian National Seismic Network (CNSN) BB stations, Ottawa, Canada' WHERE code = 'CN';
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('CNRM', 'Centre National de la Recherche Scient. et Tech., Rabat, Morocco');
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('COR', 'College of Oceanography, Oregon State University, Corvallis, USA');
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('CRT', 'Instituto Andaluz de Geofca, Universidad de Granada, Spain');
@@ -86,7 +86,7 @@
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('DSIT', 'State Water Works Division (DSI), Ankara, Turkey');
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('DTM', 'Carnegie Institution of Washington, Washington DC, USA');
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('DUKE', 'Duke Power Company, South Carolina, USA');
-INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('DW', 'Digital Worldwide Std. Seismograph Network (DWSSN), Albuquerque, USA');
+UPDATE SeismoWebPortal_stationnetwork SET name = 'Digital Worldwide Std. Seismograph Network (DWSSN), Albuquerque, USA' WHERE code = 'DW';
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('ECTN', 'GSC Eastern Canada Telemetered Network, Ottawa, Canada');
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('ECX', 'RESNOM, CICESE, Ensenada, Baja California, Mexico');
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('EDM', 'University of Alberta, Edmonton, Canada');
@@ -106,7 +106,7 @@
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('GAR', 'Complex Seismological Expedition, Garm, Tajikistan');
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('GBZT', 'TUBITAK, Marmara Research Center, Gebze, Turkey');
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('GCG', 'INSIVUMEH, Guatemala City, Guatemala');
-INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('GE', 'GEOFON (GeoForschungsNetz) Program, Potsdam, Germany');
+UPDATE SeismoWebPortal_stationnetwork SET name = 'GEOFON (GeoForschungsNetz) Program, Potsdam, Germany' WHERE code = 'GE';
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('GEN', 'Dipart. Studio del Territorio e Risorse, Universiti Genova, Italy');
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('GEOS', 'Programme GEOSCOPE, Paris, France');
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('GEOT', 'Teledyne Geotech Corporation, Garland, Texas, USA');
@@ -115,11 +115,11 @@
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('GII', 'Geophysical Institute of Israel, Lod, Israel');
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('GOL', 'Geophysics Department, Colorado School of Mines, Golden, Colorado, USA');
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('GOM', 'Observatoire Volcanologique de Goma, Goma, Dem. Republic of the Congo');
-INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('GR', 'German Regional Seismic Network (GRSN), Hannover, Germany');
+UPDATE SeismoWebPortal_stationnetwork SET name = 'German Regional Seismic Network (GRSN), Hannover, Germany' WHERE code = 'GR';
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('GRF', 'BGR, Zentralobservatorium Grnberg, Erlangen, Germany');
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('GRN', 'Lab. de Ghysique Interne et de Tectonophysique, Grenoble, France');
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('GSDM', 'Geological Survey Department of Malawi, Zomba, Malawi');
-INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('GT', 'Global Telemetered Seismic Network (GTSN), Albuquerque, USA');
+UPDATE SeismoWebPortal_stationnetwork SET name = 'Global Telemetered Seismic Network (GTSN), Albuquerque, USA' WHERE code = 'GT';
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('GUC', 'Departamento de Geofca, Universidad de Chile, Santiago, Chile');
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('GUV', 'CVG Electrificacion del CaronEDELCA), Guri, Venezuela');
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('HACU', 'Hacettepe University, Ankara, Turkey');
@@ -137,12 +137,12 @@
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('HSS', 'Inst. of Seismology and Volcanology, Hokkaido Univ., Sapporo, Japan');
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('HVO', 'USGS Hawaiian Volcano Observatory, Hawaii, USA');
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('HYB', 'National Geophysical Research Institute, Hyderabad, India');
-INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('IC', 'IRIS/USGS China Digital Broadband Seismic Network, Beijing, China');
+UPDATE SeismoWebPortal_stationnetwork SET name = 'IRIS/USGS China Digital Broadband Seismic Network, Beijing, China' WHERE code = 'IC';
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('ICE', 'Instituto Costariccense de Electricidad, San JosCosta Rica');
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('ID', 'Project IDA (Intl. Deployment of Accelerometers), San Diego, USA');
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('IGIL', 'Inst. Geofco do Infante D. Luis, Univ. de Lisboa, Lisbon, Portugal');
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('IGSN', 'IRIS Global Seismograph Network miscellaneous stations, Seattle, USA');
-INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('II', 'IRIS/IDA Global Seismograph Network, Seattle and San Diego, USA');
+UPDATE SeismoWebPortal_stationnetwork SET name = 'IRIS/IDA Global Seismograph Network, Seattle and San Diego, USA' WHERE code = 'II';
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('IIM', 'Instituto de Ingenier UNAM, Mexico City, Mexico');
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('INDR', 'Inst. Nacional de Recursos Hidraulicos, Santo Domingo, Dominican Rep.');
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('INEL', 'Idaho Nat. Engineering and Environmental Lab., Idaho Falls, Idaho, USA');
@@ -156,7 +156,7 @@
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('ISK', 'Kandilli Observatory and Earthquake Research Inst., Istanbul, Turkey');
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('IST', 'Istanbul Technical University, Maslak, Istanbul, Turkey');
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('ISTP', 'Instituto Superior Tecnico, Lisbon, Portugal');
-INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('IU', 'IRIS/USGS Global Seismograph Network, Seattle and Albuquerque, USA');
+UPDATE SeismoWebPortal_stationnetwork SET name = 'IRIS/USGS Global Seismograph Network, Seattle and Albuquerque, USA' WHERE code = 'IU';
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('JCK', 'Geologisches Landesamt Nordrhein-Westfalen, Krefeld, Germany');
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('JEN', 'Inst. fwissenschaften, Friedrich-Schiller-Univ., Jena, Germany');
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('JHI', 'Regional Research Laboratory, Jorhat, India');
@@ -204,7 +204,7 @@
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('MERI', 'Maharashtra Engineering Research Institute, Nashik, Maharashtra, India');
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('MES', 'Istituto Geofisico e Geodetico, Messina, Italy');
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('MEX', 'RESMAC, IIMAS-UNAM, Mexico City, Mexico (now part of UNM network)');
-INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('MN', 'Mediterranean Very Broadband Seismograph Network (MedNet), Rome, Italy');
+UPDATE SeismoWebPortal_stationnetwork SET name = 'Mediterranean Very Broadband Seismograph Network (MedNet), Rome, Italy' WHERE code = 'MN';
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('MNLO', 'USGS National Center for Earthquake Research, Menlo Park, Calif, USA');
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('MNM', 'University of Minnesota, Minneapolis, USA');
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('MOLD', 'Institute of Geophysics and Geology, Chisinau, Moldova');
@@ -258,7 +258,7 @@
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('PPT', 'Laboratoire de Ghysique, Papeete, French Polynesia');
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('PRE', 'Council for Geoscience, Pretoria, South Africa');
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('PRT', 'Osservatorio San Domenico, Prato, Italy');
-INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('PS', 'Ocean Hemisphere Project (formerly POSEIDON), Tokyo, Japan');
+UPDATE SeismoWebPortal_stationnetwork SET name = 'Ocean Hemisphere Project (formerly POSEIDON), Tokyo, Japan' WHERE code = 'PS';
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('PSNT', 'Public Seismic Network - PSN (homepage: www.seismicnet.com)');
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('PTN', 'State University of New York, Potsdam, New York, USA');
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('QCP', 'Manila Observatory, Ateneo de Manila University, Manila, Philippines');
@@ -303,7 +303,7 @@
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('SOF', 'Section of Seismology, Bulgarian Academy of Sciences, Sofia, Bulgaria');
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('SORS', 'Republic Hydrometeorological Institute, Banja Luka, Bosnia-Herzegovina');
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('SPGM', 'Service de Physique du Globe, Rabat Agdal, Morocco');
-INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('SR', 'Seismic Research Observatory Network (SRO), Albuquerque, USA');
+UPDATE SeismoWebPortal_stationnetwork SET name = 'Seismic Research Observatory Network (SRO), Albuquerque, USA' WHERE code = 'SR';
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('SRPD', 'Savannah River Laboratory, Aiken, South Carolina, USA');
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('SSNC', 'Centro Nacional de Investigaciones Sismolas, Santiago de Cuba, Cuba');
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('SSO', 'Osservatorio Geofisico Sperimentale, Macerata, Italy');
@@ -326,10 +326,10 @@
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('TRI', 'Ist. Nazle. di Oceanografia e di Geofisica Sperimentale, Trieste, Italy');
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('TRKM', 'Institute of Seismology, Turkmenistan Academy of Science, Ashgabat');
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('TRN', 'University of the West Indies, St. Augustine, Trinidad');
-INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('TS', 'TERRAscope Network, Pasadena, USA');
+UPDATE SeismoWebPortal_stationnetwork SET name = 'TERRAscope Network, Pasadena, USA' WHERE code = 'TS';
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('TUL', 'Oklahoma Geological Survey, Leonard, USA');
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('TVA', 'Tennessee Valley Authority, Knoxville, Tennessee, USA');
-INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('TW', 'Broadband Array in Taiwan for Seismology (BATS), Taipei, Taiwan');
+UPDATE SeismoWebPortal_stationnetwork SET name = 'Broadband Array in Taiwan for Seismology (BATS), Taipei, Taiwan' WHERE code = 'TW';
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('TZN', 'University of Dar es Salaam, Tanzania');
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('UAV', 'Laboratorio de Geofca, Universidad de los Andes, Mda, Venezuela');
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('UBC', 'University of British Columbia, Vancouver, B.C., Canada');
@@ -343,7 +343,7 @@
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('UPA', 'Instituto de Geociencias, Universidad de PanamPanama');
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('UPP', 'Seismological Institute, Uppsala, Sweden');
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('URS', 'Kochi University, Kochi, Japan');
-INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('US', 'United States National Seismic Network (USNSN), Golden USA');
+UPDATE SeismoWebPortal_stationnetwork SET name = 'United States National Seismic Network (USNSN), Golden USA' WHERE code = 'US';
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('USAF', 'US Air Force Technical Applications Center, Melbourne, Florida, USA');
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('USAV', 'USGS Alaska Volcano Observatory, Anchorage, USA');
INSERT INTO SeismoWebPortal_stationnetwork (code, name) VALUES ('USBR', 'US Bureau of Reclamation, Denver, Colorado, USA');
Added: cs/portal/trunk/seismo/SeismoWebPortal/templates/SeismoWebPortal/eventworkspace_form.html
===================================================================
--- cs/portal/trunk/seismo/SeismoWebPortal/templates/SeismoWebPortal/eventworkspace_form.html (rev 0)
+++ cs/portal/trunk/seismo/SeismoWebPortal/templates/SeismoWebPortal/eventworkspace_form.html 2008-04-03 02:02:25 UTC (rev 11740)
@@ -0,0 +1,30 @@
+
+<h2>settings</h2>
+
+<form method="post" action="{{ action }}">
+
+ {% if form.has_errors %}
+ <p><span class=error>Please correct the following error{{ form.error_dict|pluralize }}.</span>
+ {% endif %}
+
+ <div class=tab30ex>
+
+ <div>
+ <label for="id_stations" class=before>station list</label>
+ {{ form.stations }}
+ {% if form.stations.errors %}<span class=error>{{ form.stations.errors|join:", " }}</span>{% endif %}
+ </div>
+
+ <div>
+ <label for="id_record_length" class=before>record length</label>
+ {{ form.record_length }} minutes
+ {% if form.record_length.errors %}<span class=error>{{ form.record_length.errors|join:", " }}</span>{% endif %}
+ {% if help_visible %}<span class=help>Choose the desired record length of the synthetic seismograms (in minutes). This controls the length of the numerical simulation, i.e., twice the record length requires twice as much CPU time. This must be 100 minutes or less for simulations run via the web.</span>{% endif %}
+ </div>
+
+ <div><input class=submit type="submit" name="save" value="Save" />
+ </div>
+
+ </div> <!-- tab30ex -->
+
+</form>
Copied: cs/portal/trunk/seismo/SeismoWebPortal/templates/SeismoWebPortal/folder.html (from rev 11624, cs/portal/trunk/seismo/SeismoWebPortal/templates/SeismoWebPortal/home.html)
===================================================================
--- cs/portal/trunk/seismo/SeismoWebPortal/templates/SeismoWebPortal/folder.html (rev 0)
+++ cs/portal/trunk/seismo/SeismoWebPortal/templates/SeismoWebPortal/folder.html 2008-04-03 02:02:25 UTC (rev 11740)
@@ -0,0 +1,8 @@
+
+<h2>{{ name }}</h2>
+
+<div class=icon>
+{% for item in items %}
+ <table><tr><td><a href="{{item.url}}">{{ item.icon }}</a></td></tr><tr><td><a href="{{item.url}}">{{ item.name }}</a></td></tr></table>
+{% endfor %}
+</ul>
Deleted: cs/portal/trunk/seismo/SeismoWebPortal/templates/SeismoWebPortal/home.html
===================================================================
--- cs/portal/trunk/seismo/SeismoWebPortal/templates/SeismoWebPortal/home.html 2008-04-02 20:13:07 UTC (rev 11739)
+++ cs/portal/trunk/seismo/SeismoWebPortal/templates/SeismoWebPortal/home.html 2008-04-03 02:02:25 UTC (rev 11740)
@@ -1,8 +0,0 @@
-
-<h2>Home</h2>
-
-<div class=icon>
-{% for item in folder %}
- <table><tr><td><a href="{{item.url}}">{{ item.icon }}</a></td></tr><tr><td><a href="{{item.url}}">{{ item.name }}</a></td></tr></table>
-{% endfor %}
-</ul>
Modified: cs/portal/trunk/seismo/SeismoWebPortal/templates/SeismoWebPortal/mineosparameters_form.html
===================================================================
--- cs/portal/trunk/seismo/SeismoWebPortal/templates/SeismoWebPortal/mineosparameters_form.html 2008-04-02 20:13:07 UTC (rev 11739)
+++ cs/portal/trunk/seismo/SeismoWebPortal/templates/SeismoWebPortal/mineosparameters_form.html 2008-04-03 02:02:25 UTC (rev 11740)
@@ -21,12 +21,6 @@
{% if form.model.errors %}<span class=error>{{ form.model.errors|join:", " }}</span>{% endif %}
</div>
- <div>
- <label for="id_stations" class=before>station list</label>
- {{ form.stations }}
- {% if form.stations.errors %}<span class=error>{{ form.stations.errors|join:", " }}</span>{% endif %}
- </div>
-
</div> <!-- tab30ex -->
<fieldset><legend>oscillations</legend>
Modified: cs/portal/trunk/seismo/SeismoWebPortal/templates/SeismoWebPortal/specfem3dglobeparameters_detail.html
===================================================================
--- cs/portal/trunk/seismo/SeismoWebPortal/templates/SeismoWebPortal/specfem3dglobeparameters_detail.html 2008-04-02 20:13:07 UTC (rev 11739)
+++ cs/portal/trunk/seismo/SeismoWebPortal/templates/SeismoWebPortal/specfem3dglobeparameters_detail.html 2008-04-03 02:02:25 UTC (rev 11740)
@@ -3,25 +3,12 @@
<div class=properties>
- <div class=box>
- <h3>general</h3>
-
<dl>
<dt>type</dt><dd>{% ifequal object.mesh.nchunks 6 %}global{% else %}regional{% endifequal %}</dd>
<dt>mesh</dt><dd><a href="../../meshes/{{ object.mesh.id }}/">{{ object.mesh }}</a></dd>
<dt>model</dt><dd><a href="../../models/{{ object.model.id }}/">{{ object.model }}</a></dd>
- <dt>record length</dt><dd>{{ object.record_length }} minutes</dd>
- </dl>
- </div>
-
- <div class=box>
- <h3>stations</h3>
-
- <dl>
- <dt>station list</dt><dd><a href="../../../stations/{{ object.stations.id }}/">{{ object.stations }}</a></dd>
<dt>receivers at depth</dt><dd>{{ object.receivers_can_be_buried }}</dd>
</dl>
- </div>
{% if 0 %}
<div class=box>
Modified: cs/portal/trunk/seismo/SeismoWebPortal/templates/SeismoWebPortal/specfem3dglobeparameters_form.html
===================================================================
--- cs/portal/trunk/seismo/SeismoWebPortal/templates/SeismoWebPortal/specfem3dglobeparameters_form.html 2008-04-02 20:13:07 UTC (rev 11739)
+++ cs/portal/trunk/seismo/SeismoWebPortal/templates/SeismoWebPortal/specfem3dglobeparameters_form.html 2008-04-03 02:02:25 UTC (rev 11740)
@@ -24,12 +24,6 @@
</div>
- <div>
- <label for="id_stations" class=before>station list</label>
- {{ form.stations }}
- {% if form.stations.errors %}<span class=error>{{ form.stations.errors|join:", " }}</span>{% endif %}
- </div>
-
<div class=checkbox>
{{ form.receivers_can_be_buried }}
<label for="id_receivers_can_be_buried" class=after>receivers at depth</label>
Modified: cs/portal/trunk/seismo/SeismoWebPortal/templates/SeismoWebPortal/specfem3dgloberequest_form.html
===================================================================
--- cs/portal/trunk/seismo/SeismoWebPortal/templates/SeismoWebPortal/specfem3dgloberequest_form.html 2008-04-02 20:13:07 UTC (rev 11739)
+++ cs/portal/trunk/seismo/SeismoWebPortal/templates/SeismoWebPortal/specfem3dgloberequest_form.html 2008-04-03 02:02:25 UTC (rev 11740)
@@ -8,11 +8,3 @@
{% if help_visible %}
<dl class=help><dt>zero half duration</dt><dd>For point-source simulations, we recommend setting the source half-duration parameter <code>half duration</code> equal to zero, which corresponds to simulating a step source-time function, i.e., a moment-rate function that is a delta function. If <code>half duration</code> is not set to zero, the code will use a Gaussian (i.e., a signal with a shape similar to a 'smoothed triangle', as explained in Komatitsch and Tromp [2002a]) source-time function with half-width <code>half duration</code>. We prefer to run the solver with <code>half duration</code> set to zero and convolve the resulting synthetic seismograms in post-processing after the run, because this way it is easy to use a variety of source-time functions. Komatitsch and Tromp [2002a] determined that the noise generated in the simulation by using a step source time function may be safely filtered out afterward based upon a convolution with the desired source time function and/or low-pass filtering. Use the script <code>process_syn.pl</code> for this purpose by specifying the <code>-h</code> option (the <code>process_syn.pl</code> script can be found in the <a href="/specfem3dglobe/samples/UTILS.tar.gz">utilities package</a>). Alternatively, use signal-processing software packages such as <a href="http://www.llnl.gov/sac/">SAC</a>.<p>For finite fault simulations, it is usually not advisable to use a zero half duration and convolve afterwards, since the half duration is generally fixed by the finite fault model.</dd></dl>
{% endif %}
-
-
- <div>
- <label for="id_record_length" class=before>record length</label>
- {{ form.record_length }} minutes
- {% if form.record_length.errors %}<span class=error>{{ form.record_length.errors|join:", " }}</span>{% endif %}
- {% if help_visible %}<span class=help>Choose the desired record length of the synthetic seismograms (in minutes). This controls the length of the numerical simulation, i.e., twice the record length requires twice as much CPU time. This must be 100 minutes or less for simulations run via the web.</span>{% endif %}
- </div>
Deleted: cs/portal/trunk/seismo/SeismoWebPortal/templates/SeismoWebPortal/trash.html
===================================================================
--- cs/portal/trunk/seismo/SeismoWebPortal/templates/SeismoWebPortal/trash.html 2008-04-02 20:13:07 UTC (rev 11739)
+++ cs/portal/trunk/seismo/SeismoWebPortal/templates/SeismoWebPortal/trash.html 2008-04-03 02:02:25 UTC (rev 11740)
@@ -1,8 +0,0 @@
-
-<h2>Trash</h2>
-
-<ul>
-{% for item in folder %}
- <li><a href="{{item.url}}">{{ item.icon }} {{ item.name }}</a></li>
-{% endfor %}
-</ul>
Modified: cs/portal/trunk/seismo/SeismoWebPortal/views.py
===================================================================
--- cs/portal/trunk/seismo/SeismoWebPortal/views.py 2008-04-02 20:13:07 UTC (rev 11739)
+++ cs/portal/trunk/seismo/SeismoWebPortal/views.py 2008-04-03 02:02:25 UTC (rev 11740)
@@ -16,6 +16,7 @@
from models import MineosModeCatalog, MineosModel, MineosParameters
from models import Run, Job, OutputFile
from models import FSNode, Folder
+from models import EventWorkspace
from cmt import CMTSolution
import gui
@@ -102,6 +103,7 @@
index = Index({
"home": homeFolder,
+ "shared": sharedFolder,
"trash": trashFolder,
"config": config,
"events": event_search,
@@ -147,6 +149,7 @@
def openFileBrowser(desktop):
navtree = gui.Directory("desktop", "Desktop", [
gui.Directory("home", "Home", []),
+ gui.Directory("shared", "Shared", []),
gui.Directory("trash", "Trash", []),
gui.Search("events", "Event Finder", url = "/specfem3dglobe/events/"),
])
@@ -185,13 +188,21 @@
def trashFolder(request, path, desktop):
+ return folderView(Folder.trashFolder(request.user), "trash", "/specfem3dglobe/trash/", request, path, desktop)
+
+
+def sharedFolder(request, path, desktop):
+ return folderView(Folder.sharedFolder(), "shared", "/specfem3dglobe/shared/", request, path, desktop)
+
+
+def folderView(folder, slug, url, request, path, desktop):
fileBrowser = desktop.windowList[0]
- trashFolder = fileBrowser.root.index["trash"]
- fileBrowser.path.append(trashFolder)
- trash = Folder.trashFolder(request.user)
- child = gui.ChildWindow("/specfem3dglobe/trash/", "View")
- child.content = gui.StaticContent(loader.render_to_string('SeismoWebPortal/trash.html',
- {'folder': FSNode.objects.filter(parent=trash.fsNode)}))
+ folderIcon = fileBrowser.root.index[slug]
+ fileBrowser.path.append(folderIcon)
+ child = gui.ChildWindow(url, "View")
+ child.content = gui.StaticContent(loader.render_to_string('SeismoWebPortal/folder.html',
+ {'name': folder.fsNode.name,
+ 'items': FSNode.objects.filter(parent=folder.fsNode)}))
desktop.activeWindow.selectWindow(child)
return desktop
@@ -263,8 +274,10 @@
fileBrowser = desktop.windowList[0]
if fsNode.inTrash:
folderName = "trash"
+ elif fsNode.owner:
+ folderName = "home"
else:
- folderName = "home"
+ folderName = "shared"
folder = fileBrowser.root.index[folderName]
fileBrowser.path.append(folder)
item = gui.File(name, fsNode.name, url = url)
@@ -276,7 +289,7 @@
ModelClass = obj.__class__
specialClasses = {
- Event: eventViewer,
+ EventWorkspace: eventViewer,
StationList: configStationList,
Specfem3DGlobeMesh: configSpecfem3DGlobeMesh,
Specfem3DGlobeParameters: configSpecfem3DGlobeParameters,
@@ -355,9 +368,9 @@
)
]
home = Folder.homeFolder(request.user)
- trash = Folder.trashFolder(request.user)
- child.content = gui.StaticContent(loader.render_to_string('SeismoWebPortal/home.html',
- {'folder': FSNode.objects.filter(parent=home.fsNode)}))
+ child.content = gui.StaticContent(loader.render_to_string('SeismoWebPortal/folder.html',
+ {'name': home.fsNode.name,
+ 'items': FSNode.objects.filter(parent=home.fsNode)}))
desktop.activeWindow.selectWindow(child)
return desktop
@@ -1081,8 +1094,11 @@
fsNode.parent = Folder.trashFolder(request.user).fsNode
fsNode.save()
return HttpResponseRedirect(postTrashRedirect)
-
+
+def img(src):
+ return '<img src="%s">' % src
+
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Events
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -1113,41 +1129,46 @@
return view, edit
-def eventViewer(event, url, request, path, desktop):
- from list_detail import object_detail
+def eventViewer(workspace, url, request, path, desktop):
- objId = event.id # Ouch!
-
- eventName = event.fsNode.name
+ workspaceName = workspace.fsNode.name
+ event = workspace.event
if event.singleSource:
- zero = gui.File("mechanism", "Source Mechanism", url = url)
+ sources = gui.File("mechanism", "Source Mechanism", url = url + "sources/")
else:
- zero = gui.Directory("sources", "Sources", [], url = url)
+ sources = gui.Directory("sources", "Sources", [], url = url + "sources/")
navtree = gui.Directory("events", "Events", [
- zero,
+ gui.Directory("seismograms", "Seismograms", [], url = url),
+ sources,
+ gui.File("settings", "Settings", url = url + "settings/"),
gui.File("properties", "Properties", url = url + "properties/"),
])
- appWindow = gui.EventViewer(url, eventName + " - Event Viewer", navtree, event)
+ appWindow = gui.EventViewer(url, workspaceName + " - Event Viewer", navtree, workspace)
desktop.insertWindow(appWindow)
desktop.selectWindow(appWindow)
-
+
if not path:
- appWindow.path.append(zero)
- view, edit = eventWindows(event, url, desktop)
- return object_detail(
- request,
- desktop,
- view,
- object_id = objId,
- queryset = Event.objects.filter(fsNode__owner=request.user),
- )
+ return seismogramTable(workspace, url, request, path, appWindow, desktop)
name = path.pop(0)
- if name == "edit":
- appWindow.path.append(zero)
- view, edit = eventWindows(event, url, desktop)
- return manipulate_event(request, path, desktop, object_id = objId, action = 'edit', window = edit)
+
+ if name == "sources":
+ return configSources(workspace, url, request, path, appWindow, desktop)
+
+ if name == "settings":
+ appWindow.path.append(navtree.index['settings'])
+ settings = gui.ChildWindow(url + "settings/", "Settings")
+ settings.buttons.append(helpButton(request))
+ desktop.activeWindow.insertWindow(settings)
+ return update_object(request,
+ desktop,
+ settings,
+ EventWorkspace,
+ workspace.id, # Ouch!
+ post_save_redirect = url,
+ follow = EventWorkspace.follow,
+ )
if name == "properties":
appWindow.path.append(navtree.index['properties'])
menuBar = [
@@ -1159,20 +1180,122 @@
properties = gui.ChildWindow(url + "properties/", "Properties")
properties.menuBar = menuBar
desktop.activeWindow.insertWindow(properties)
- return manipulate_event(request, path, desktop, object_id = objId, action = 'properties', window = properties)
+ return update_object(request,
+ desktop,
+ properties,
+ FSNode,
+ workspace.fsNode.id, # Ouch!
+ post_save_redirect = '/specfem3dglobe/home/',
+ follow = FSNode.follow,
+ )
if name == "delete":
- return moveObjectToTrash(event, request, "/specfem3dglobe/home/")
+ return moveObjectToTrash(workspace, request, "/specfem3dglobe/home/")
+ response = eventFiles(name, event, request)
+ if response:
+ return response
+
+ raise Http404
+
+
+
+def seismogramTable(workspace, url, request, path, appWindow, desktop):
+ from StringIO import StringIO
+
+ event = workspace.event
+ seismogramsIcon = appWindow.root.contents[0]
+ appWindow.path.append(seismogramsIcon)
+
+ window = gui.ChildWindow(url, "Seismograms")
+ desktop.activeWindow.insertWindow(window)
+
+ html = StringIO()
+ print >>html, '<h2>%s - Seismograms</h2>' % workspace
+
+ # 1D Synthetics
+ print >>html, '<h3>1D Synthetics</h3>'
+ print >>html, '<table rules="groups" class="cool">'
+ print >>html, '<thead>'
+ print >>html, '<tr><th>model</th><th>catalog</th><th>status</th></tr>'
+ print >>html, '</thead>'
+ print >>html, '<tbody>'
+ print >>html, '</tbody>'
+ print >>html, '</table>'
+
+ print >>html, "<p></p>"
+
+ # 3D Synthetics
+ table = {}
+ for ps in Specfem3DGlobeParameters.objects.all():
+ modelGroup = table.setdefault(ps.model.id, {})
+ meshGroup = modelGroup.setdefault(ps.mesh.id, [])
+ meshGroup.append(ps)
+
+ print >>html, '<h3>3D Synthetics</h3>'
+ print >>html, '<table rules=groups class=cool>'
+ print >>html, '<thead>'
+ print >>html, '<tr><th>model</th><th>mesh</th><th>shortest period (s)</th><th>receivers at depth</th><th>parameter set</th><th>status</th></tr>'
+ print >>html, '</thead>'
+
+ for i, modelGroup in enumerate(table.itervalues()):
+ print >>html, '<tbody class=%s>' % (i % 2 and 'even' or 'odd')
+ for meshGroup in modelGroup.itervalues():
+ for ps in meshGroup:
+ atDepth = img("/specfem3dglobe/pics/icon-%s.gif" % (ps.receivers_can_be_buried and "yes" or "no"))
+ print >>html, ('<tr><td>%s</td><td>%s</td><td>%.0f</td><td>%s</td><td>%s</td><td>unavailable</td></tr>' %
+ (ps.model, ps.mesh, ps.mesh.shortestPeriod(), atDepth, ps)
+ )
+ print >>html, '</tbody>'
+
+ print >>html, '</table>'
+
+ window.content = gui.StaticContent(html.getvalue())
+ desktop.activeWindow.selectWindow(window)
+
+ return desktop
+
+
+def eventFiles(name, event, request):
index = Index({
- "CMTSOLUTION.txt": (event_detail_cmtsolution_txt, (), dict(object_id = objId)),
- "beachball.gif": (beachball_gif, (), dict(event_id = objId)),
- "gearth.kml": (event_detail_gearth, (), dict(object_id = objId)),
+ "CMTSOLUTION.txt": (event_detail_cmtsolution_txt, (), dict(object_id = event.id)),
+ "beachball.gif": (beachball_gif, (), dict(event_id = event.id)),
+ "gearth.kml": (event_detail_gearth, (), dict(object_id = event.id)),
})
call = index.get(name)
if call:
view, args, kwds = call
return view(request, *args, **kwds)
+ return None
+
+
+def configSources(workspace, url, request, path, appWindow, desktop):
+ from list_detail import object_detail
+
+ event = workspace.event
+ sourcesIcon = appWindow.root.contents[1]
+ appWindow.path.append(sourcesIcon)
+ url += "sources/"
+
+ if not path:
+ view, edit = eventWindows(event, url, desktop)
+ return object_detail(
+ request,
+ desktop,
+ view,
+ object_id = event.id,
+ queryset = Event.objects.all(),
+ )
+
+ name = path.pop(0)
+ if name == "edit":
+ view, edit = eventWindows(event, url, desktop)
+ return manipulate_event(request, path, desktop, workspace = workspace, action = 'edit', window = edit)
+
+ response = eventFiles(name, event, request)
+ if response:
+ return response
+
return configSource(name, event, url, request, path, desktop)
@@ -1187,10 +1310,10 @@
url = eventUrl + "%d/" % objId
source = get_object_or_404(Source, id=objId) # Ouch!
- sourcesFolder = appWindow.root.contents[0]
+ sourcesFolder = appWindow.root.contents[1]
navIcon = gui.File(name, source.eventName, url = url)
sourcesFolder.appendNode(navIcon)
- appWindow.path.extend([sourcesFolder, navIcon])
+ appWindow.path.append(navIcon)
view = gui.ChildWindow(url, "View")
edit = gui.ChildWindow(url + "edit/", "Edit")
@@ -1305,7 +1428,7 @@
return desktop
-def manipulate_event(request, path, desktop, action=None, object_id=None, window=None):
+def manipulate_event(request, path, desktop, action=None, workspace=None, window=None):
from forms import SingleSourceEventAddManipulator, SingleSourceEventChangeManipulator
if path: raise Http404
@@ -1316,19 +1439,9 @@
window = gui.ChildWindow("/specfem3dglobe/config/events/new/", "New")
desktop.activeWindow.insertWindow(window)
elif action == "edit":
- event = get_object_or_404(Event, id=object_id)
+ event = workspace.event
if not event.singleSource: raise Http404
- manipulator = SingleSourceEventChangeManipulator(event)
- elif action == "properties":
- objId = get_object_or_404(Event, id=object_id).fsNode.id # Ouch!
- return update_object(request,
- desktop,
- window,
- FSNode,
- objId,
- post_save_redirect = '/specfem3dglobe/home/',
- follow = FSNode.follow,
- )
+ manipulator = SingleSourceEventChangeManipulator(workspace)
else:
raise Http404
@@ -1340,11 +1453,11 @@
name = new_data.get('name')
if name:
del new_data['name']
- new_event = manipulator.save(new_data, request.user)
+ obj = manipulator.save(new_data, request.user)
if name:
- new_event.fsNode.name = name
- new_event.fsNode.save()
- url = "/specfem3dglobe/%i/" % new_event.fsNode.id
+ obj.fsNode.name = name
+ obj.fsNode.save()
+ url = "/specfem3dglobe/%i/" % obj.fsNode.id
return HttpResponseRedirect(url)
else:
new_data = manipulator.flatten_data()
@@ -1538,7 +1651,7 @@
)
if name == "map":
- map.content = gui.StaticContent('<img src="%s">' % (url + "map.jpg"))
+ map.content = gui.StaticContent(img(url + "map.jpg"))
desktop.activeWindow.selectWindow(map)
return desktop
More information about the cig-commits
mailing list