How did you upgrade ? Which version of web2py (2.14.6)?

Richard

On Thu, Jun 16, 2016 at 9:36 AM, Marty Jones <murtin.jo...@gmail.com> wrote:

> I uploaded a local application to my DigitalOcean droplet and have been
> having a nightmare of a time with the databases. I get this variety of
> errors on various pages:
>
> *Error 1:*
>
> Traceback (most recent call last):
>   File "/home/murtyjones/app/gluon/restricted.py", line 227, in restricted
>     exec ccode in environment
>   File "/home/murtyjones/app/applications/nolabills/controllers/default.py" 
> <https://nolabills.com/admin/default/edit/nolabills/controllers/default.py>, 
> line 230, in <module>
>   File "/home/murtyjones/app/gluon/globals.py", line 417, in <lambda>
>     self._caller = lambda f: f()
>   File "/home/murtyjones/app/gluon/tools.py", line 4241, in f
>     return action(*a, **b)
>   File "/home/murtyjones/app/applications/nolabills/controllers/default.py" 
> <https://nolabills.com/admin/default/edit/nolabills/controllers/default.py>, 
> line 73, in dashboard
>     data_requests = 
> SQLFORM.grid(db(db.data_requests.company==auth.user.company),
>   File "/home/murtyjones/app/gluon/packages/dal/pydal/objects.py", line 91, 
> in __getattr__
>     raise AttributeError
> AttributeError
>
>
> *Error 2 (trying to apply changes as a user to own profile):*
>
> Traceback (most recent call last):
>   File "/home/murtyjones/app/gluon/restricted.py", line 227, in restricted
>     exec ccode in environment
>   File "/home/murtyjones/app/applications/nolabills/controllers/default.py" 
> <https://nolabills.com/admin/default/edit/nolabills/controllers/default.py>, 
> line 230, in <module>
>   File "/home/murtyjones/app/gluon/globals.py", line 417, in <lambda>
>     self._caller = lambda f: f()
>   File "/home/murtyjones/app/applications/nolabills/controllers/default.py" 
> <https://nolabills.com/admin/default/edit/nolabills/controllers/default.py>, 
> line 211, in user
>     return dict(form=auth())
>   File "/home/murtyjones/app/gluon/tools.py", line 1941, in __call__
>     return getattr(self, args[0])()
>   File "/home/murtyjones/app/gluon/tools.py", line 4026, in profile
>     hideerror=self.settings.hideerror):
>   File "/home/murtyjones/app/gluon/sqlhtml.py", line 1744, in accepts
>     self.id_field_name]).update(**fields)
>   File "/home/murtyjones/app/gluon/packages/dal/pydal/objects.py", line 2041, 
> in update
>     ret = db._adapter.update("%s" % table._tablename, self.query, fields)
>   File "/home/murtyjones/app/gluon/packages/dal/pydal/adapters/base.py", line 
> 519, in update
>     raise e
> OperationalError: attempt to write a readonly database
>
>
> *Error 3 (trying to logout as a user):*
>
> Traceback (most recent call last):
>   File "/home/murtyjones/app/gluon/restricted.py", line 227, in restricted
>     exec ccode in environment
>   File "/home/murtyjones/app/applications/nolabills/controllers/default.py" 
> <https://nolabills.com/admin/default/edit/nolabills/controllers/default.py>, 
> line 230, in <module>
>   File "/home/murtyjones/app/gluon/globals.py", line 417, in <lambda>
>     self._caller = lambda f: f()
>   File "/home/murtyjones/app/applications/nolabills/controllers/default.py" 
> <https://nolabills.com/admin/default/edit/nolabills/controllers/default.py>, 
> line 211, in user
>     return dict(form=auth())
>   File "/home/murtyjones/app/gluon/tools.py", line 1941, in __call__
>     return getattr(self, args[0])()
>   File "/home/murtyjones/app/gluon/tools.py", line 3235, in logout
>     self.log_event(log, self.user)
>   File "/home/murtyjones/app/gluon/tools.py", line 2530, in log_event
>     self.table_event().insert(description=str(description % vars), 
> origin=origin, user_id=user_id)
>   File "/home/murtyjones/app/gluon/packages/dal/pydal/objects.py", line 740, 
> in insert
>     ret = self._db._adapter.insert(self, self._listify(fields))
>   File "/home/murtyjones/app/gluon/packages/dal/pydal/adapters/base.py", line 
> 482, in insert
>     raise e
> IntegrityError: FOREIGN KEY constraint failed
>
>
> *db.py*
> ## app configuration made easy. Look inside private/appconfig.ini
> from gluon.contrib.appconfig import AppConfig
> ## import current for current.db = db line
> from gluon import current
>
> ## once in production, remove reload=True to gain full speed
> myconf = AppConfig(reload=True)
>
> ## if NOT running on Google App Engine use SQLite or other DB
> db = DAL(myconf.take('db.uri'), pool_size=myconf.take('db.pool_size',
> cast=int), migrate_enabled = myconf.get('db.migrate'),
> check_reserved=['all'])
>
> ## define current.db for module usage
> current.db = db
>
> ## by default give a view/generic.extension to all actions from localhost
> ## none otherwise. a pattern can be 'controller/function.extension'
> response.generic_patterns = ['*'] if request.is_local else []
> ## choose a style for forms
> response.formstyle = myconf.take('forms.formstyle')  # or
> 'bootstrap3_stacked' or 'bootstrap2' or other
> response.form_label_separator = myconf.take('forms.separator')
>
> from gluon.tools import Auth, Service, PluginManager
>
> auth = Auth(db)
> service = Service()
> plugins = PluginManager()
>
> auth.settings.extra_fields['auth_user']= [
>   Field('company'),
>   ]
>
> ## create all tables needed by auth if not custom tables
> auth.define_tables(username=False, signature=False, migrate=True,
> fake_migrate=True)
>
> ## configure email
> mail = auth.settings.mailer
> mail.settings.server = 'smtp.gmail.com'
> mail.settings.sender = 'em...@gmail.com'
> mail.settings.login = 'em...@gmail.com:password'
>
> ## configure auth policy
> auth.settings.registration_requires_verification = True
> auth.settings.registration_requires_approval = True
> auth.settings.reset_password_requires_verification = True
>
> ## after defining tables, uncomment below to enable auditing
> # auth.enable_record_versioning(db)
>
>
> ## create list of companies for which this is available
> db.define_table('company_info',
>                 Field('name'),
>                 Field('street_address'),
>                 )
>
> ## create a table for the queue of not yet fulfilled data requests
> db.define_table('data_requests',
>                 Field('first_name'),
>                 Field('last_name'),
>                 Field('entergy_username'),
>                 Field('entergy_password'),
>                 Field('email'),
>                 Field('company'),
>                 Field('status', default='QUEUED'),
>                 Field('runs', 'integer', default=0),
>                 Field('bill_1', 'upload', uploadfield='bill_1_file'),
>                 Field('bill_1_file', 'blob'),
>                 )
>
>
> ## create a table for generating tokens
> db.define_table('tokens',
>                 Field('first_name'),
>                 Field('last_name'),
>                 Field('email'),
>                 Field('company'),
>                 Field('token'),
>                 Field('submitted', default=False),
>                 )
>
>
>
> *sql.log*
> timestamp: 2016-06-15T14:20:52.811948
> CREATE TABLE auth_user(
>     id INTEGER PRIMARY KEY AUTOINCREMENT,
>     first_name CHAR(128),
>     last_name CHAR(128),
>     email CHAR(512),
>     password CHAR(512),
>     registration_key CHAR(512),
>     reset_password_key CHAR(512),
>     registration_id CHAR(512)
> );
> success!
> timestamp: 2016-06-15T14:20:52.856816
> CREATE TABLE auth_group(
>     id INTEGER PRIMARY KEY AUTOINCREMENT,
>     role CHAR(512),
>     description TEXT
> );
> success!
> timestamp: 2016-06-15T14:20:52.899975
> CREATE TABLE auth_membership(
>     id INTEGER PRIMARY KEY AUTOINCREMENT,
>     user_id INTEGER REFERENCES auth_user (id) ON DELETE CASCADE  ,
>     group_id INTEGER REFERENCES auth_group (id) ON DELETE CASCADE
> );
> success!
> timestamp: 2016-06-15T14:20:53.040386
> CREATE TABLE auth_permission(
>     id INTEGER PRIMARY KEY AUTOINCREMENT,
>     group_id INTEGER REFERENCES auth_group (id) ON DELETE CASCADE  ,
>     name CHAR(512),
>     table_name CHAR(512),
>     record_id INTEGER
> );
> success!
> timestamp: 2016-06-15T14:20:53.092848
> CREATE TABLE auth_event(
>     id INTEGER PRIMARY KEY AUTOINCREMENT,
>     time_stamp TIMESTAMP,
>     client_ip CHAR(512),
>     user_id INTEGER REFERENCES auth_user (id) ON DELETE CASCADE  ,
>     origin CHAR(512),
>     description TEXT
> );
> success!
> timestamp: 2016-06-15T14:20:53.223004
> CREATE TABLE auth_cas(
>     id INTEGER PRIMARY KEY AUTOINCREMENT,
>     user_id INTEGER REFERENCES auth_user (id) ON DELETE CASCADE  ,
>     created_on TIMESTAMP,
>     service CHAR(512),
>     ticket CHAR(512),
>     renew CHAR(1)
> );
> success!
> timestamp: 2016-06-15T14:22:53.166163
> ALTER TABLE auth_user ADD company CHAR(512);
> success!
> timestamp: 2016-06-15T14:22:53.554653
> CREATE TABLE company_info(
>     id INTEGER PRIMARY KEY AUTOINCREMENT,
>     name CHAR(512),
>     street_address CHAR(512)
> );
> success!
> timestamp: 2016-06-15T14:22:53.604055
> CREATE TABLE data_requests(
>     id INTEGER PRIMARY KEY AUTOINCREMENT,
>     first_name CHAR(512),
>     last_name CHAR(512),
>     entergy_username CHAR(512),
>     entergy_password CHAR(512),
>     email CHAR(512),
>     company CHAR(512),
>     status CHAR(512),
>     runs INTEGER,
>     bill_1 CHAR(512),
>     bill_1_file BLOB
> );
> success!
> timestamp: 2016-06-15T14:22:53.645905
> CREATE TABLE tokens(
>     id INTEGER PRIMARY KEY AUTOINCREMENT,
>     first_name CHAR(512),
>     last_name CHAR(512),
>     email CHAR(512),
>     company CHAR(512),
>     token CHAR(512),
>     submitted CHAR(512)
> );
> success!
> timestamp: 2016-06-15T14:22:56.435830
> CREATE TABLE scheduler_task(
>     id INTEGER PRIMARY KEY AUTOINCREMENT,
>     application_name CHAR(512),
>     task_name CHAR(512),
>     group_name CHAR(512),
>     status CHAR(512),
>     function_name CHAR(512),
>     uuid CHAR(255) UNIQUE,
>     args TEXT,
>     vars TEXT,
>     enabled CHAR(1),
>     start_time TIMESTAMP,
>     next_run_time TIMESTAMP,
>     stop_time TIMESTAMP,
>     repeats INTEGER,
>     retry_failed INTEGER,
>     period INTEGER,
>     prevent_drift CHAR(1),
>     timeout INTEGER,
>     sync_output INTEGER,
>     times_run INTEGER,
>     times_failed INTEGER,
>     last_run_time TIMESTAMP,
>     assigned_worker_name CHAR(512)
> );
> success!
> timestamp: 2016-06-15T14:22:56.501649
> CREATE TABLE scheduler_run(
>     id INTEGER PRIMARY KEY AUTOINCREMENT,
>     task_id INTEGER REFERENCES scheduler_task (id) ON DELETE CASCADE  ,
>     status CHAR(512),
>     start_time TIMESTAMP,
>     stop_time TIMESTAMP,
>     run_output TEXT,
>     run_result TEXT,
>     traceback TEXT,
>     worker_name CHAR(512)
> );
> success!
> timestamp: 2016-06-15T14:22:56.546304
> CREATE TABLE scheduler_worker(
>     id INTEGER PRIMARY KEY AUTOINCREMENT,
>     worker_name CHAR(255) UNIQUE,
>     first_heartbeat TIMESTAMP,
>     last_heartbeat TIMESTAMP,
>     status CHAR(512),
>     is_ticker CHAR(1),
>     group_names TEXT,
>     worker_stats TEXT
> );
> success!
> timestamp: 2016-06-15T14:22:56.589493
> CREATE TABLE scheduler_task_deps(
>     id INTEGER PRIMARY KEY AUTOINCREMENT,
>     job_name CHAR(512),
>     task_parent INTEGER,
>     task_child INTEGER REFERENCES scheduler_task (id) ON DELETE CASCADE  ,
>     can_visit CHAR(1)
> );
> success!
>
> No idea where to even start with this and would appreciate help.
>
> --
> Resources:
> - http://web2py.com
> - http://web2py.com/book (Documentation)
> - http://github.com/web2py/web2py (Source code)
> - https://code.google.com/p/web2py/issues/list (Report Issues)
> ---
> You received this message because you are subscribed to the Google Groups
> "web2py-users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to web2py+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to