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