def main(global_config, **settings): """ This function returns a Pyramid WSGI application. """ engine = engine_from_config(settings, 'sqlalchemy.') DBSession.configure(bind=engine) authorization_policy = ACLAuthorizationPolicy() authentication_policy = AuthTktAuthenticationPolicy('auth.secret', callback=groupfinder) config = Configurator(settings=settings, authentication_policy=authentication_policy, authorization_policy=authorization_policy, request_factory=RequestExtension, root_factory=RootACL) config.add_static_view('themes', 'quizsmith:themes') import quizsmith config = Addons.load_addons(config,quizsmith) try: config = Addons.load_addons(config,quizsmith.addons) except: print "Could not find addons directory" print "\n-- Modules ---------------------- " for addon in Addons.registered: print addon[0] + ' == ' + addon[1] print "-- Modules ---------------------- \n" return config.make_wsgi_app()
def addon(config): if Validate.bool(config.registry.settings.get('d2l_on','False')) == False: return config # D2L Routes add_route(config, 'd2l_authorization', '/d2l/login') add_route(config, 'd2l_dropbox_submit', '/d2l/dropbox/submit') add_route(config, 'd2l_dropbox', '/d2l/dropbox/{id}') add_route(config, 'd2l_instructor_grades', '/d2l/instructors/grades/{id}') Addons.register('D2L Integration','1.0.0') config.scan() return config
def _import_zip(self, obj): filename = obj.filename file = obj.file if not filename.endswith('-v' + Addons.get_version('QuizSmith Core') + '.zip'): return None zip = zipfile.ZipFile(file) data = zip.read('export.data') return json.loads(data)
def main(global_config, **settings): """ This function returns a Pyramid WSGI application. """ engine = engine_from_config(settings, "sqlalchemy.") DBSession.configure(bind=engine) authorization_policy = ACLAuthorizationPolicy() authentication_policy = AuthTktAuthenticationPolicy( empty(settings.get("authentication.secret"), "default_key_883782"), cookie_name=empty(settings.get("authentication.cookie_name"), "auth_tkt"), secure=empty(settings.get("authentication.secure"), False), timeout=empty(settings.get("authentication.timeout"), None), max_age=empty(settings.get("authentication.max_age"), None), path=empty(settings.get("authentication.path"), "/"), callback=groupfinder, ) session_factory = UnencryptedCookieSessionFactoryConfig(empty(settings.get("session.secret"), "default_key_883782")) config = Configurator( settings=settings, authentication_policy=authentication_policy, authorization_policy=authorization_policy, request_factory=RequestExtension, root_factory=RootACL, session_factory=session_factory, ) config.add_static_view("themes", "quizsmith:themes") import quizsmith config = Addons.load_addons(config, quizsmith) try: config = Addons.load_addons(config, quizsmith.addons) except: print "Could not find addons directory" print "\n-- Modules ---------------------- " for addon in Addons.registered: print addon[0] + " == " + addon[1] print "-- Modules ---------------------- \n" return config.make_wsgi_app()
def edit_category(self): category_id = self.request.matchdict['category'] self.response['category_id'] = category_id self.response['version'] = Addons.get_version('QuizSmith Core') self.response['d2l_on'] = Validate.bool(self.settings('d2l_on')) if 'form.submit' in self.request.params or 'form.submit.questions' in self.request.params: active = None if category_id == 'add': active = Categories(name='New Category') editors = [] for group in self.request.user.get_groups(): editors.append(str(group.id)) reviewers = [] for group in self.request.user.get_groups(): reviewers.append(str(group.id)) active.set_groups([], editors, reviewers) DBSession.add(active) DBSession.flush() category_id = str(active.id) else: active = Categories.by(category_id, sort='position asc', user=self.request.user, permission=ACL.EDIT).first() active.name = self.request.params.get('category.name','') active.category_intro = self.request.params.get('category.intro','') active.playable_questions = self.request.params.get('category.playable_questions',10) active.wrong_answer_time_penalty = self.request.params.get('category.wrong_answer_time_penalty',5) active.max_wrong_answer_allowed = self.request.params.get('category.max_wrong_answer_allowed',2) active.question_time_allowed = self.request.params.get('category.question_time_allowed',30) active.transition_in = self.request.params.get('category.transition_in','Random') active.transition_out = self.request.params.get('category.transition_out','Random') active.d2l_folder = self.request.params.get('category.d2l_folder','') assesment_data = [] for key,v in self.request.params.iteritems(): if key.startswith('assessment'): field_data = key.split('.') row = {} if not any(a['id'] == field_data[-1] for a in assesment_data): assesment_data.append(row) else: row = filter(lambda x: x['id'] == field_data[-1], assesment_data)[0] row['id'] = field_data[-1] if v.isdigit(): row[field_data[1]] = int(v) else: row[field_data[1]] = str(v) active.set_assessments(assesment_data) editors = [] if self.request.params.getall('category.editable'): editors = self.request.params.getall('category.editable') else: for g in active.groups: if g.edit: editors.append(str(g.groups_id)) reviewers = [] if self.request.params.getall('category.reviewable'): reviewers = self.request.params.getall('category.reviewable') else: for g in active.groups: if g.edit: editors.append(str(g.groups_id)) active.set_groups(self.request.params.getall('category.playable'), editors, reviewers) DBSession.flush() transaction.commit() self.notify('Changes saved!') if 'form.submit.questions' in self.request.params: return HTTPFound(location=self.request.application_url + '/edit/category/' + category_id + '/questions') return HTTPFound(location=self.request.application_url + '/edit/category/' + category_id) elif category_id == 'add': self.response['active_category'] = Categories(name='New Category') else: self.response['active_category'] = Categories.by(category_id, sort='position asc', user=self.request.user, permission=ACL.EDIT, strict=True).first() self.response['transitions_in'] = self.response['active_category'].transition_in self.response['transitions_out'] = self.response['active_category'].transition_out self.response['transitions'] = Transitions.all() self.response['questions'] = QuestionSets.by({'category_id':category_id}).count() self.response['all_edit_groups'] = Groups.by({'edit':True}).all() self.response['all_play_groups'] = Groups.by({'play':True}).all() self.response['all_review_groups'] = Groups.by({'review':True}).all() self.response['play_groups'] = [] self.response['edit_groups'] = [] self.response['review_groups'] = [] if self.response['active_category'].groups: for categorygroup in self.response['active_category'].groups: group = Groups.by(categorygroup.groups_id).first() if categorygroup.edit: self.response['edit_groups'].append(group.name) if categorygroup.play: self.response['play_groups'].append(group.name) if categorygroup.review: self.response['review_groups'].append(group.name) return self.template('/edit-category.pt', theme='AdminPanel')
# you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # from quizsmith.app.utilities import add_route from quizsmith.setup import Addons Addons.register('QuizSmith Core','1.0.0') def addon(config): # App Routes config.add_route('menu', '/') #root add_route(config, 'help', '/help') add_route(config, 'feedback', '/help/feedback') add_route(config, 'credits', '/credits') add_route(config, 'profile', '/profile') add_route(config, 'change_password', '/profile/change') add_route(config, 'halt', '/halt') add_route(config, 'login', '/login') add_route(config, 'logout', '/logout') add_route(config, 'register', '/register') add_route(config, 'alias', '/alias') add_route(config, 'category', '/category')
# http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # from quizsmith.app.utilities import PyramidFormalchemyACL, add_route from quizsmith.app.views import BaseView from quizsmith.app.models import Categories from quizsmith.app.utilities import ACL from quizsmith.setup import Addons Addons.register('QuizSmith Admin Panel','1.0.0') def addon(config): # Edit Panel Routes add_route(config, 'edit_home','/edit') add_route(config, 'edit_categories','/edit/categories') add_route(config, 'edit_info', '/edit/info') add_route(config, 'import_category', '/edit/category/import') add_route(config, 'edit_category','/edit/category/{category}') add_route(config, 'edit_questions', '/edit/category/{category}/questions') add_route(config, 'edit_question','/edit/category/{category}/questions/{id}') add_route(config, 'export_category', '/edit/category/{category}/export/{category_name}.zip') add_route(config, 'edit_delete', '/edit/delete/{type}/{id}') add_route(config, 'edit_groups', '/edit/groups') add_route(config, 'edit_theme', '/edit/theme') add_route(config, 'export_theme', '/edit/theme/export/{theme_name}.zip')