OK so I am working on this technique what do you think?
API File: youadAPI.adviewer_api
from gluon import *
class AdViewerEngine:
class tables:
AdReports = 'adreports'
Ads = 'ads'
AdveiwerSettings = 'adviewer_settings'
Keywords = 'keywords'
AdKeyword = 'ad_keyword'
AdReport = 'ad_report'
DailyAdViews = 'dailyadviews'
YearlyAdViews = 'yearlyadviews'
ViewedAds = 'viewedads'
def __init__(self, db, mail, tables = [], migrate=True,
fake_migrate=False):
self.db = db
self.define_tables(tables, migrate, fake_migrate)
def define_tables(self, tables = [], migrate=True, fake_migrate=False):
db = self.db
if (not tables or tables and AdViewerEngine.tables.AdReports in
tables) and AdViewerEngine.tables.AdReports not in db.tables:
print "Making table", AdViewerEngine.tables.AdReports
db.define_table(
AdViewerEngine.tables.AdReports,
...
migrate=migrate,
fake_migrate=fake_migrate
)
if (not tables or tables and AdViewerEngine.tables.Ads in tables)
and AdViewerEngine.tables.Ads not in db.tables:
db.define_table(
AdViewerEngine.tables.Ads,
...
migrate=migrate,
fake_migrate=fake_migrate
)
controller:
def index():
from youadAPI.adviewer_api import AdViewerEngine
adviewer_engine = AdViewerEngine(db, mail,
tables = [
AdViewerEngine.tables.Ads,
AdViewerEngine.tables.ViewedAds
],
migrate=False
)
db(db[AdViewerEngine.tables.Ads].id == 5).select().first() # Things
like this will be moved into adviewer_api at some point
This works by only creating the tables that I define per action. Do you for
see any problems using this method?
On Sat, May 12, 2012 at 9:06 AM, Bruce Wade <[email protected]> wrote:
> Yeah I am going through all my controllers right now to see if I can use
> the folder solution. Which way would be faster? Folders or modules?
>
>
> On Sat, May 12, 2012 at 8:52 AM, Anthony <[email protected]> wrote:
>
>> On Saturday, May 12, 2012 10:51:59 AM UTC-4, Bruce Wade wrote:
>>>
>>> I am starting to think the design loading everything in models with
>>> every request, all though makes for rapid development isn't a very good
>>> design. Maybe for common settings in witch case the folder shouldn't be
>>> called models.
>>
>>
>> Note, if you have some models that are needed only for particular
>> controllers or functions, you can execute them conditionally based on the
>> controller (and optionally the function) by using sub-folders, as described
>> here: http://web2py.com/books/default/chapter/29/4#Workflow. Otherwise,
>> you can put them in modules and import them.
>>
>> Anthony
>>
>
>
>
> --
> --
> Regards,
> Bruce Wade
> http://ca.linkedin.com/in/brucelwade
> http://www.wadecybertech.com
> http://www.fittraineronline.com - Fitness Personal Trainers Online
> http://www.warplydesigned.com
>
>
--
--
Regards,
Bruce Wade
http://ca.linkedin.com/in/brucelwade
http://www.wadecybertech.com
http://www.fittraineronline.com - Fitness Personal Trainers Online
http://www.warplydesigned.com