##// END OF EJS Templates
- Ejecutando el script de cambio de apunte....
jsalyrosas -
r204:205
parent child
Show More
@@ -0,0 +1,131
1 # -*- coding: utf-8 -*-
2 import datetime
3 from south.db import db
4 from south.v2 import SchemaMigration
5 from django.db import models
6
7
8 class Migration(SchemaMigration):
9
10 def forwards(self, orm):
11 # Adding model 'Profile'
12 db.create_table('abs_profile_antenna', (
13 ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
14 ('name', self.gf('django.db.models.fields.CharField')(max_length=250)),
15 ('date_create', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
16 ('date_modified', self.gf('django.db.models.fields.DateTimeField')(auto_now=True, blank=True)),
17 ('hits', self.gf('django.db.models.fields.PositiveIntegerField')(default=0)),
18 ('state', self.gf('django.db.models.fields.PositiveSmallIntegerField')(default=0)),
19 ))
20 db.send_create_signal('abscontrol', ['Profile'])
21
22 # Adding model 'Pattern'
23 db.create_table('abs_pattern_antenna', (
24 ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
25 ('profile', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['abscontrol.Profile'])),
26 ('value', self.gf('django.db.models.fields.PositiveIntegerField')()),
27 ('date_create', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
28 ('date_modified', self.gf('django.db.models.fields.DateTimeField')(auto_now=True, blank=True)),
29 ('hits', self.gf('django.db.models.fields.PositiveIntegerField')(default=0)),
30 ('state', self.gf('django.db.models.fields.PositiveSmallIntegerField')(default=1)),
31 ))
32 db.send_create_signal('abscontrol', ['Pattern'])
33
34 # Adding model 'AntennaUp'
35 db.create_table('abs_antenna_up', (
36 ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
37 ('pattern', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['abscontrol.Pattern'])),
38 ('value', self.gf('django.db.models.fields.TextField')()),
39 ('tx', self.gf('django.db.models.fields.TextField')(null=True)),
40 ('rx', self.gf('django.db.models.fields.TextField')(null=True)),
41 ('ues', self.gf('django.db.models.fields.CharField')(max_length=120, null=True)),
42 ('only_rx', self.gf('django.db.models.fields.PositiveSmallIntegerField')(default=0)),
43 ('date_create', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
44 ('date_modified', self.gf('django.db.models.fields.DateTimeField')(auto_now=True, blank=True)),
45 ('hits', self.gf('django.db.models.fields.PositiveIntegerField')(default=0)),
46 ('state', self.gf('django.db.models.fields.PositiveSmallIntegerField')(default=1)),
47 ))
48 db.send_create_signal('abscontrol', ['AntennaUp'])
49
50 # Adding model 'AntennaDown'
51 db.create_table('abs_antenna_down', (
52 ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
53 ('pattern', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['abscontrol.Pattern'])),
54 ('value', self.gf('django.db.models.fields.TextField')()),
55 ('tx', self.gf('django.db.models.fields.TextField')(null=True)),
56 ('rx', self.gf('django.db.models.fields.TextField')(null=True)),
57 ('ues', self.gf('django.db.models.fields.CharField')(max_length=120, null=True)),
58 ('only_rx', self.gf('django.db.models.fields.PositiveSmallIntegerField')(default=0)),
59 ('date_create', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
60 ('date_modified', self.gf('django.db.models.fields.DateTimeField')(auto_now=True, blank=True)),
61 ('hits', self.gf('django.db.models.fields.PositiveIntegerField')(default=0)),
62 ('state', self.gf('django.db.models.fields.PositiveSmallIntegerField')(default=1)),
63 ))
64 db.send_create_signal('abscontrol', ['AntennaDown'])
65
66
67 def backwards(self, orm):
68 # Deleting model 'Profile'
69 db.delete_table('abs_profile_antenna')
70
71 # Deleting model 'Pattern'
72 db.delete_table('abs_pattern_antenna')
73
74 # Deleting model 'AntennaUp'
75 db.delete_table('abs_antenna_up')
76
77 # Deleting model 'AntennaDown'
78 db.delete_table('abs_antenna_down')
79
80
81 models = {
82 'abscontrol.antennadown': {
83 'Meta': {'object_name': 'AntennaDown', 'db_table': "'abs_antenna_down'"},
84 'date_create': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
85 'date_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
86 'hits': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
87 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
88 'only_rx': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '0'}),
89 'pattern': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['abscontrol.Pattern']"}),
90 'rx': ('django.db.models.fields.TextField', [], {'null': 'True'}),
91 'state': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '1'}),
92 'tx': ('django.db.models.fields.TextField', [], {'null': 'True'}),
93 'ues': ('django.db.models.fields.CharField', [], {'max_length': '120', 'null': 'True'}),
94 'value': ('django.db.models.fields.TextField', [], {})
95 },
96 'abscontrol.antennaup': {
97 'Meta': {'object_name': 'AntennaUp', 'db_table': "'abs_antenna_up'"},
98 'date_create': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
99 'date_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
100 'hits': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
101 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
102 'only_rx': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '0'}),
103 'pattern': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['abscontrol.Pattern']"}),
104 'rx': ('django.db.models.fields.TextField', [], {'null': 'True'}),
105 'state': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '1'}),
106 'tx': ('django.db.models.fields.TextField', [], {'null': 'True'}),
107 'ues': ('django.db.models.fields.CharField', [], {'max_length': '120', 'null': 'True'}),
108 'value': ('django.db.models.fields.TextField', [], {})
109 },
110 'abscontrol.pattern': {
111 'Meta': {'object_name': 'Pattern', 'db_table': "'abs_pattern_antenna'"},
112 'date_create': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
113 'date_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
114 'hits': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
115 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
116 'profile': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['abscontrol.Profile']"}),
117 'state': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '1'}),
118 'value': ('django.db.models.fields.PositiveIntegerField', [], {})
119 },
120 'abscontrol.profile': {
121 'Meta': {'object_name': 'Profile', 'db_table': "'abs_profile_antenna'"},
122 'date_create': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
123 'date_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
124 'hits': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
125 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
126 'name': ('django.db.models.fields.CharField', [], {'max_length': '250'}),
127 'state': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '0'})
128 }
129 }
130
131 complete_apps = ['abscontrol'] No newline at end of file
@@ -0,0 +1,73
1 # -*- coding: utf-8 -*-
2 import datetime
3 from south.db import db
4 from south.v2 import SchemaMigration
5 from django.db import models
6
7
8 class Migration(SchemaMigration):
9
10 def forwards(self, orm):
11 # Adding field 'Profile.is_active'
12 db.add_column('abs_profile_antenna', 'is_active',
13 self.gf('django.db.models.fields.PositiveSmallIntegerField')(default=0),
14 keep_default=False)
15
16
17 def backwards(self, orm):
18 # Deleting field 'Profile.is_active'
19 db.delete_column('abs_profile_antenna', 'is_active')
20
21
22 models = {
23 'abscontrol.antennadown': {
24 'Meta': {'object_name': 'AntennaDown', 'db_table': "'abs_antenna_down'"},
25 'date_create': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
26 'date_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
27 'hits': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
28 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
29 'only_rx': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '0'}),
30 'pattern': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['abscontrol.Pattern']"}),
31 'rx': ('django.db.models.fields.TextField', [], {'null': 'True'}),
32 'state': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '1'}),
33 'tx': ('django.db.models.fields.TextField', [], {'null': 'True'}),
34 'ues': ('django.db.models.fields.CharField', [], {'max_length': '120', 'null': 'True'}),
35 'value': ('django.db.models.fields.TextField', [], {})
36 },
37 'abscontrol.antennaup': {
38 'Meta': {'object_name': 'AntennaUp', 'db_table': "'abs_antenna_up'"},
39 'date_create': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
40 'date_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
41 'hits': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
42 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
43 'only_rx': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '0'}),
44 'pattern': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['abscontrol.Pattern']"}),
45 'rx': ('django.db.models.fields.TextField', [], {'null': 'True'}),
46 'state': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '1'}),
47 'tx': ('django.db.models.fields.TextField', [], {'null': 'True'}),
48 'ues': ('django.db.models.fields.CharField', [], {'max_length': '120', 'null': 'True'}),
49 'value': ('django.db.models.fields.TextField', [], {})
50 },
51 'abscontrol.pattern': {
52 'Meta': {'object_name': 'Pattern', 'db_table': "'abs_pattern_antenna'"},
53 'date_create': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
54 'date_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
55 'hits': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
56 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
57 'profile': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['abscontrol.Profile']"}),
58 'state': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '1'}),
59 'value': ('django.db.models.fields.PositiveIntegerField', [], {})
60 },
61 'abscontrol.profile': {
62 'Meta': {'object_name': 'Profile', 'db_table': "'abs_profile_antenna'"},
63 'date_create': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
64 'date_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
65 'hits': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
66 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
67 'is_active': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '0'}),
68 'name': ('django.db.models.fields.CharField', [], {'max_length': '250'}),
69 'state': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '0'})
70 }
71 }
72
73 complete_apps = ['abscontrol'] No newline at end of file
@@ -0,0 +1,74
1 # -*- coding: utf-8 -*-
2 import datetime
3 from south.db import db
4 from south.v2 import SchemaMigration
5 from django.db import models
6
7
8 class Migration(SchemaMigration):
9
10 def forwards(self, orm):
11 # Adding field 'Pattern.is_active'
12 db.add_column('abs_pattern_antenna', 'is_active',
13 self.gf('django.db.models.fields.PositiveSmallIntegerField')(default=0),
14 keep_default=False)
15
16
17 def backwards(self, orm):
18 # Deleting field 'Pattern.is_active'
19 db.delete_column('abs_pattern_antenna', 'is_active')
20
21
22 models = {
23 'abscontrol.antennadown': {
24 'Meta': {'object_name': 'AntennaDown', 'db_table': "'abs_antenna_down'"},
25 'date_create': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
26 'date_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
27 'hits': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
28 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
29 'only_rx': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '0'}),
30 'pattern': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['abscontrol.Pattern']"}),
31 'rx': ('django.db.models.fields.TextField', [], {'null': 'True'}),
32 'state': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '1'}),
33 'tx': ('django.db.models.fields.TextField', [], {'null': 'True'}),
34 'ues': ('django.db.models.fields.CharField', [], {'max_length': '120', 'null': 'True'}),
35 'value': ('django.db.models.fields.TextField', [], {})
36 },
37 'abscontrol.antennaup': {
38 'Meta': {'object_name': 'AntennaUp', 'db_table': "'abs_antenna_up'"},
39 'date_create': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
40 'date_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
41 'hits': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
42 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
43 'only_rx': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '0'}),
44 'pattern': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['abscontrol.Pattern']"}),
45 'rx': ('django.db.models.fields.TextField', [], {'null': 'True'}),
46 'state': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '1'}),
47 'tx': ('django.db.models.fields.TextField', [], {'null': 'True'}),
48 'ues': ('django.db.models.fields.CharField', [], {'max_length': '120', 'null': 'True'}),
49 'value': ('django.db.models.fields.TextField', [], {})
50 },
51 'abscontrol.pattern': {
52 'Meta': {'object_name': 'Pattern', 'db_table': "'abs_pattern_antenna'"},
53 'date_create': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
54 'date_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
55 'hits': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
56 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
57 'is_active': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '0'}),
58 'profile': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['abscontrol.Profile']"}),
59 'state': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '1'}),
60 'value': ('django.db.models.fields.PositiveIntegerField', [], {})
61 },
62 'abscontrol.profile': {
63 'Meta': {'object_name': 'Profile', 'db_table': "'abs_profile_antenna'"},
64 'date_create': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
65 'date_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
66 'hits': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
67 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
68 'is_active': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '0'}),
69 'name': ('django.db.models.fields.CharField', [], {'max_length': '250'}),
70 'state': ('django.db.models.fields.PositiveSmallIntegerField', [], {'default': '0'})
71 }
72 }
73
74 complete_apps = ['abscontrol'] No newline at end of file
1 NO CONTENT: new file 10644
1 NO CONTENT: new file 10644
@@ -1,164 +1,165
1 1 # Django settings for abs_webapp_dev project.
2 2
3 3 import os, sys
4 4 PROJECT_DIR = os.path.split(os.path.dirname(__file__))[0]
5 5 API_DIR = "/home/dev/workspace/absclient"
6 6 OVERJRO_DIR = "/home/dev/workspace/weboverjro"
7 7 sys.path.append(API_DIR)
8 8 sys.path.append(OVERJRO_DIR)
9 9
10 10 DEBUG = True
11 11 TEMPLATE_DEBUG = DEBUG
12 12
13 13 ADMINS = (
14 14 # ('Your Name', 'your_email@example.com'),
15 15 )
16 16
17 17 MANAGERS = ADMINS
18 18
19 19 DATABASES = {
20 20 'default': {
21 21 'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
22 22 'NAME': 'db_jrowebapp_dev', # Or path to database file if using sqlite3.
23 23 'USER': 'abscontrol', # Not used with sqlite3.
24 24 'PASSWORD': 'abscontrol', # Not used with sqlite3.
25 25 'HOST': 'localhost', # Set to empty string for localhost. Not used with sqlite3.
26 26 'PORT': '3306', # Set to empty string for default. Not used with sqlite3.
27 27 }
28 28 }
29 29
30 30 # Local time zone for this installation. Choices can be found here:
31 31 # http://en.wikipedia.org/wiki/List_of_tz_zones_by_name
32 32 # although not all choices may be available on all operating systems.
33 33 # In a Windows environment this must be set to your system time zone.
34 34 TIME_ZONE = 'America/Lima'
35 35
36 36 # Language code for this installation. All choices can be found here:
37 37 # http://www.i18nguy.com/unicode/language-identifiers.html
38 38 LANGUAGE_CODE = 'en-us'
39 39
40 40 SITE_ID = 1
41 41
42 42 # If you set this to False, Django will make some optimizations so as not
43 43 # to load the internationalization machinery.
44 44 USE_I18N = True
45 45
46 46 # If you set this to False, Django will not format dates, numbers and
47 47 # calendars according to the current locale.
48 48 USE_L10N = True
49 49
50 50 # If you set this to False, Django will not use timezone-aware datetimes.
51 51 USE_TZ = True
52 52
53 53 # Absolute filesystem path to the directory that will hold user-uploaded files.
54 54 # Example: "/home/media/media.lawrence.com/media/"
55 55 MEDIA_ROOT = os.path.join(PROJECT_DIR, 'media').replace('\\', '/')
56 56
57 57 # URL that handles the media served from MEDIA_ROOT. Make sure to use a
58 58 # trailing slash.
59 59 # Examples: "http://media.lawrence.com/media/", "http://example.com/media/"
60 60 MEDIA_URL = '/media/'
61 61
62 62 # Absolute path to the directory static files should be collected to.
63 63 # Don't put anything in this directory yourself; store your static files
64 64 # in apps' "static/" subdirectories and in STATICFILES_DIRS.
65 65 # Example: "/home/media/media.lawrence.com/static/"
66 66 #STATIC_ROOT = os.path.join(PROJECT_DIR, 'static-serve').replace('\\', '/'),
67 67 STATIC_ROOT = ''
68 68
69 69 # URL prefix for static files.
70 70 # Example: "http://media.lawrence.com/static/"
71 71 STATIC_URL = '/static/'
72 72
73 73 # Additional locations of static files
74 74 STATICFILES_DIRS = (
75 75 # Put strings here, like "/home/html/static" or "C:/www/django/static".
76 76 # Always use forward slashes, even on Windows.
77 77 # Don't forget to use absolute paths, not relative paths.
78 78 #os.path.join(PROJECT_DIR, "static").replace('\\', '/'),
79 79 ("static", os.path.join(PROJECT_DIR, "static").replace('\\', '/')),
80 80 )
81 81
82 82 # List of finder classes that know how to find static files in
83 83 # various locations.
84 84 STATICFILES_FINDERS = (
85 85 'django.contrib.staticfiles.finders.FileSystemFinder',
86 86 'django.contrib.staticfiles.finders.AppDirectoriesFinder',
87 87 # 'django.contrib.staticfiles.finders.DefaultStorageFinder',
88 88 )
89 89
90 90 # Make this unique, and don't share it with anybody.
91 91 SECRET_KEY = '=^abu)gd=)7hf#rme_vw=tv!bdh7+tts*^&)h(n=7@7(9#__@e'
92 92
93 93 # List of callables that know how to import templates from various sources.
94 94 TEMPLATE_LOADERS = (
95 95 'django.template.loaders.filesystem.Loader',
96 96 'django.template.loaders.app_directories.Loader',
97 97 # 'django.template.loaders.eggs.Loader',
98 98 )
99 99
100 100 MIDDLEWARE_CLASSES = (
101 101 'django.middleware.common.CommonMiddleware',
102 102 'django.contrib.sessions.middleware.SessionMiddleware',
103 103 'django.middleware.csrf.CsrfViewMiddleware',
104 104 'django.contrib.auth.middleware.AuthenticationMiddleware',
105 105 'django.contrib.messages.middleware.MessageMiddleware',
106 106 # Uncomment the next line for simple clickjacking protection:
107 107 # 'django.middleware.clickjacking.XFrameOptionsMiddleware',
108 108 )
109 109
110 110 ROOT_URLCONF = 'abs_webapp_dev.urls'
111 111
112 112 # Python dotted path to the WSGI application used by Django's runserver.
113 113 WSGI_APPLICATION = 'abs_webapp_dev.wsgi.application'
114 114
115 115 TEMPLATE_DIRS = (
116 116 # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
117 117 # Always use forward slashes, even on Windows.
118 118 # Don't forget to use absolute paths, not relative paths.
119 119 os.path.join(PROJECT_DIR, "templates").replace('\\', '/'),
120 120 )
121 121
122 122 INSTALLED_APPS = (
123 123 'django.contrib.auth',
124 124 'django.contrib.contenttypes',
125 125 'django.contrib.sessions',
126 126 'django.contrib.sites',
127 127 'django.contrib.messages',
128 128 'django.contrib.staticfiles',
129 129 # Uncomment the next line to enable the admin:
130 130 'django.contrib.admin',
131 131 # Uncomment the next line to enable admin documentation:
132 132 # 'django.contrib.admindocs',
133 133 'abscontrol',
134 134 'audit',
135 'south',
135 136 )
136 137
137 138 # A sample logging configuration. The only tangible logging
138 139 # performed by this configuration is to send an email to
139 140 # the site admins on every HTTP 500 error when DEBUG=False.
140 141 # See http://docs.djangoproject.com/en/dev/topics/logging for
141 142 # more details on how to customize your logging configuration.
142 143 LOGGING = {
143 144 'version': 1,
144 145 'disable_existing_loggers': False,
145 146 'filters': {
146 147 'require_debug_false': {
147 148 '()': 'django.utils.log.RequireDebugFalse'
148 149 }
149 150 },
150 151 'handlers': {
151 152 'mail_admins': {
152 153 'level': 'ERROR',
153 154 'filters': ['require_debug_false'],
154 155 'class': 'django.utils.log.AdminEmailHandler'
155 156 }
156 157 },
157 158 'loggers': {
158 159 'django.request': {
159 160 'handlers': ['mail_admins'],
160 161 'level': 'ERROR',
161 162 'propagate': True,
162 163 },
163 164 }
164 165 }
@@ -1,79 +1,81
1 1 from django.db import models
2 2
3 3 class Profile(models.Model):
4 4
5 5 name = models.CharField(max_length=250)
6 6 date_create = models.DateTimeField(auto_now_add=True)
7 7 date_modified = models.DateTimeField(auto_now=True)
8 8 hits = models.PositiveIntegerField(default=0)
9 9 state = models.PositiveSmallIntegerField(default=0)
10 is_active = models.PositiveSmallIntegerField(default=0)
10 11
11 12 class Meta:
12 13 db_table = "abs_profile_antenna"
13 14
14 15 def __unicode__(self):
15 16 return u'%s' % self.name
16 17
17 18 class Pattern(models.Model):
18 19
19 20 profile = models.ForeignKey(Profile)
20 21 value = models.PositiveIntegerField()
21 22 date_create = models.DateTimeField(auto_now_add=True)
22 23 date_modified = models.DateTimeField(auto_now=True)
23 24 hits = models.PositiveIntegerField(default=0)
24 25 state = models.PositiveSmallIntegerField(default=1)
26 is_active = models.PositiveSmallIntegerField(default=0)
25 27
26 28 class Meta:
27 29 db_table = "abs_pattern_antenna"
28 30
29 31 def __unicode__(self):
30 32 return u'%s' % self.value
31 33
32 34
33 35 class AntennaUp(models.Model):
34 36
35 37 pattern = models.ForeignKey(Pattern)
36 38 value = models.TextField()
37 39 tx = models.TextField(null=True)
38 40 rx = models.TextField(null=True)
39 41 ues = models.CharField(max_length=120, null=True)
40 42 only_rx = models.PositiveSmallIntegerField(default=0)
41 43 date_create = models.DateTimeField(auto_now_add=True)
42 44 date_modified = models.DateTimeField(auto_now=True)
43 45 hits = models.PositiveIntegerField(default=0)
44 46 state = models.PositiveSmallIntegerField(default=1)
45 47
46 48 class Meta:
47 49 db_table = "abs_antenna_up"
48 50
49 51 def __unicode__(self):
50 52 return u'%s' % self.value
51 53
52 54
53 55 class AntennaDown(models.Model):
54 56
55 57 pattern = models.ForeignKey(Pattern)
56 58 value = models.TextField()
57 59 tx = models.TextField(null=True)
58 60 rx = models.TextField(null=True)
59 61 ues = models.CharField(max_length=120, null=True)
60 62 only_rx = models.PositiveSmallIntegerField(default=0)
61 63 date_create = models.DateTimeField(auto_now_add=True)
62 64 date_modified = models.DateTimeField(auto_now=True)
63 65 hits = models.PositiveIntegerField(default=0)
64 66 state = models.PositiveSmallIntegerField(default=1)
65 67
66 68 class Meta:
67 69 db_table = "abs_antenna_down"
68 70
69 71 def save(self, *args, **kwargs):
70 72 '''
71 73 if self.pk is None:
72 74 pass
73 75 else:
74 76 pass
75 77 '''
76 78 super(AntennaDown, self).save(*args, **kwargs)
77 79
78 80 def __unicode__(self):
79 81 return u'%s' % self.value
@@ -1,27 +1,28
1 1 from django.conf.urls import patterns, url
2 2
3 3 urlpatterns = patterns('abscontrol.views',
4 4 url(r'^$', 'index'),
5 5 url(r'^new/$', 'new'),
6 6 url(r'^save/$', 'save'),
7 7 url(r'^view/(?P<profile_id>\d+)/$', 'view'),
8 8 url(r'^edit/(?P<profile_id>\d+)/$', 'edit'),
9 9 url(r'^update/(?P<profile_id>\d+)/$', 'update'),
10 10 url(r'^upgrade/(?P<profile_id>\d+)/$', 'upgrade'),
11 11 url(r'^changeName/(?P<profile_id>\d+)/$', 'changeName'),
12 12 #url(r'^(?P<profile_id>\d+)/$', 'detail'),
13 13 url(r'^(?P<profile_id>\d+)/add/$', 'addPattern'),
14 14 url(r'^(?P<profile_id>\d+)/save/$', 'savePattern'),
15 15 url(r'^(?P<profile_id>\d+)/edit/(?P<pattern_id>\d+)/$', 'editPattern'),
16 16 url(r'^(?P<profile_id>\d+)/view/(?P<pattern_id>\d+)/$', 'viewPattern'),
17 17 url(r'^(?P<profile_id>\d+)/delete/(?P<pattern_id>\d+)/$', 'deletePattern'),
18 18 #url(r'^(?P<poll_id>\d+)/results/$', 'results'),
19 19 #url(r'^(?P<poll_id>\d+)/vote/$', 'vote'),
20 20 url(r'^import/$', 'importProfile'),
21 21 url(r'^upload/$', 'upload'),
22 22 #url(r'^saveImport/$', 'saveImport'),
23 23 url(r'^(?P<profile_id>\d+)/(?P<pattern_id>\d+)/overjroUp/(?P<antenna_id>\d+)/$', 'overJROUp'),
24 24 url(r'^(?P<profile_id>\d+)/(?P<pattern_id>\d+)/overjroDown/(?P<antenna_id>\d+)/$', 'overJRODown'),
25 25 url(r'^export/(?P<profile_id>\d+)/$', 'export'),
26 26 url(r'^send/(?P<profile_id>\d+)/$', 'send'),
27 url(r'^change/(?P<profile_id>\d+)/(?P<pattern_id>\d+)/$', 'changePattern'),
27 28 ) No newline at end of file
@@ -1,475 +1,519
1 1 from django.shortcuts import render_to_response, redirect
2 2 from django.http import HttpResponse
3 3 from django.conf import settings
4 4 from django.utils.encoding import smart_str
5 5 from django.core.servers.basehttp import FileWrapper
6 6 import mimetypes
7 7 from django.contrib.auth.decorators import login_required
8 8 from django.template import RequestContext
9 9
10 10 from datetime import datetime
11 11 import os
12 12 from abscontrol.models import Profile, Pattern, AntennaDown, AntennaUp
13 13
14 14 from util.readABSFile import readABSFile
15 15 from util.saveABSFile import saveABSFile
16 16 from util.ABSData import ABSData
17 17 from util.OverJRO import OverJRO
18 18 from scripts.sendFile import sendFile
19 from scripts.changeBeam import changeBeam
19 20 from overJroShow import overJroShow
20 21
21 22 arrayTx = [["0","0","0","0","0","0","0","0"],\
22 23 ["0","0","0","0","0","0","0","0"],\
23 24 ["0","0","0","0","0","0","0","0"],\
24 25 ["0","0","0","0","0","0","0","0"],\
25 26 ["0","0","0","0","0","0","0","0"],\
26 27 ["0","0","0","0","0","0","0","0"],\
27 28 ["0","0","0","0","0","0","0","0"],\
28 29 ["0","0","0","0","0","0","0","0"]]
29 30
30 31 arrayUes = ["0.533333","0.00000","1.06667","0.00000"]
31 32
32 33 @login_required(login_url='/accounts/login/')
33 34 def index(request):
34 35 #latest_poll_list = profileAntenna.objects.all().order_by('-pub_date')[:5]
35 36 profile_list = Profile.objects.filter(state=1)
36 37 return render_to_response('abscontrol/index.html', {'profile_list': profile_list}, context_instance=RequestContext(request))
37 38
38 39 def new(request):
39 40 profile_list = Profile.objects.filter(state=1)
40 41 txtProfile = datetime.now().strftime("%Y%m%d%H%M%S%f")
41 42 newprofile = Profile(name=txtProfile)
42 43 newprofile.save()
43 44
44 45 lsPatterns = None
45 46
46 47 return render_to_response('abscontrol/new.html', {'profile_list': profile_list,
47 48 'profile_name' : newprofile.name,
48 49 'profile_id' : newprofile.id,
49 50 'lsPatterns' : lsPatterns,
50 51 'range' : range(8), 'arrayUes' : arrayUes,
51 52 }, context_instance=RequestContext(request))
52 53
53 54 def save(request):
54 55
55 56 txtProfile = request.POST["txtProfile"]
56 57
57 58 txtAntennaUp = request.POST["txtAntennaUp"]
58 59 txtTxUp = request.POST["txtTxUp"]
59 60 txtRxUp = request.POST["txtRxUp"]
60 61 txtUesUp = request.POST["txtUesUp"]
61 62
62 63 txtAntennaDown = request.POST["txtAntennaDown"]
63 64 txtTxDown = request.POST["txtTxDown"]
64 65 txtRxDown = request.POST["txtRxDown"]
65 66 txtUesDown = request.POST["txtUesDown"]
66 67
67 68 newprofile = Profile(name=txtProfile)
68 69 newprofile.save()
69 70
70 71 newpattern = newprofile.pattern_set.create(value=1)
71 72 newpattern.antennaup_set.create(value=txtAntennaUp,tx=txtTxUp,rx=txtRxUp,ues=txtUesUp)
72 73 newpattern.antennadown_set.create(value=txtAntennaDown,tx=txtTxDown,rx=txtRxDown,ues=txtUesDown)
73 74
74 75 newurl = '/abscontrol/view/%d' % newprofile.id
75 76
76 77 return redirect(newurl)
77 78
78 79 # Update temporal experiment
79 80 def upgrade(request, profile_id):
80 81 txtAntennaUp = request.POST["txtAntennaUp"]
81 82 txtTxUp = request.POST["txtTxUp"]
82 83 txtRxUp = request.POST["txtRxUp"]
83 84 txtUesUp = request.POST["txtUesUp"]
84 85
85 86 txtAntennaDown = request.POST["txtAntennaDown"]
86 87 txtTxDown = request.POST["txtTxDown"]
87 88 txtRxDown = request.POST["txtRxDown"]
88 89 txtUesDown = request.POST["txtUesDown"]
89 90
90 91 objProfile = Profile.objects.get(pk=profile_id)
91 92 newpattern = objProfile.pattern_set.create(value=1)
92 93 newpattern.antennaup_set.create(value=txtAntennaUp,tx=txtTxUp,rx=txtRxUp,ues=txtUesUp)
93 94 newpattern.antennadown_set.create(value=txtAntennaDown,tx=txtTxDown,rx=txtRxDown,ues=txtUesDown)
94 95
95 96 newurl = '/abscontrol/%d/edit/%d' % (int(profile_id), newpattern.id)
96 97 return redirect(newurl)
97 98
98 99 def update(request, profile_id):
99 100 txtProfile = request.POST["txtProfile"]
100 101
101 102 objProfile = Profile.objects.get(pk=profile_id)
102 103 objProfile.name = txtProfile
103 104 objProfile.state = 1
104 105 objProfile.save()
105 106
106 107 newurl = '/abscontrol/view/%d' % objProfile.id
107 108 return redirect(newurl)
108 109
109 110 def changeName(request, profile_id):
110 111 profile_list = Profile.objects.filter(state=1)
111 112 objProfile = Profile.objects.get(pk=profile_id)
112 113 lsPatterns = objProfile.pattern_set.all()
113 114
114 115 return render_to_response('abscontrol/changeName.html', {'profile_list': profile_list,
115 116 'objProfile': objProfile,
116 117 'lsPatterns' : lsPatterns,
117 118 }, context_instance=RequestContext(request))
118 119
119 120 def view(request, profile_id):
120 121 if request.method == 'GET' and 'pattern' in request.GET:
121 122 pattern_value = request.GET["pattern"]
122 123 else:
123 124 pattern_value = 1
124 125
125 126 profile_list = Profile.objects.filter(state=1)
126 127 objProfile = Profile.objects.get(pk=profile_id)
127 128
128 129 lsPatterns = objProfile.pattern_set.all()
129 130 patternChoosen = objProfile.pattern_set.get(value=pattern_value)
130 131 objAntennaUp = patternChoosen.antennaup_set.get()
131 132 objAntennaDown = patternChoosen.antennadown_set.get()
132 133
133 134 return render_to_response('abscontrol/view.html', {'objProfile': objProfile, 'profile_list': profile_list,
134 135 'patternChoosen' : patternChoosen, 'lsPatterns' : lsPatterns,
135 136 'antennaUp' : objAntennaUp, 'antennaDown' : objAntennaDown,
136 137 }, context_instance=RequestContext(request))
137 138
138 139 def edit(request, profile_id):
139 140 if request.method == 'GET' and 'pattern' in request.GET:
140 141 pattern_value = request.GET["pattern"]
141 142 else:
142 143 pattern_value = 1
143 144
144 145 absData = ABSData()
145 146 profile_list = Profile.objects.filter(state=1)
146 147 objProfile = Profile.objects.get(pk=profile_id)
147 148
148 149 lsPatterns = objProfile.pattern_set.all()
149 150 patternChoosen = objProfile.pattern_set.get(value=pattern_value)
150 151 objAntennaUp = patternChoosen.antennaup_set.get()
151 152 objAntennaDown = patternChoosen.antennadown_set.get()
152 153
153 154 arrayAntennaUp = absData.convertStringtoList2(objAntennaUp.value)
154 155 if objAntennaUp.tx != None:
155 156 arrayTxUp = absData.convertStringtoList2(objAntennaUp.tx)
156 157 else:
157 158 arrayTxUp = arrayTx
158 159 if objAntennaUp.rx != None:
159 160 arrayRxUp = absData.convertStringtoList2(objAntennaUp.rx)
160 161 else:
161 162 arrayRxUp = arrayTx
162 163 if objAntennaUp.ues != None:
163 164 arrayUesUp = absData.convertStringtoList1(objAntennaUp.ues)
164 165 else:
165 166 arrayUesUp = arrayUes
166 167
167 168 arrayAntennaDown = absData.convertStringtoList2(objAntennaDown.value)
168 169 if objAntennaDown.tx != None:
169 170 arrayTxDown = absData.convertStringtoList2(objAntennaDown.tx)
170 171 else:
171 172 arrayTxDown = arrayTx
172 173 if objAntennaDown.rx != None:
173 174 arrayRxDown = absData.convertStringtoList2(objAntennaDown.rx)
174 175 else:
175 176 arrayRxDown = arrayTx
176 177 if objAntennaDown.ues != None:
177 178 arrayUesDown = absData.convertStringtoList1(objAntennaDown.ues)
178 179 else:
179 180 arrayUesDown = arrayUes
180 181
181 182 return render_to_response('abscontrol/edit.html', {'objProfile': objProfile, 'profile_list': profile_list,
182 183 'patternChoosen' : patternChoosen, 'lsPatterns' : lsPatterns,
183 184 'antennaUp' : objAntennaUp, 'antennaDown' : objAntennaDown,
184 185 'arrayAntennaUp' : arrayAntennaUp, 'arrayTxUp' : arrayTxUp,
185 186 'arrayRxUp' : arrayRxUp, 'arrayRxDown' : arrayRxDown,
186 187 'arrayAntennaDown' : arrayAntennaDown, 'arrayTxDown' : arrayTxDown,
187 188 'arrayUesUp' : arrayUesUp, 'arrayUesDown' : arrayUesDown,
188 189 }, context_instance=RequestContext(request))
189 190
190 191 def addPattern(request, profile_id):
191 192 profile_list = Profile.objects.filter(state=1)
192 193 objProfile = Profile.objects.get(pk=profile_id)
193 194
194 195 return render_to_response('abscontrol/addPattern.html', {'objProfile': objProfile, 'profile_list': profile_list,
195 196 'range' : range(8), 'arrayUes' : arrayUes,
196 197 }, context_instance=RequestContext(request))
197 198
198 199 def editPattern(request, profile_id, pattern_id):
199 200 absData = ABSData()
200 201 profile_list = Profile.objects.filter(state=1)
201 202 objProfile = Profile.objects.get(pk=profile_id)
202 203 lsPatterns = objProfile.pattern_set.all()
203 204 patternChoosen = Pattern.objects.get(pk=pattern_id)
204 205 objAntennaUp = patternChoosen.antennaup_set.get()
205 206 objAntennaDown = patternChoosen.antennadown_set.get()
206 207
207 208 arrayAntennaUp = absData.convertStringtoList2(objAntennaUp.value)
208 209 if objAntennaUp.tx != None:
209 210 arrayTxUp = absData.convertStringtoList2(objAntennaUp.tx)
210 211 else:
211 212 arrayTxUp = arrayTx
212 213 if objAntennaUp.rx != None:
213 214 arrayRxUp = absData.convertStringtoList2(objAntennaUp.rx)
214 215 else:
215 216 arrayRxUp = arrayTx
216 217 if objAntennaUp.ues != None:
217 218 arrayUesUp = absData.convertStringtoList1(objAntennaUp.ues)
218 219 else:
219 220 arrayUesUp = arrayUes
220 221
221 222 arrayAntennaDown = absData.convertStringtoList2(objAntennaDown.value)
222 223 if objAntennaDown.tx != None:
223 224 arrayTxDown = absData.convertStringtoList2(objAntennaDown.tx)
224 225 else:
225 226 arrayTxDown = arrayTx
226 227 if objAntennaDown.rx != None:
227 228 arrayRxDown = absData.convertStringtoList2(objAntennaDown.rx)
228 229 else:
229 230 arrayRxDown = arrayTx
230 231 if objAntennaDown.ues != None:
231 232 arrayUesDown = absData.convertStringtoList1(objAntennaDown.ues)
232 233 else:
233 234 arrayUesDown = arrayUes
234 235
235 236 return render_to_response('abscontrol/editPattern.html', {'objProfile': objProfile, 'profile_list': profile_list,
236 237 'patternChoosen' : patternChoosen, 'lsPatterns' : lsPatterns,
237 238 'antennaUp' : objAntennaUp, 'antennaDown' : objAntennaDown,
238 239 'arrayAntennaUp' : arrayAntennaUp, 'arrayTxUp' : arrayTxUp,
239 240 'arrayRxUp' : arrayRxUp, 'arrayRxDown' : arrayRxDown,
240 241 'arrayAntennaDown' : arrayAntennaDown, 'arrayTxDown' : arrayTxDown,
241 242 'arrayUesUp' : arrayUesUp, 'arrayUesDown' : arrayUesDown,
242 243 }, context_instance=RequestContext(request))
243 244
244 245 def savePattern(request, profile_id):
245 246 pattern_id = 0
246 247 method = "save"
247 248
248 249 if 'pattern_id' in request.POST:
249 250 pattern_id = request.POST["pattern_id"]
250 251 method = "update"
251 252
252 253 maxValuePattern = 0
253 254 txtAntennaUp = request.POST["txtAntennaUp"]
254 255 txtTxUp = request.POST["txtTxUp"]
255 256 txtRxUp = request.POST["txtRxUp"]
256 257 txtUesUp = request.POST["txtUesUp"]
257 258
258 259 txtAntennaDown = request.POST["txtAntennaDown"]
259 260 txtTxDown = request.POST["txtTxDown"]
260 261 txtRxDown = request.POST["txtRxDown"]
261 262 txtUesDown = request.POST["txtUesDown"]
262 263
263 264 mode = request.POST["mode"]
264 265
265 266 if method == "save":
266 267 objProfile = Profile.objects.get(pk=profile_id)
267 268 lsPatterns = objProfile.pattern_set.all()
268 269 if len(lsPatterns) > 0:
269 270 for element in lsPatterns:
270 271 if element.value > maxValuePattern:
271 272 maxPattern = element.value
272 273 else:
273 274 maxPattern = 0
274 275
275 276 if maxPattern < 10 :
276 277 newValuePattern = maxPattern + 1
277 278 newpattern = objProfile.pattern_set.create(value=newValuePattern)
278 279 newpattern.antennaup_set.create(value=txtAntennaUp,tx=txtTxUp,rx=txtRxUp,ues=txtUesUp)
279 280 newpattern.antennadown_set.create(value=txtAntennaDown,tx=txtTxDown,rx=txtRxDown,ues=txtUesDown)
280 281 error = 0
281 282 else:
282 283 error = 1 # Can not add more patterns
283 284
284 285 if mode == "e":
285 286 newurl = '/abscontrol/%d/edit/%d' % (int(profile_id), newpattern.id)
286 287 else:
287 288 newurl = '/abscontrol/%d/view/%d' % (int(profile_id), newpattern.id)
288 289 else:
289 290 txtAntennaUpId = request.POST["txtAntennaUpId"]
290 291 objAntennaUp = AntennaUp.objects.get(pk=txtAntennaUpId)
291 292 objAntennaUp.value = txtAntennaUp
292 293 objAntennaUp.tx = txtTxUp
293 294 objAntennaUp.rx = txtRxUp
294 295 objAntennaUp.ues = txtUesUp
295 296 objAntennaUp.save()
296 297
297 298 txtAntennaDownId = request.POST["txtAntennaDownId"]
298 299 objAntennaDown = AntennaDown.objects.get(pk=txtAntennaDownId)
299 300 objAntennaDown.value = txtAntennaDown
300 301 objAntennaDown.tx = txtTxDown
301 302 objAntennaDown.rx = txtRxDown
302 303 objAntennaDown.ues = txtUesDown
303 304 objAntennaDown.save()
304 305
305 306 if mode == "e":
306 307 newurl = '/abscontrol/%d/edit/%d' % (int(profile_id), int(pattern_id))
307 308 else:
308 309 newurl = '/abscontrol/%d/view/%d' % (int(profile_id), int(pattern_id))
309 310
310 311 return redirect(newurl)
311 312
312 313 def viewPattern(request, profile_id, pattern_id):
313 314
314 315 profile_list = Profile.objects.filter(state=1)
315 316 objProfile = Profile.objects.get(pk=profile_id)
316 317
317 318 patternChoosen = Pattern.objects.get(pk=pattern_id)
318 319
319 320 objAntennaUp = patternChoosen.antennaup_set.get()
320 321 objAntennaDown = patternChoosen.antennadown_set.get()
321 322
322 323 lsPatterns = objProfile.pattern_set.all()
323 324
324 325 return render_to_response('abscontrol/viewPattern.html', {'objProfile': objProfile, 'profile_list': profile_list,
325 326 'patternChoosen' : patternChoosen, 'lsPatterns' : lsPatterns,
326 327 'antennaUp' : objAntennaUp, 'antennaDown' : objAntennaDown,
327 328 }, context_instance=RequestContext(request))
328 329
329 330 def deletePattern(request, profile_id, pattern_id):
330 331 newurl = '/abscontrol/edit/%d' % int(profile_id)
331 332
332 333 return redirect(newurl)
333 334
334 335 def importProfile(request):
335 336 profile_list = Profile.objects.filter(state=1)
336 337 return render_to_response('abscontrol/import.html', {'profile_list': profile_list,}, context_instance=RequestContext(request))
337 338
338 339 def upload(request):
339 340 profile_list = Profile.objects.filter(state=1)
340 341 if request.method == 'POST':
341 342 txtFilename = request.FILES['txtFile']
342 343 if txtFilename:
343 344 destination = open('/tmp/'+txtFilename.name, 'wb+')
344 345 for chunk in txtFilename.chunks():
345 346 destination.write(chunk)
346 347 destination.close()
347 348 filename = '/tmp/'+txtFilename.name
348 349 readFile = readABSFile(filename)
349 350 expName, num_patterns, patterns = readFile.getMetadata()
350 351
351 352 if expName != "" and num_patterns > 0:
352 353 newprofile = Profile(name=expName)
353 354 newprofile.save()
354 355 newprofile.state = 1
355 356
356 357 for element in patterns:
357 358 newpattern = newprofile.pattern_set.create(value=element["number"])
358 359 newpattern.antennaup_set.create(value=element["up"])
359 360 newpattern.antennadown_set.create(value=element["down"])
360 361
361 362 newprofile.save()
362 363
363 364 newurl = '/abscontrol/edit/%d' % int(newprofile.id)
364 365 return redirect(newurl)
365 366 else:
366 367 txtError = "Experiment's name not found or the number of patterns is 0."
367 368 return render_to_response('abscontrol/error.html', {'profile_list': profile_list,
368 369 'txtError' : txtError, },
369 370 context_instance=RequestContext(request))
370 371 else:
371 372 txtError = "No file."
372 373
373 374 return render_to_response('abscontrol/error.html', {'profile_list': profile_list, 'txtError' : txtError, },
374 375 context_instance=RequestContext(request))
375 376
376 377 def getImgfromOverJRO(profile_id, objAntenna):
377 378 objProfile = Profile.objects.get(pk=profile_id)
378 379 exp_name = objProfile.name
379 380 phase_tx = objAntenna.value
380 381 gain_tx = objAntenna.tx
381 382 gain_rx = objAntenna.rx
382 383 ues_tx = objAntenna.ues
383 384 just_rx = objAntenna.only_rx
384 385
385 386 overjro = OverJRO()
386 387 overjro.setParameters(settings.MEDIA_ROOT, exp_name, phase_tx, gain_tx, gain_rx, ues_tx, just_rx)
387 388 contentFile = overjro.setTextContent()
388 389 finalpath = overjro.saveFile(contentFile)
389 390
390 391 currentdate = datetime.today()
391 392 newOverJro = overJroShow()
392 393 newOverJro.setInputParameters(settings.MEDIA_ROOT, currentdate, finalpath)
393 394 newOverJro.setupParameters()
394 395 newOverJro.execute()
395 396 path = newOverJro.getPlot()
396 397
397 398 return path
398 399
399 400 def overJROUp(request, profile_id, pattern_id, antenna_id):
400 401 objAntenna = AntennaUp.objects.get(pk=antenna_id)
401 402 img_path = getImgfromOverJRO(profile_id, objAntenna)
402 403 filename = os.path.split(img_path)[1]
403 404 return render_to_response('abscontrol/overjro_up.html', {'img_up': filename,'antennaUp': objAntenna,},
404 405 context_instance=RequestContext(request))
405 406
406
407 407 def overJRODown(request, profile_id, pattern_id, antenna_id):
408 408 objAntenna = AntennaDown.objects.get(pk=antenna_id)
409 409 img_path = getImgfromOverJRO(profile_id, objAntenna)
410 410 filename = os.path.split(img_path)[1]
411 411 return render_to_response('abscontrol/overjro_down.html', {'img_down': filename, 'antennaDown': objAntenna,},
412 412 context_instance=RequestContext(request))
413 413
414 414 def export(request, profile_id):
415 415 listPatterns = []
416 416 objProfile = Profile.objects.get(pk=profile_id)
417 417 exp_name = objProfile.name
418 418 lsPatterns = objProfile.pattern_set.all()
419 419 for element in lsPatterns:
420 420 objAntennaUp = element.antennaup_set.get()
421 421 objAntennaDown = element.antennadown_set.get()
422 422 dicPatterns = {"number" : element.value, "up" : objAntennaUp.value, "down" : objAntennaDown.value}
423 423 listPatterns.append(dicPatterns)
424 424
425 425 absFile = saveABSFile()
426 426 absFile.setParameters(settings.MEDIA_ROOT, exp_name, listPatterns)
427 427 filename, filesize = absFile.save()
428 428
429 429 wrapper = FileWrapper( open( filename, "r" ) )
430 430 content_type = mimetypes.guess_type( filename )[0]
431 431
432 432 response = HttpResponse(wrapper, content_type = content_type)
433 433 response['Content-Description'] = 'File Transfer'
434 434 response['Content-Disposition'] = 'attachment; filename=%s' % smart_str(filename)
435 435 response['Content-Transfer-Encoding'] = 'binary'
436 436 response['Expires'] = '0'
437 437 response['Cache-Control'] = 'must-revalidate'
438 438 response['Pragma'] = 'public'
439 439 response['Content-Length'] = '%s' % str(filesize)
440 440 response['X-Sendfile'] = '%s' % smart_str(filename)
441 441
442 442 return response
443 443
444 444 def send(request, profile_id):
445 445 listPatterns = []
446 446 objProfile = Profile.objects.get(pk=profile_id)
447 447 exp_name = objProfile.name
448 448
449 449 lsPatterns = objProfile.pattern_set.all()
450 450 for element in lsPatterns:
451 451 objAntennaUp = element.antennaup_set.get()
452 452 objAntennaDown = element.antennadown_set.get()
453 453 dicPatterns = {"number" : element.value, "up" : objAntennaUp.value, "down" : objAntennaDown.value}
454 454 listPatterns.append(dicPatterns)
455 455
456 456 absFile = saveABSFile()
457 457 absFile.setParameters(settings.MEDIA_ROOT, exp_name, listPatterns)
458 458 filename, filesize = absFile.save()
459 459
460 460 apiclient = sendFile()
461 461 apiclient.execute(filename)
462 462 output = apiclient.getOutput()
463 463
464 464 if output == "OK":
465 465 message = "File sent successfully."
466 lsProfilesActive = Profile.objects.filter(is_active=1)
467 if len(lsProfilesActive) > 0:
468 objProfileActive = Profile.objects.get(is_active=1)
469 objProfileActive.is_active = 0
470 objProfileActive.save()
471
466 472 objProfile.hits += 1
473 objProfile.is_active = 1
467 474 objProfile.save()
475
476 pattern_value = 1
477 patternChoosen = objProfile.pattern_set.get(value=pattern_value)
478 patternChoosen.is_active = 1
479 patternChoosen.save()
480
481 newurl = '/abscontrol/view/%d' % int(profile_id)
482
483 return redirect(newurl)
468 484 else:
469 485 message = "Error sending file."
470 486
471 profile_list = Profile.objects.all()
472
473 return render_to_response('abscontrol/sendFile.html', {'message': message, "profile_list" : profile_list,
474 'objProfile': objProfile,
475 }, context_instance=RequestContext(request))
487 profile_list = Profile.objects.all()
488
489 return render_to_response('abscontrol/sendFile.html', {'message': message, "profile_list" : profile_list,
490 'objProfile': objProfile,
491 }, context_instance=RequestContext(request))
492
493 def changePattern(request, profile_id, pattern_id):
494 patternChoosen = Pattern.objects.get(id=pattern_id)
495 beam = int(patternChoosen.value)-1
496
497 apiclient = changeBeam()
498 apiclient.execute(str(beam))
499 output = apiclient.getOutput()
500
501 if output == "OK":
502 lsPatternsActive = Pattern.objects.filter(is_active=1)
503 if len(lsPatternsActive) > 0:
504 objPatternActive = Pattern.objects.get(is_active=1)
505 objPatternActive.is_active = 0
506 objPatternActive.save()
507
508 patternChoosen.hits += 1
509 patternChoosen.is_active = 1
510 patternChoosen.save()
511
512 newurl = '/abscontrol/%d/view/%d/' % (int(profile_id), int(pattern_id))
513 return redirect(newurl)
514 else:
515 message = "Error sending file."
516 profile_list = Profile.objects.all()
517 return render_to_response('abscontrol/sendFile.html', {'message': message, "profile_list" : profile_list,
518 }, context_instance=RequestContext(request))
519 No newline at end of file
@@ -1,6 +1,9
1 1 Django==1.4.3
2 MySQL-python==1.2.3
2 MySQL-python==1.2.4
3 South==0.8.1
3 4 argparse==1.2.1
5 matplotlib==1.2.1
4 6 numpy==1.7.1
7 scipy==0.12.0
5 8 wsgiref==0.1.2
6 9 yolk==0.4.3
@@ -1,664 +1,668
1 1 /*
2 2 * font-family: 'Droid Sans', sans-serif;
3 3 * font-family: 'Ubuntu', sans-serif;
4 4 * font-family: 'Open Sans', sans-serif;
5 5 * font-family: 'Open Sans Condensed', sans-serif;
6 6 * font-family: 'Roboto Condensed', sans-serif;
7 7 */
8 8
9 9 body {
10 10 padding: 0;
11 11 margin: 0;
12 12 font-size: 12px; }
13 13
14 14 header {
15 15 width: 980px;
16 16 height: 50px;
17 17 text-align: center;
18 18 line-height: 50px;
19 19 border: 0px solid #fcc !important; }
20 20
21 21 #schema {
22 22 margin: 0 auto;
23 23 width: 980px;
24 24 padding: 10px 10px;
25 25 border: 0px solid #f00 !important; }
26 26
27 27 #content {
28 28 margin: 5px 0px;
29 29 border: 0px solid #1cc; }
30 30
31 31 #topcolumn {
32 32 float: left;
33 33 width: 980px;
34 34 height: 40px;
35 35 line-height: 35px;
36 36 margin: 2px 0px;
37 37 border: 1px solid #ddd !important;
38 38 box-shadow: 2px 2px 5px #888; }
39 39
40 40 #maincolumn {
41 41 float: left;
42 42 width: 980px;
43 43 margin: 2px 0px;
44 44 padding: 0px 0px;
45 45 border: 1px solid #ddd !important;
46 46 box-shadow: 2px 2px 5px #666; }
47 47
48 48 footer {
49 49 height: 30px;
50 50 line-height: 30px;
51 51 text-align: center;
52 52 margin: 0px 0px;
53 53 border: 0px solid #200 !important;
54 54 box-shadow: 2px 2px 5px #888; }
55 55
56 56 .cleardivs {
57 57 clear: both;
58 58 border: 0px solid #400;
59 59 height: 0px; }
60 60
61 61 textarea {
62 62 resize: none;
63 63 overflow: hidden; }
64 64
65 65 /****************************************************************************************/
66 66 /****** ESTILOS GENERALES *****************/
67 67 /****************************************************************************************/
68 68 a {
69 69 font-family: 'Droid Sans', sans-serif;
70 70 text-decoration: none;
71 71 color: #1494F6; }
72 72
73 73 .mnu {
74 74 height: 22px;
75 75 border: 0px solid #c55 !important; }
76 76
77 77 .mnu li {
78 78 display:inline; }
79 79
80 80 .MnuVertical, .MnuHorizontal {
81 81 font-family: 'Droid Sans', sans-serif;
82 82 font-size: inherit;
83 83 font-style: normal;
84 84 text-shadow: 2px 2px #eee; }
85 85
86 86 .MnuHorizontal ul {
87 87 list-style: none;
88 88 list-style-type: none;
89 89 margin: 0; }
90 90
91 91 /*.MnuHorizontal{
92 92 display: -webkit-box;
93 93 -webkit-box-orient:horizontal; }
94 94
95 95 .MnuHorizontal a{
96 96 display:block;
97 97 padding:10px;
98 98 -webkit-box-flex:1;
99 99 text-align:center; }*/
100 100
101 101 .link-disabled {
102 102 color: #666;
103 103 text-decoration: None;
104 104 cursor: default; }
105 105
106 106 /****************************************************************************************/
107 107 /****** MENU DE NAVEGACION DE PERFILES *************/
108 108 /****************************************************************************************/
109 109 #infoProfiles {
110 110 float: left;
111 111 width: 300px;
112 112 margin: 0px;
113 113 padding: 2px 0px;
114 114 border: 0px solid #1cc !important; }
115 115
116 116 #infoProfiles label {
117 117 padding: 10px 10px 10px 12px;
118 118 margin: 10px 0;
119 119 font-family: 'Droid Sans', sans-serif;
120 120 /*font-family: 'Roboto Condensed', sans-serif;*/
121 121 /*letter-spacing: 0.046em;*/ }
122 122
123 123 #infoProfiles select {
124 124 padding: 4px 0px; margin: 0;
125 125 font-family: 'Droid Sans', sans-serif;
126 126 font-size: 12px;
127 127 letter-spacing: 0.006;
128 128 width: 200px; }
129 129
130 130 #mnuProfiles {
131 131 margin: 0;
132 132 float: right;
133 133 padding: 2px 10px;
134 134 border: 0px solid #1494F6 !important; }
135 135
136 136 #mnuProfiles ul {
137 137 list-style: none;
138 138 list-style-type: none;
139 139 margin: 0;
140 140 padding-left: 20px;
141 141 border: 0px solid #f00 !important; }
142 142
143 143 #mnuProfiles li {
144 144 width: 80px;
145 145 float: left;
146 146 padding: 2px;
147 147 border: 0px solid #c55 !important; }
148 148
149 149 #mnuProfiles a {
150 150 font-weight: normal;
151 151 color: #1494F6;
152 152 display: block;
153 153 text-align: center;
154 154 border-bottom: 1px solid #1494F6 !important;
155 155 text-decoration: none;
156 156 padding: 0px 4px;
157 157 line-height: 18px;
158 158 margin: 6px; }
159 159
160 160 /****************************************************************************************/
161 161 /******** FORMULARIO DE PERFILES *************************************/
162 162 /****************************************************************************************/
163 163 #divProfile {
164 164 margin: 10px 0px;
165 165 padding: 10px 10px;
166 166 width: 500px;
167 167 border: 0px solid #dff !important; }
168 168
169 169 #divProfile label,input[type=text],input[type=file] {
170 170 font-family: 'Open Sans', sans-serif;
171 171 /*font-family: 'Roboto Condensed', sans-serif;*/
172 172 font-size: inherit; }
173 173
174 174 #divPattern textarea,input[type=text],label,input[type=file],input[type=button],input[type=submit] {
175 175 font-family: 'Roboto Condensed', sans-serif;
176 176 font-size: inherit; }
177 177
178 178 .antenna, .NewAntenna {
179 179 box-shadow: 1px 1px 2px #666;
180 180 padding: 5px;
181 181 margin: 10px auto;
182 182 display: block;
183 183 border: 0px solid #fee !important; }
184 184
185 185 .antenna {
186 186 width: 520px; }
187 187
188 188 .NewAntenna {
189 189 width: 750px;
190 190 border: 0px solid #f00 !important; }
191 191
192 192 .flsAntenna, .NewFlsAntenna {
193 193 margin: 0;
194 194 padding: 0px;
195 195 border: 1px solid #fee !important; }
196 196
197 197 .flsAntenna {
198 198 width: 510px; }
199 199
200 200 .NewFlsAntenna {
201 201 width: 100%; }
202 202
203 203 .legendAntenna {
204 204 font-family: 'Roboto Condensed', sans-serif;
205 205 font-size: inherit;
206 206 text-align: left;
207 207 margin-left: 10px; }
208 208
209 209 .infoAntenna {
210 210 width: 500px;
211 211 float: left;
212 212 border: 0px solid #f00 !important; }
213 213
214 214 .overJRO {
215 215 width: 250px;
216 216 float: left;
217 217 margin: 0px 5px;
218 218 border: 0px solid #1cc !important; }
219 219
220 220 .divAntenna, .NewDivAntenna, .NewDivTx {
221 221 float: left;
222 222 margin: 10px;
223 223 border: 0px solid #fcc !important; }
224 224
225 225 .divAntenna {
226 226 width: 220px;
227 227 border: 0px solid #fcc !important; }
228 228
229 229 .NewDivAntenna {
230 230 border: 0px solid #fcc !important; }
231 231
232 232 .NewDivTx {
233 233 border: 0px solid #fcc !important; }
234 234
235 235 .titleField {
236 236 display: block;
237 237 text-align: center;
238 238 font-family: 'Roboto Condensed', sans-serif;
239 239 letter-spacing: 0.086em; }
240 240
241 241 .txtAntenna, .view-textAntenna {
242 242 width: 175px;
243 243 max-width: 180px;
244 244 height: 160px;
245 245 max-height: 165px;
246 246 background: #fdfdfb;
247 247 border: 2px solid #eee !important;
248 248 text-align: justify;
249 249 margin: 0 auto;
250 250 line-height: 20px; }
251 251
252 252 .txtAntenna {
253 253 padding: 4px;
254 254 }
255 255
256 256 .view-textAntenna {
257 257 padding: 2px;
258 258 font-family: "Ubuntu";
259 259 font-size: inherit; }
260 260
261 261 .boxAntenna, .boxTR {
262 262 border: 2px solid #eee !important;
263 263 text-align: center;
264 264 display: block;
265 265 float: left;
266 266 margin: 0;
267 267 padding: 0; }
268 268
269 269 .boxAntenna {
270 270 padding: 3px; }
271 271
272 272 .boxTR {
273 273 padding: 3px; }
274 274
275 275 .fullLine{
276 276 font-size: 0.95em; }
277 277
278 278 .lineInputs, .lineInputsTx {
279 279 text-align: left;
280 280 line-height: 1.4em;
281 281 padding: 0;
282 282 margin: 0px;
283 283 display: block;
284 284 float: left;
285 285 border: 0px solid #1cc !important; }
286 286
287 287 .lineInputs {
288 288 /*width: 240px;*/
289 289 border: 0px solid #1cc !important; }
290 290
291 291 .lineInputsTx {
292 292 /*width: 185px;*/
293 293 border: 0px solid #1cc !important; }
294 294
295 295 .divValuesAntenna, .divValuesTx {
296 296 float: left;
297 297 display: block;
298 298 margin: 0 auto;
299 299 border: 0px solid #bbb !important; }
300 300
301 301 .divValuesAntenna {
302 302 /*width: 230px;*/
303 303 border: 0px solid #2eb !important; }
304 304
305 305 .divValuesTx {
306 306 /*width: 175px;*/
307 307 border: 0px solid #bbb !important; }
308 308
309 309 .divValuesAntenna input[type=text], .divValuesTx input[type=text] {
310 310 border: 0px;
311 311 border-bottom: 1px solid #666 !important;
312 312 line-height: 1.1em;
313 313 font-family: 'Roboto Condensed', sans-serif; }
314 314
315 315 .divValuesAntenna input[type=text] {
316 316 width: 18px; }
317 317
318 318 .divValuesTx input[type=text]{
319 319 width: 11px; }
320 320
321 321 .lblSign, .lblSignTx {
322 322 font-family: 'Roboto Condensed', sans-serif;
323 323 color: #666;
324 324 float: left;
325 325 margin: 0px;
326 326 border: 0px solid #bbb !important; }
327 327
328 328 .lblSignLeft {
329 329 font-family: 'Roboto Condensed', sans-serif;
330 330 color: #666;
331 331 float: left;
332 332 margin: 0px 2px 0px 0px;
333 333 padding: 0;
334 334 border: 0px solid #f00 !important; }
335 335
336 336 .lblSignRight {
337 337 font-family: 'Roboto Condensed', sans-serif;
338 338 color: #666;
339 339 float: left;
340 340 margin: 0;
341 341 padding: 0;
342 342 border: 0px solid #f00 !important; }
343 343
344 344 .lblNewSignLeft, .lblNewSignRight {
345 345 font-family: 'Roboto Condensed', sans-serif;
346 346 color: #666;
347 347 float: left;
348 348 padding: 0; }
349 349
350 350 .lblNewSignLeft {
351 351 margin: 0px 2px 0px 0px;
352 352 border: 0px solid #f00 !important; }
353 353
354 354 .lblNewSignRight {
355 355 margin: 0;
356 356 border: 0px solid #f00 !important; }
357 357
358 358 .divTx {
359 359 display: block;
360 360 float: left;
361 361 margin: 10px;
362 362 border: 0px solid #f00 !important; }
363 363
364 364 .divTx label {
365 365 display: block; }
366 366
367 367 .divTx textarea {
368 368 width: 100px;
369 369 max-width: 100px;
370 370 height: 160px;
371 371 max-height: 165px;
372 372 text-align: justify;
373 373 border: 2px solid #eee !important;
374 374 font-family: "Ubuntu";
375 375 font-size: inherit;
376 376 line-height: 20px; }
377 377
378 378 .divTx p {
379 379 width: 100px;
380 380 max-width: 105px;
381 381 height: 160px;
382 382 max-height: 165px;
383 383 background: #fdfdfb;
384 384 padding: 2px;
385 385 border: 1px solid #eee !important;
386 386 font-family: 'Ubuntu', sans-serif;
387 387 font-size: inherit;
388 388 text-align: justify;
389 389 margin: 0 auto;
390 390 line-height: 20px; }
391 391
392 392 .divUes {
393 393 display: block;
394 394 margin: 10px; }
395 395
396 396 .divUes input[type=text] {
397 397 width: 240px;
398 398 max-width: 240px;
399 399 font-family: 'Ubuntu', sans-serif;
400 400 font-size: inherit; }
401 401
402 402 .divNewUes {
403 403 width: 350px;
404 404 display: block;
405 405 margin: 0px 10px;
406 406 padding: 0;
407 407 font-family: 'Roboto Condensed', sans-serif;
408 408 /*overflow: hidden;*/
409 409 border: 0px solid #f00 !important; }
410 410
411 411 .titleUes {
412 412 width: 35px;
413 413 text-align: right;
414 414 padding-right: 5px;
415 415 float: left;
416 416 line-height: 22px;
417 417 font-family: 'Roboto Condensed', sans-serif;
418 418 letter-spacing: 0.086em;
419 419 border: 0px solid #266 !important; }
420 420
421 421 .valueUes {
422 422 width: 300px;
423 423 float: left;
424 424 border: 0px solid #2f4 !important;
425 425 line-height: 22px; }
426 426
427 427 .lblUes {
428 428 font-family: 'Roboto Condensed', sans-serif;
429 429 color: #666;
430 430 font-size: 1.1em; }
431 431
432 432 .txtUnitUes {
433 433 width: 60px;
434 434 border: 0;
435 435 padding: 0px 2px;
436 436 text-align: center;
437 437 font-family: 'Roboto Condensed', sans-serif;
438 438 font-size: 0.95em;
439 439 border-bottom: 1px solid #666 !important; }
440 440 /*
441 441 .divNewUes input[type=text] {
442 442 width: 240px;
443 443 max-width: 240px;
444 444 line-height: 22px; }
445 445 */
446 446 .checkOnly {
447 447 width: 120px;
448 448 float: left;
449 449 display: block;
450 450 line-height: 25px;
451 451 border: 0px solid #1cc !important; }
452 452
453 453 .overJRO img {
454 454 width: 400px;
455 height: 250px;
455 height: 270px;
456 456 text-align: center;
457 457 vertical-align: middle;
458 458 margin: 10px 5px 5px 5px;
459 459 display: block;
460 460 background: #fdfdfb;
461 461 border: 1px solid #eee !important; }
462 462
463 463 .overJRO a {
464 464 text-align: center;
465 465 margin-left: 160px;
466 466 display: block; }
467 467
468 468 .activeOverJRO {
469 469 width: 60px;
470 470 padding: 0px 2px;
471 471 border-bottom: 1px solid #1494F6 !important; }
472 472
473 473 /****************************************************************************************/
474 474 /****** MENU DE NAVEGACION DE PATRONES **********************************/
475 475 /****************************************************************************************/
476 476 #divMnuPattern {
477 477 width: 280px;
478 478 height: 25px;
479 479 display: block;
480 480 float: right;
481 481 margin: 5px 40px 5px 0px;
482 482 border: 0px solid #1cc !important; }
483 483
484 484 #divMnuPattern li {
485 485 float: right;
486 486 display: block;
487 487 width: 60px;
488 488 border: 0px solid #2cc !important; }
489 489
490 490 #divMnuPattern a {
491 491 display: block;
492 492 line-height: 22px;
493 493 text-decoration: none;
494 494 padding: 0px 5px;
495 495 margin: 0px 2px;
496 496 text-align: center;
497 497 color: #1494F6;
498 498 border-bottom: 1px solid #1494F6 !important; }
499 499
500 500 #infoPattern {
501 501 display: block;
502 502 margin: 0px 25px;
503 503 border: 0px solid #1494f6 !important; }
504 504
505 505 #navPatterns {
506 506 margin: 0 auto;
507 507 width: 700px;
508 508 height: 30px;
509 509 border: 0px solid #d00 !important;
510 510 font-family: 'Ubuntu', sans-serif;
511 511 font-size: 14px;
512 512 padding: 5px 0px; }
513 513
514 514 #navPatternList {
515 515 margin: 0 auto;
516 516 border: 0px solid #ecc !important; }
517 517
518 518 #navPatternList ul {
519 519 list-style: none;
520 520 list-style-type: none;
521 521 margin: 0; }
522 522
523 523 #navPatternList ul li {
524 524 float: left;
525 525 width: 50px;
526 526 border: 1px solid #eee !important; }
527 527
528 528 #navPatternList a {
529 529 width: 50px;
530 530 display: block;
531 531 text-align: center;
532 532 line-height: 30px;
533 533 padding: 1px 0px;
534 534 border: 0px solid #1cc !important; }
535 535
536 536 .lnkPattern {
537 537 background-color: #ccc !important;
538 538 color: #eee; }
539 539
540 540 .lnkPatternSelected {
541 541 background-color: #2cc !important;
542 542 color: #fff; }
543 543
544 .lnkPatternActive {
545 color: #f66;
546 }
547
544 548 .divListofPatterns {
545 549 width: 650px;
546 550 display: block;
547 551 border: 1px solid #1cc !important;
548 552 margin: 0 auto; }
549 553
550 554 .divPattern {
551 555 width: 600px;
552 556 display: block;
553 557 border: 1px solid #f00 !important;
554 558 margin: 2px auto; }
555 559
556 560 /****************************************************************************************/
557 561 /****** HEADER *************/
558 562 /****************************************************************************************/
559 563 header nav {
560 564 width: 960px;
561 565 margin: 0 auto;
562 566 height: 100%;
563 567 border: 0px solid #1cc !important; }
564 568
565 569 header nav a {
566 570 font-family: 'Roboto Condensed', sans-serif;
567 571 font-size: 1.98em;
568 572 text-transform: uppercase;
569 573 width: 232px;
570 574 padding: 2px;
571 575 text-align: center;
572 576 border: 1px solid #ddd !important;
573 577 box-shadow: 1px 1px 2px #ddd;
574 578 display: block;
575 579 float: left;
576 580 height: 45px;
577 581 text-decoration: none;
578 582 background: #eee;
579 583 line-height: 45px;
580 584 color: #15425d;
581 585 margin: 0px 1px; }
582 586
583 587 header nav a.selected {
584 588 background: #666;
585 589 color: #fff; }
586 590
587 591 #Main_Head {
588 592 margin: 0 auto;
589 593 height: 100%;
590 594 border: 1px solid #ddd !important;
591 595 box-shadow: 1px 1px 2px #ddd;
592 596 border-radius: 5px;
593 597 display: block; }
594 598
595 599 .Main_Title {
596 600 font-size: 2em;
597 601 letter-spacing: 0.06em;
598 602 color: #444;
599 603 text-shadow: 2px 2px #ccc; }
600 604
601 605 /****************************************************************************************/
602 606 /****** FOOTER *************/
603 607 /****************************************************************************************/
604 608 footer p {
605 609 font-family: 'Roboto Condensed', sans-serif;
606 610 font-size: 0.98em; }
607 611
608 612 /****************************************************************************************/
609 613 /****** LOGIN *************/
610 614 /****************************************************************************************/
611 615 #contentLogin {
612 616 margin: 0;
613 617 padding: 0;
614 618 border: 0px solid #1cc; }
615 619
616 620 #MainColumnLogin {
617 621 margin: 2px auto;
618 622 border: 0px solid #f00 !important;
619 623 box-shadow: 1px 1px 2px #ddd;
620 624 border-radius: 2px;
621 625 background-color: #eee;
622 626 width: 100%;
623 627 padding: 5px 0px;
624 628 }
625 629
626 630 .row_reg {
627 631 margin: 5px auto;
628 632 display: block;
629 633 width: 90%;
630 634 border: 0px solid #1cc !important;
631 635 line-height: 22px;
632 636 }
633 637
634 638 .row_reg label, .row_reg input[type=text] {
635 639 float: left;
636 640 line-height: 22px;
637 641 }
638 642
639 643 #id_username, #id_password {
640 644 width: 160px;
641 645 line-height: 22px;
642 646 }
643 647
644 648 .row_reg label {
645 649 width: 400px;
646 650 text-align: right;
647 651 padding-right: 10px;
648 652 border: 0px solid #d22 !important;
649 653 }
650 654
651 655 .row_reg input[type=submit], .row_reg input[type=button] {
652 656 margin-left: 410px;
653 657 width: 80px;
654 658 }
655 659
656 660 #lblTitleLogin {
657 661 width: 100%;
658 662 text-align: center;
659 663 font-size: 1.2em;
660 664 font-weight: normal;
661 665 color: #222;
662 666 border: 0px solid #f00 !important;
663 667 background-color: #ccc;
664 668 } No newline at end of file
@@ -1,46 +1,54
1 1 /**
2 2 * @author Jose Antonio Sal y Rosas Celi
3 3 * @contact: jose.salyrosas@jro.igp.gob.pe, arturo.jasyrc@gmail.com
4 4 */
5 5
6 6 $(document).on('ready',function(){
7 7 $('#listProfiles').change(function() {
8 8 if($(this).val() != -1){
9 9 location.href="/abscontrol/view/" + $(this).val();
10 10 }
11 11 });
12 12 $('.activeOverJRO').click(function() {
13 13 profile_id = $('input[name=txtProfileId]').val();
14 14 pattern_id = $('input[name=txtPatternId]').val();
15 15 field_Id = $(this).attr("id");
16 16 antenna_id = $('input[name=txtAntenna'+field_Id+'Id]').val();
17 17 result_url = "/abscontrol/"+profile_id+"/"+pattern_id+"/overjro"+field_Id+"/"+antenna_id+"/";
18 18 //location.href=url
19 19 ///*
20 20 $.ajax({
21 21 url: result_url,
22 cache: false,
23 beforeSend: function(){
24 },
22 25 success: function(){
23 //alert('overjro!');
24 26 $('#PictureOverJRO'+field_Id).load(result_url);
25 27 },
26 28 });
27 29 ///*
28 30 });
29 31 $('#lnkSaveImport').click(function(){
30 32 $('#frmImportProfile').submit();
31 33 });
32 34 $('#lnkUpload').click(function(){
33 35 $('#frmImport').submit();
34 36 });
35 37 $('#lnkExport').click(function(){
36 38 profile_id = $(this).attr("alt");
37 39 location.href="/abscontrol/export/" + profile_id + "/";
38 40 });
39 41 $('#lnkSendFile').click(function(){
40 42 profile_id = $(this).attr("alt");
41 43 location.href="/abscontrol/send/" + profile_id + "/";
42 44 });
43 45 $('#lnkChangeProfile').click(function(){
44 46 $('#frmProfile').submit();
45 47 });
48 $('.lnkChangePattern').click(function(){
49 profile_id = $("input[name=txtProfileId]").val();
50 pattern_id = $("input[name=txtPatternId]").val();
51
52 location.href="/abscontrol/change/"+profile_id+"/"+pattern_id+"/";
53 });
46 54 }); No newline at end of file
@@ -1,12 +1,8
1 1 <div class="overJRO" id="PictureOverJROUp">
2 {% if img_up %}
3 <img src="/media/{{ img_up }}" />
4 {% else %}
5 <img />
6 {% endif %}
2 {% if img_up %}<img src="/media/{{ img_up }}" />{% else %}<img />{% endif %}
7 3 {% if antennaUp.value != None and antennaUp.tx != None and antennaUp.rx != None and antennaUp.ues != None %}
8 4 <a href="#" class="activeOverJRO" id="Up">Preview</a>
9 5 {% else %}
10 6 <a href="#" class="link-disabled">Preview</a>
11 7 {% endif %}
12 8 </div> No newline at end of file
@@ -1,129 +1,141
1 1 {% extends "abscontrol/index.html" %}
2 2 {% block title %}ABS CONTROL:::PROFILE:::{{ objProfile.name }}{% endblock %}
3 3
4 4 {% block mnu_profile %}
5 5 <nav class="MnuHorizontal" id="mnuProfiles">
6 6 <ul>
7 7 <li><a href="/abscontrol/new">New</a></li>
8 8 {% if patternChoosen %}
9 9 <li><a href="/abscontrol/{{ objProfile.id }}/edit/{{ patternChoosen.id }}">Edit</a></li>
10 10 {% else %}
11 11 <li><a href="/abscontrol/edit/{{ objProfile.id }}">Edit</a></li>
12 12 {% endif %}
13 13 <li><a href="#">Save as</a></li>
14 14 <li><a href="/abscontrol/import">Import</a></li>
15 15 <li><a href="#" id="lnkExport" alt="{{ objProfile.id }}">Export</a></li>
16 16 <li><a href="#" id="lnkSendFile" alt="{{ objProfile.id }}">Send</a></li>
17 17 </ul>
18 18 </nav>
19 19 {% endblock %}
20 20 {% block maincolumn%}
21 21 <div id="maincolumn">
22 22 {% if objProfile.state == 0 %}
23 23 <div id="divProfile">
24 24 <label for="lblName">Profile:</label>
25 25 <label for="lblProfile">{{ objProfile.name }}</label>
26 26 </div>
27 27 {% endif %}
28 28 {% if patternChoosen %}
29 29 <div id="navPatterns">
30 30 <nav class="" id="navPatternList">
31 31 <ul>
32 32 {% for element in lsPatterns %}
33 <li>
33 34 {% if patternChoosen.id == element.id %}
34 <li><a href="/abscontrol/{{ objProfile.id }}/view/{{ element.id }}/" class="lnkPatternSelected">{{ element.value }}</a></li>
35 {% if element.is_active == 1 %}
36 <a href="/abscontrol/{{ objProfile.id }}/view/{{ element.id }}/" class="lnkPatternSelected lnkPatternActive">{{ element.value }}</a>
37 {% else %}
38 <a href="/abscontrol/{{ objProfile.id }}/view/{{ element.id }}/" class="lnkPatternSelected">{{ element.value }}</a>
39 {% endif %}
35 40 {% else %}
36 <li><a href="/abscontrol/{{ objProfile.id }}/view/{{ element.id }}/" class="lnkPattern">{{ element.value }}</a></li>
41 {% if element.is_active == 1 %}
42 <a href="/abscontrol/{{ objProfile.id }}/view/{{ element.id }}/" class="lnkPattern lnkPatternActive">{{ element.value }}</a>
43 {% else %}
44 <a href="/abscontrol/{{ objProfile.id }}/view/{{ element.id }}/" class="lnkPattern">{{ element.value }}</a>
45 {% endif %}
37 46 {% endif %}
47 </li>
38 48 {% endfor %}
39 49 </ul>
40 50 <div class="cleardivs"></div>
41 51 </nav>
42 52 </div>
43 53 {% endif %}
44 54 {% block mnuPattern %}
55 {% if objProfile.is_active == 1 %}
45 56 <div class="divMenu" id="divMnuPattern">
46 57 <nav class="MnuHorizontal">
47 58 <ul class="mnu" id="mnuPattern">
48 <li><a href="#">Apply</a></li>
59 <li><a href="#" class="lnkChangePattern">Apply</a></li>
49 60 </ul>
50 61 </nav>
51 62 </div>
52 63 <div class="cleardivs"></div>
64 {% endif %}
53 65 {% endblock %}
54 66 <div id="divPattern">
55 67 <div id="infoPattern">
56 68 <div id="antennaUp" class="antenna" style="float: left">
57 69 <fieldset class="flsAntenna">
58 70 <legend class="legendAntenna">UP</legend>
59 71 <div class="infoAntenna">
60 72 <div class="divAntenna">
61 73 <label for="lblAntenna">Antenna</label>
62 74 <p class="view-textAntenna">{{ antennaUp.value }}</p>
63 75 </div>
64 76 <div class="divTx">
65 77 <label for="lblTx">Tx</label>
66 78 <p>{{ antennaUp.tx }}</p>
67 79 </div>
68 80 <div class="divTx">
69 81 <label for="lblRx">Rx</label>
70 82 <p>{{ antennaUp.rx }}</p>
71 83 </div>
72 84 <div class="cleardivs"></div>
73 85 <div class="divUes">
74 86 <label for="lblUes">Ues:</label>
75 87 <label for="lblAntennaUpUes">{{ antennaUp.ues }}</label>
76 88 {% if antennaUp.only_rx == 0 %}
77 89 <input type="checkbox" name="chkOnlyRxUp" value="" />
78 90 {% else %}
79 91 <input type="checkbox" name="chkOnlyRxUp" value="" checked="checked"/>
80 92 {% endif %}
81 93 <label for="lblOnlyRx">Only RX</label>
82 94 </div>
83 95 </div>
84 96 </fieldset>
85 97 </div>
86 98 {% include 'abscontrol/overjro_up.html' %}
87 99 <div class="cleardivs"></div>
88 100
89 101 <div id="antennaDown" class="antenna" style="float: left">
90 102 <fieldset class="flsAntenna">
91 103 <legend class="legendAntenna">DOWN</legend>
92 104 <div class="infoAntenna">
93 105 <div class="divAntenna">
94 106 <label for="lblAntenna">Antenna</label>
95 107 <p class="view-textAntenna">{{ antennaDown.value }}</p>
96 108 </div>
97 109 <div class="divTx">
98 110 <label for="lblTx">Tx</label>
99 111 <p>{{ antennaDown.tx }}</p>
100 112 </div>
101 113 <div class="divTx">
102 114 <label for="lblRx">Rx</label>
103 115 <p>{{ antennaDown.rx }}</p>
104 116 </div>
105 117 <div class="cleardivs"></div>
106 118 <div class="divUes">
107 119 <label for="lblUes">Ues:</label>
108 120 <label for="lblAntennaDownUes">{{ antennaDown.ues }}</label>
109 121 {% if antennaDown.only_rx == 0 %}
110 122 <input type="checkbox" name="chkOnlyRxDown" value="" />
111 123 {% else %}
112 124 <input type="checkbox" name="chkOnlyRxDown" value="" checked="checked"/>
113 125 {% endif %}
114 126 <label for="lblOnlyRx">Only RX</label>
115 127 </div>
116 128 </div>
117 129
118 130 </fieldset>
119 131 </div>
120 132 {% include 'abscontrol/overjro_down.html' %}
121 133 <div class="cleardivs"></div>
122 134 </div>
123 135 <input type="hidden" name="txtAntennaUpId" value="{{ antennaUp.id }}"/>
124 136 <input type="hidden" name="txtAntennaDownId" value="{{ antennaDown.id }}"/>
125 137 <input type="hidden" name="txtPatternId" value="{{ patternChoosen.id }}"/>
126 138 <input type="hidden" name="txtProfileId" value="{{ objProfile.id }}"/>
127 139 </div>
128 140 </div>
129 141 {% endblock %}
General Comments 0
You need to be logged in to leave comments. Login now