def remove_artist(self, proj, category_id, user_id): """Remove an artist from a category""" session = session_get() user = tmpl_context.user project = project_get(proj) category = category_get(category_id) remuser = user_get(user_id) updates = [] if remuser in project.artists[category]: query = session.query(Artist).filter_by(proj_id=project.id) query = query.filter_by(category_id=category.id) query = query.filter_by(user_id=remuser.user_id) artist = query.one() session.delete(artist) # prepare updates to notify clients updates.append(dict(item=remuser, type='deleted', topic=TOPIC_PROJECT_ARTISTS, filter='%s-%s' % (project.id, category.id))) # log into Journal msg = '%s %s %s/%s' % (remuser.user_id, _('revoked as artist from:'), project.id, category.id) journal.add(user, msg) notify.send(updates) return dict(msg=msg, status='ok', updates=updates) return dict(msg='%s %s %s' % ( remuser.user_id, _('is not an artist for:'), project.id), status='error', updates=[])
def project_set_active(func, *args, **kwargs): """Extract the current project id from the args passed to the function and puts the corresponding project in the template context. If the project id is not valid raise an error.""" if 'proj' in kwargs: proj = kwargs['proj'] elif len(args)>1: proj = args[1] else: raise SPAMError('No project defined') tmpl_context.project = project_get(proj) return func(*args, **kwargs)
def _before(self, *args, **kw): proj = request.url.split('/')[-3] tmpl_context.project = project_get(proj)
def scenes(self, proj): project = project_get(proj) tmpl_context.t_scenes = t_scenes return dict(scenes=project.scenes)