def start(self, context, request, appstruct, **kw): members = appstruct['members'] are_managers = appstruct['are_managers'] for member in members: new_member = False if member not in context.members: context.addtoproperty('members', member) member.init_contents_organizations() new_member = True if are_managers and (new_member or not has_role( user=member, role=('OrganizationResponsible', context), ignore_superiors=True)): grant_roles( user=member, roles=(('OrganizationResponsible', context),)) member.reindex() context.reindex() context.modified_at = datetime.datetime.now(tz=pytz.UTC) request.registry.notify(ActivityExecuted( self, [context], get_current())) return {}
def _add_sub_amendment(self, context, request, group): data = self._get_explanation_data(context, group) keywords_ref = context.keywords_ref amendment = Amendment() for k in keywords_ref: amendment.addtoproperty('keywords_ref', k) amendment.set_data(data) context.proposal.addtoproperty('amendments', amendment) amendment.state.append('published') grant_roles(roles=(('Owner', amendment), )) amendment.setproperty('author', get_current()) #amendment.setproperty('originalentity', context) explanations = sorted(group['explanations'], key=lambda e: e['oid']) i = 1 for explanation in explanations: explanation['oid'] = i amendment.explanations[str(i)] = explanation i += 1 explanations, text_diff = get_text_amendment_diff_submitted( amendment, request) amendment.explanations = PersistentDict(explanations) amendment.text_diff = text_diff amendment.reindex() self._publish_ideas(amendment)
def start(self, context, request, appstruct, **kw): root = getSite() user = get_current() artist = appstruct['_object_data'] root.addtoproperty('artists', artist) artist.state = PersistentList(['editable']) grant_roles(user=user, roles=(('Owner', artist), )) artist.setproperty('author', user) artist.add_contributors(context.contributors) artist.add_contributors([user]) artist.setproperty('original', context) artist.set_metadata(appstruct) artist.hash_picture_fp() artist.hash_artist_data() source = request.GET.get('source', '') if source: source_artist = get_obj(int(source)) if source_artist: replaced = source_artist.replace_by(artist) if replaced: request.registry.notify(ObjectReplaced( old_object=source_artist, new_object=artist )) root.delfromproperty('artists', source_artist) artist.reindex() request.registry.notify(ActivityExecuted(self, [artist], user)) return {'newcontext': artist}
def start(self, context, request, appstruct, **kw): comment = appstruct['_object_data'] user = get_current(request) channel = context.get_channel(user) if not channel: channel = PrivateChannel() context.addtoproperty('channels', channel) channel.addtoproperty('members', user) channel.addtoproperty('members', context) context.set_read_date(channel, comment.created_at) if channel: channel.addtoproperty('comments', comment) channel.add_comment(comment) comment.state = PersistentList(['published']) comment.reindex() comment.format(request) comment.setproperty('author', user) grant_roles(user=user, roles=(('Owner', comment), )) if appstruct.get('associated_contents', []): comment.set_associated_contents( appstruct['associated_contents'], user) self._alert_users(context, request, user, comment, channel) context.reindex() user.set_read_date(channel, datetime.datetime.now(tz=pytz.UTC)) return {}
def start(self, context, request, appstruct, **kw): user = get_current() report = appstruct['_object_data'] context.addtoproperty('censoring_reason', report) grant_roles(user=user, roles=(('Owner', report), )) report.setproperty('author', user) report.reindex() context_oid = get_oid(context) dace_index = find_catalog('dace') dace_container_oid = dace_index['container_oid'] query = dace_container_oid.eq(context_oid) reports = find_entities(interfaces=[ISReport], metadata_filter={'states': ['pending']}, add_query=query) for report in reports: report.state = PersistentList(['processed']) report.reindex() context.init_len_current_reports() adapter = get_current_registry().queryAdapter(context, ISignalableObject) if adapter is not None: context.state.remove('reported') adapter.censor(request) return {}
def update_manager(organization, managers): managers_toadd = [u for u in managers if not has_role( user=u, role=('OrganizationResponsible', organization))] managers_todel = [u for u in organization.managers if u not in managers] for manager in managers_todel: revoke_roles(manager, (('OrganizationResponsible', organization),)) for manager in managers_toadd: grant_roles(user=manager, roles=(('OrganizationResponsible', organization),)) for manager in managers: if manager not in organization.members: organization.addtoproperty('members', manager) for member in organization.members: grant_roles(user=member, roles=(('OrganizationMember', organization),))
def start(self, context, request, appstruct, **kw): user = get_current() if not hasattr(user, 'customeraccount') and\ context.customer: user = context.customer.user if '_csrf_token_' in appstruct: appstruct.pop('_csrf_token_') service = self.service(**appstruct) service.configure(context, user) subscribed = service.subscribe(context, user) if subscribed: grant_roles(service.delegate, roles=(("Moderator", context), )) service.delegate.reindex() def_container = find_service('process_definition_container') runtime = find_service('runtime') for process_id in service.processes_id: pd = def_container.get_definition(process_id) proc = pd() proc.__name__ = proc.id runtime.addtoproperty('processes', proc) proc.defineGraph(pd) proc.execution_context.add_involved_entity('site', context) proc.execution_context.add_created_entity('service', service) proc.execute() context.modified_at = datetime.datetime.now(tz=pytz.UTC) service.reindex() return {}
def start(self, context, request, appstruct, **kw): root = getSite() user = get_current() venue = appstruct['_object_data'] root.addtoproperty('venues', venue) venue.state = PersistentList(['editable']) grant_roles(user=user, roles=(('Owner', venue), )) venue.setproperty('author', user) venue.add_contributors(context.contributors) venue.add_contributors([user]) venue.setproperty('original', context) venue.set_metadata(appstruct) venue.hash_venue_data() source = request.GET.get('source', '') if source: source_venue = get_obj(int(source)) if source_venue: replaced = source_venue.replace_by(venue) if replaced: request.registry.notify( ObjectReplaced(old_object=source_venue, new_object=venue)) root.delfromproperty('venues', source_venue) venue.reindex() request.registry.notify(ActivityExecuted(self, [venue], user)) return {'newcontext': venue}
def start(self, context, request, appstruct, **kw): comment = appstruct['_object_data'] user = get_current(request) channel = context.get_channel(user) if not channel: channel = PrivateChannel() context.addtoproperty('channels', channel) channel.addtoproperty('members', user) channel.addtoproperty('members', context) context.set_read_date(channel, comment.created_at) if channel: channel.addtoproperty('comments', comment) channel.add_comment(comment) comment.state = PersistentList(['published']) comment.reindex() comment.format(request) comment.setproperty('author', user) grant_roles(user=user, roles=(('Owner', comment), )) if appstruct.get('associated_contents', []): comment.set_associated_contents( appstruct['associated_contents'], user) self._alert_users(context, request, user, comment, channel) context.reindex() user.set_read_date(channel, datetime.datetime.now(tz=pytz.UTC)) return {}
def start(self, context, request, appstruct, **kw): root = getSite() user = get_current() mask = user.get_mask(root) if hasattr(user, 'get_mask') else user author = mask if appstruct.pop('anonymous', False) and mask else user files = [f['_object_data'] for f in appstruct.pop('attached_files')] appstruct['attached_files'] = files copy_of_idea = copy( context, (root, 'ideas'), omit=('created_at', 'modified_at', 'opinion', 'examined_at', 'published_at', 'len_selections', 'graph')) copy_of_idea.opinion = PersistentDict({}) copy_of_idea.init_graph() copy_of_idea.setproperty('originalentity', context) copy_of_idea.state = PersistentList(['to work']) copy_of_idea.setproperty('author', author) grant_roles(user=author, roles=(('Owner', copy_of_idea), )) copy_of_idea.set_data(appstruct) copy_of_idea.modified_at = datetime.datetime.now(tz=pytz.UTC) copy_of_idea.subscribe_to_channel(user) copy_of_idea.format(request) copy_of_idea.reindex() context.reindex() request.registry.notify(ActivityExecuted( self, [context, copy_of_idea], author)) return {'newcontext': copy_of_idea}
def start(self, context, request, appstruct, **kw): comment = appstruct['_object_data'] channel = context.channel if channel: channel.addtoproperty('comments', comment) channel.add_comment(comment) comment.format(request) comment.state = PersistentList(['published']) comment.reindex() user = appstruct.get('user', get_current()) mask = user.get_mask(getSite()) if hasattr(user, 'get_mask') else user author = mask if appstruct.get('anonymous', False) and mask else user grant_roles(user=author, roles=(('Owner', comment), )) if getattr(self, 'subscribe_to_channel', True): context.subscribe_to_channel(user) comment.setproperty('author', author) if appstruct.get('associated_contents', []): comment.set_associated_contents( appstruct['associated_contents'], author) if appstruct.get('alert', True): self._alert_users(context, request, author, comment) context.reindex() user.set_read_date(channel, datetime.datetime.now(tz=pytz.UTC)) return {}
def start(self, context, request, appstruct, **kw): root = getSite() user = get_current(request) mask = user.get_mask(root) if hasattr(user, 'get_mask') else user author = mask if appstruct.get('anonymous', False) and mask else user answer = appstruct['_object_data'] context.addtoproperty('answers', answer) answer.init_title() answer.format(request) answer.state = PersistentList(['published']) answer.reindex() if getattr(answer, 'option', None) is not None: answer.question.add_selected_option(user, answer.option) transaction.commit() grant_roles(user=author, roles=(('Owner', answer), )) answer.setproperty('author', author) if appstruct.get('associated_contents', []): answer.set_associated_contents( appstruct['associated_contents'], author) self._alert_users(context, request, author, answer) context.reindex() user.set_read_date(answer.channel, datetime.datetime.now(tz=pytz.UTC)) return {}
def start(self, context, request, appstruct, **kw): root = getSite() user = get_current() venue = appstruct['_object_data'] root.addtoproperty('venues', venue) venue.state = PersistentList(['editable']) grant_roles(user=user, roles=(('Owner', venue), )) venue.setproperty('author', user) venue.add_contributors(context.contributors) venue.add_contributors([user]) venue.setproperty('original', context) venue.set_metadata(appstruct) venue.hash_venue_data() source = request.GET.get('source', '') if source: source_venue = get_obj(int(source)) if source_venue: replaced = source_venue.replace_by(venue) if replaced: request.registry.notify(ObjectReplaced( old_object=source_venue, new_object=venue )) root.delfromproperty('venues', source_venue) venue.reindex() request.registry.notify(ActivityExecuted(self, [venue], user)) return {'newcontext': venue}
def add(self): user = get_current() path = self.params('path') dir_ = None if path is not None: #dir_ = traversal.traverse(self.context, path).get('context', None) dir_ = get_file(path) if dir_ is None: dir_ = user field_storage = self.params('newfile') new_img = Image(fp=field_storage.file, title=field_storage.filename) new_img.mimetype = field_storage.type new_img.fp.seek(0) if hasattr(dir_, 'files'): dir_.addtoproperty('files', new_img) else: root = getSite() root.addtoproperty('files', new_img) grant_roles(user=user, roles=(('Owner', new_img), )) result = { 'Path': get_file_url(new_img, self.request), 'Name': new_img.title, 'Code': 0 } return '<textarea>' + json.dumps(result) + '</textarea>'
def add(self): user = get_current() path = self.params('path') dir_ = None if path is not None: #dir_ = traversal.traverse(self.context, path).get('context', None) dir_ = get_file(path) if dir_ is None: dir_ = user field_storage = self.params('newfile') new_img = Image( fp=field_storage.file, title=field_storage.filename) new_img.mimetype = field_storage.type new_img.fp.seek(0) if hasattr(dir_, 'files'): dir_.addtoproperty('files', new_img) else: root = getSite() root.addtoproperty('files', new_img) grant_roles(user=user, roles=(('Owner', new_img), )) result = { 'Path': get_file_url(new_img, self.request), 'Name': new_img.title, 'Code': 0 } return '<textarea>'+json.dumps(result)+'</textarea>'
def start(self, context, request, appstruct, **kw): root = getSite() copy_of_amendment = copy(context, (context.proposal, 'amendments'), omit=('created_at', 'modified_at', 'explanations')) keywords_ids = appstruct.pop('keywords') result, newkeywords = root.get_keywords(keywords_ids) for nkw in newkeywords: root.addtoproperty('keywords', nkw) result.extend(newkeywords) appstruct['keywords_ref'] = result copy_of_amendment.set_data(appstruct) copy_of_amendment.text = normalize_text(copy_of_amendment.text) copy_of_amendment.setproperty('originalentity', context) copy_of_amendment.state = PersistentList(['draft']) copy_of_amendment.setproperty('author', get_current()) localizer = request.localizer # copy_of_amendment.title = context.proposal.title + \ # localizer.translate(_('_Amended version ')) + \ # str(getattr(context.proposal, # '_amendments_counter', 1)) copy_of_amendment.title = localizer.translate(_('Amended version ')) + \ str(getattr(context.proposal, '_amendments_counter', 1)) grant_roles(roles=(('Owner', copy_of_amendment), )) copy_of_amendment.text_diff = get_text_amendment_diff( context.proposal, copy_of_amendment) copy_of_amendment.reindex() context.proposal._amendments_counter = getattr(context.proposal, '_amendments_counter', 1) + 1 context.reindex() return {'newcontext': copy_of_amendment}
def create_user(request, appstruct): if appstruct and 'user_data' in appstruct: source_data = appstruct.get('source_data', {}) data = appstruct.get('user_data', {}) root = getSite() locale = my_locale_negotiator(request) data['locale'] = locale person = Person(**data) person.set_source_data(source_data) principals = find_service(root, 'principals') name = person.first_name + ' ' + person.last_name users = principals['users'] name = name_chooser(users, name=name) users[name] = person grant_roles(person, roles=('Member',)) grant_roles(person, (('Owner', person),)) person.state.append('active') person.init_annotations() person.annotations.setdefault( PROCESS_HISTORY_KEY, PersistentList()) person.reindex() root.addtoproperty('news_letter_members', person) newsletters = root.get_newsletters_automatic_registration() email = getattr(person, 'email', '') if newsletters and email: for newsletter in newsletters: newsletter.subscribe( person.first_name, person.last_name, email) transaction.commit() return person return None
def start(self, context, request, appstruct, **kw): root = getSite() user = get_current() artist = appstruct['_object_data'] root.addtoproperty('artists', artist) artist.state = PersistentList(['editable']) grant_roles(user=user, roles=(('Owner', artist), )) artist.setproperty('author', user) artist.add_contributors(context.contributors) artist.add_contributors([user]) artist.setproperty('original', context) artist.set_metadata(appstruct) artist.hash_picture_fp() artist.hash_artist_data() source = request.GET.get('source', '') if source: source_artist = get_obj(int(source)) if source_artist: replaced = source_artist.replace_by(artist) if replaced: request.registry.notify( ObjectReplaced(old_object=source_artist, new_object=artist)) root.delfromproperty('artists', source_artist) artist.reindex() request.registry.notify(ActivityExecuted(self, [artist], user)) return {'newcontext': artist}
def start_ballot( context, author, request, root, electors, process_id, role='LocalModerator', before_start=None, initiator=None, subjects=[]): if role: for elector in electors: grant_roles( user=elector, roles=((role, context),)) # start a moderation process ballot_proc = start_ballot_proc( context, process_id) if ballot_proc: ballot_proc.execution_context.add_involved_collection( 'electors', electors) context.addtoproperty('ballot_processes', ballot_proc) if before_start: before_start(ballot_proc) ballot_proc.initiator = initiator ballot_proc.subjects = subjects ballot_proc.execute_action( context, request, 'start_ballot', {}) return ballot_proc
def start(self, context, request, appstruct, **kw): user = get_current() if not hasattr(user, 'customeraccount') and\ context.customer: user = context.customer.user if '_csrf_token_' in appstruct: appstruct.pop('_csrf_token_') service = self.service(**appstruct) service.configure(context, user) subscribed = service.subscribe(context, user) if subscribed: grant_roles( service.delegate, roles=(("Moderator", context),)) service.delegate.reindex() def_container = find_service('process_definition_container') runtime = find_service('runtime') for process_id in service.processes_id: pd = def_container.get_definition(process_id) proc = pd() proc.__name__ = proc.id runtime.addtoproperty('processes', proc) proc.defineGraph(pd) proc.execution_context.add_involved_entity('site', context) proc.execution_context.add_created_entity('service', service) proc.execute() context.modified_at = datetime.datetime.now(tz=pytz.UTC) service.reindex() return {}
def start(self, context, request, appstruct, **kw): root = getSite() comment = appstruct['_object_data'] user = get_current(request) mask = user.get_mask(root) author = mask if appstruct.get('anonymous', False) and mask else user channel = root.channel #TODO get if channel: channel.addtoproperty('comments', comment) channel.add_comment(comment) comment.state = PersistentList(['published']) comment.reindex() comment.format(request) comment.setproperty('author', author) grant_roles(user=author, roles=(('Owner', comment), )) if appstruct.get('associated_contents', []): comment.set_associated_contents( appstruct['associated_contents'], user) self._alert_users(context, request, author, comment, channel) context.reindex() user.set_read_date(channel, datetime.datetime.now(tz=pytz.UTC)) return {}
def start(self, context, request, appstruct, **kw): root = getSite() user = get_current() proposal = context.proposal working_group = proposal.working_group author = working_group.get_member(user) copy_of_amendment = copy(context, (proposal, 'amendments'), omit=('created_at', 'modified_at', 'explanations')) copy_of_amendment.set_data(appstruct) copy_of_amendment.text = html_diff_wrapper.normalize_text( copy_of_amendment.text) copy_of_amendment.setproperty('originalentity', context) copy_of_amendment.state = PersistentList(['draft']) copy_of_amendment.setproperty('author', author) localizer = request.localizer copy_of_amendment.title = localizer.translate( _('Amended version ')) + str( getattr(proposal, '_amendments_counter', 1)) grant_roles(user=author, roles=(('Owner', copy_of_amendment), )) copy_of_amendment.text_diff = get_text_amendment_diff( proposal, copy_of_amendment) copy_of_amendment.reindex() proposal._amendments_counter = getattr(proposal, '_amendments_counter', 1) + 1 context.reindex() request.registry.notify(ActivityExecuted(self, [context], author)) return {'newcontext': copy_of_amendment}
def start(self, context, request, appstruct, **kw): person = appstruct['_object_data'] root = context principals = find_service(root, 'principals') name = person.first_name + ' ' +person.last_name name = name_chooser(name=name) principals['users'][name] = person grant_roles(person, roles=('Member',)) grant_roles(person, (('Owner', person),)) person.state.append('active') localizer = request.localizer for i in range(root.tokens_mini): token = Token(title='Token_'+str(i)) person.addtoproperty('tokens_ref', token) person.addtoproperty('tokens', token) token.setproperty('owner', person) subject = CONFIRMATION_SUBJECT.format(novaideo_title=request.root.title) message = CONFIRMATION_MESSAGE.format( person=person, user_title=localizer.translate( _(getattr(person, 'user_title', ''))), login_url=request.resource_url(root, '@@login'), novaideo_title=request.root.title) mailer_send(subject=subject, recipients=[person.email], body=message) person.reindex() return {'person': person}
def start(self, context, request, appstruct, **kw): user = get_current() report = appstruct['_object_data'] context.addtoproperty('censoring_reason', report) grant_roles(user=user, roles=(('Owner', report), )) report.setproperty('author', user) report.reindex() context_oid = get_oid(context) dace_index = find_catalog('dace') dace_container_oid = dace_index['container_oid'] query = dace_container_oid.eq(context_oid) reports = find_entities( interfaces=[ISReport], metadata_filter={ 'states': ['pending']}, add_query=query) for report in reports: report.state = PersistentList(['processed']) report.reindex() context.init_len_current_reports() adapter = get_current_registry().queryAdapter( context, ISignalableObject) if adapter is not None: context.state.remove('reported') adapter.censor(request) return {}
def start(self, context, request, appstruct, **kw): root = getSite() comment = appstruct['_object_data'] user = get_current(request) mask = user.get_mask(root) author = mask if appstruct.get('anonymous', False) and mask else user channel = root.channel #TODO get if channel: channel.addtoproperty('comments', comment) channel.add_comment(comment) comment.state = PersistentList(['published']) comment.reindex() comment.format(request) comment.setproperty('author', author) grant_roles(user=author, roles=(('Owner', comment), )) if appstruct.get('associated_contents', []): comment.set_associated_contents( appstruct['associated_contents'], user) self._alert_users(context, request, author, comment, channel) context.reindex() user.set_read_date(channel, datetime.datetime.now(tz=pytz.UTC)) return {}
def start(self, context, request, appstruct, **kw): root = getSite() user = get_current() proposal = context.proposal working_group = proposal.working_group author = working_group.get_member(user) copy_of_amendment = copy(context, (proposal, 'amendments'), omit=('created_at', 'modified_at', 'explanations')) copy_of_amendment.set_data(appstruct) copy_of_amendment.text = html_diff_wrapper.normalize_text( copy_of_amendment.text) copy_of_amendment.setproperty('originalentity', context) copy_of_amendment.state = PersistentList(['draft']) copy_of_amendment.setproperty('author', author) localizer = request.localizer copy_of_amendment.title = localizer.translate( _('Amended version ')) + str(getattr(proposal, '_amendments_counter', 1)) grant_roles(user=author, roles=(('Owner', copy_of_amendment), )) copy_of_amendment.text_diff = get_text_amendment_diff( proposal, copy_of_amendment) copy_of_amendment.reindex() proposal._amendments_counter = getattr( proposal, '_amendments_counter', 1) + 1 context.reindex() request.registry.notify(ActivityExecuted(self, [context], author)) return {'newcontext': copy_of_amendment}
def start(self, context, request, appstruct, **kw): root = getSite() user = get_current(request) mask = user.get_mask(root) if hasattr(user, 'get_mask') else user author = mask if appstruct.get('anonymous', False) and mask else user answer = appstruct['_object_data'] context.addtoproperty('answers', answer) answer.init_title() answer.format(request) answer.state = PersistentList(['published']) answer.reindex() if getattr(answer, 'option', None) is not None: answer.question.add_selected_option(user, answer.option) transaction.commit() grant_roles(user=author, roles=(('Owner', answer), )) answer.setproperty('author', author) if appstruct.get('associated_contents', []): answer.set_associated_contents(appstruct['associated_contents'], author) self._alert_users(context, request, author, answer) context.reindex() user.set_read_date(answer.channel, datetime.datetime.now(tz=pytz.UTC)) return {}
def start(self, context, request, appstruct, **kw): new_smart_folder = appstruct['_object_data'] context.addtoproperty('smart_folders', new_smart_folder) grant_roles(roles=(('Owner', new_smart_folder), )) new_smart_folder.setproperty('author', get_current()) new_smart_folder.state = PersistentList(['private']) new_smart_folder.reindex() return {'newcontext': new_smart_folder}
def start(self, context, request, appstruct, **kw): new_smart_folder = appstruct['_object_data'] context.addtoproperty('smart_folders', new_smart_folder) grant_roles(roles=(('Owner', new_smart_folder), )) new_smart_folder.setproperty('author', get_current()) new_smart_folder.state = PersistentList(['private']) new_smart_folder.reindex() return {'newcontext': new_smart_folder}
def start(self, context, request, appstruct, **kw): data = context.get_data(PersonSchema()) annotations = getattr(context, 'annotations', {}).get(PROCESS_HISTORY_KEY, []) data.update({'password': appstruct['password']}) data = { key: value for key, value in data.items() if value is not colander.null } data.pop('title') root = getSite() locale = my_locale_negotiator(request) data['locale'] = locale person = Person(**data) principals = find_service(root, 'principals') name = person.first_name + ' ' + person.last_name users = principals['users'] name = name_chooser(users, name=name) users[name] = person grant_roles(person, roles=('Member', )) grant_roles(person, (('Owner', person), )) person.state.append('active') oid = str(get_oid(context)) get_socket().send_pyobj(('stop', 'persistent_' + oid)) organization = context.organization if organization: person.setproperty('organization', organization) root.delfromproperty('preregistrations', context) person.init_annotations() person.annotations.setdefault(PROCESS_HISTORY_KEY, PersistentList()).extend(annotations) person.reindex() request.registry.notify(ActivityExecuted(self, [person], person)) root.addtoproperty('news_letter_members', person) newsletters = root.get_newsletters_automatic_registration() email = getattr(person, 'email', '') if newsletters and email: for newsletter in newsletters: newsletter.subscribe(person.first_name, person.last_name, email) transaction.commit() if email: mail_template = root.get_mail_template('registration_confiramtion', person.user_locale) subject = mail_template['subject'].format( novaideo_title=root.title) recipientdata = get_user_data(person, 'recipient', request) message = mail_template['template'].format( login_url=request.resource_url(root, '@@login'), novaideo_title=root.title, **recipientdata) alert('email', [root.get_site_sender()], [email], subject=subject, body=message) return {'person': person}
def start(self, context, request, appstruct, **kw): root = getSite() newfile = appstruct['_object_data'] root.addtoproperty('files', newfile) newfile.state.append('published') grant_roles(roles=(('Owner', newfile), )) newfile.setproperty('author', get_current()) newfile.reindex() return {'newcontext': newfile}
def start(self, context, request, appstruct, **kw): root = getSite() newadvertising = appstruct['_object_data'] root.addtoproperty('advertisings', newadvertising) newadvertising.state.append('editable') grant_roles(roles=(('Owner', newadvertising), )) newadvertising.setproperty('author', get_current()) newadvertising.reindex() return {'newcontext': newadvertising}
def start(self, context, request, appstruct, **kw): root = getSite() newadvertising = appstruct['_object_data'] root.addtoproperty('advertisings', newadvertising) newadvertising.state.append('editable') grant_roles(roles=(('Owner', newadvertising), )) newadvertising.setproperty('author', get_current()) newadvertising.reindex() return {'newcontext': newadvertising}
def start(self, context, request, appstruct, **kw): root = getSite() author = get_current() artists, new_artists = extract_artists(appstruct.pop('artists', []), request) appstruct.pop('artists_ids') schedules = [] new_venues = [] for schedule_data in appstruct['schedules']: schedule = schedule_data[OBJECT_DATA] venue_data = schedule_data.get('venue', None) if venue_data: venue, is_new = extract_venue(venue_data, request) if is_new: new_venues.append(venue) schedule.setproperty('venue', venue) schedules.append(schedule) cultural_event = appstruct[OBJECT_DATA] cultural_event.setproperty('schedules', []) root.addtoproperty('cultural_events', cultural_event) for schedule in schedules: schedule.state = PersistentList(['created']) root.addtoproperty('schedules', schedule) cultural_event.addtoproperty('schedules', schedule) schedule.reindex_dates() if schedule_expired(schedule): schedule.state.append('archived') schedule.reindex() group_venues(new_venues, request) cultural_event.state.append('editable') grant_roles(roles=(('Owner', cultural_event), )) cultural_event.setproperty('original', context) cultural_event.setproperty('author', author) cultural_event.addtoproperty('contributors', author) cultural_event.add_contributors(context.contributors) cultural_event.addtoproperty('contributors', author) remove_addresses_coordinates(new_venues) cultural_event.setproperty('artists', artists) cultural_event.set_metadata(appstruct) cultural_event.reindex() send_creation_mails(cultural_event, request, author) source = request.GET.get('source', '') if source: source_culturalevent = get_obj(int(source)) if source_culturalevent: root.delfromproperty('cultural_events', source_culturalevent) new_objects = new_venues new_objects.extend(new_artists) new_objects.append(cultural_event) request.registry.notify(ActivityExecuted(self, new_objects, author)) return {'newcontext': cultural_event}
def start(self, context, request, appstruct, **kw): root = getSite() newfile = appstruct['_object_data'] root.addtoproperty('files', newfile) newfile.state.append('published') grant_roles(roles=(('Owner', newfile), )) newfile.setproperty('author', get_current()) newfile.reindex() self.newcontext = newfile return {}
def start(self, context, request, appstruct, **kw): root = getSite() user = get_current() newfile = appstruct['_object_data'] root.addtoproperty('files', newfile) newfile.state = PersistentList(['draft']) grant_roles(user=user, roles=(('Owner', newfile), )) newfile.setproperty('author', user) newfile.reindex() request.registry.notify(ActivityExecuted(self, [newfile], user)) return {'newcontext': newfile}
def start(self, context, request, appstruct, **kw): root = getSite() user = get_current() newfile = appstruct['_object_data'] root.addtoproperty('files', newfile) newfile.state = PersistentList(['draft']) grant_roles(user=user, roles=(('Owner', newfile), )) newfile.setproperty('author', user) newfile.reindex() request.registry.notify(ActivityExecuted(self, [newfile], user)) return {'newcontext': newfile}
def start(self, context, request, appstruct, **kw): data = context.get_data(PersonSchema()) annotations = getattr(context, 'annotations', {}).get(PROCESS_HISTORY_KEY, []) data.update({'password': appstruct['password']}) data = {key: value for key, value in data.items() if value is not colander.null} data.pop('title') root = getSite() locale = my_locale_negotiator(request) data['locale'] = locale person = Person(**data) principals = find_service(root, 'principals') name = person.first_name + ' ' + person.last_name users = principals['users'] name = name_chooser(users, name=name) users[name] = person grant_roles(person, roles=('Member',)) grant_roles(person, (('Owner', person),)) person.state.append('active') oid = str(get_oid(context)) get_socket().send_pyobj(('stop', 'persistent_' + oid)) organization = context.organization if organization: person.setproperty('organization', organization) root.delfromproperty('preregistrations', context) person.init_annotations() person.annotations.setdefault( PROCESS_HISTORY_KEY, PersistentList()).extend(annotations) person.reindex() request.registry.notify(ActivityExecuted(self, [person], person)) root.addtoproperty('news_letter_members', person) newsletters = root.get_newsletters_automatic_registration() email = getattr(person, 'email', '') if newsletters and email: for newsletter in newsletters: newsletter.subscribe( person.first_name, person.last_name, email) transaction.commit() if email: mail_template = root.get_mail_template( 'registration_confiramtion', person.user_locale) subject = mail_template['subject'].format( novaideo_title=root.title) recipientdata = get_user_data(person, 'recipient', request) message = mail_template['template'].format( login_url=request.resource_url(root, '@@login'), novaideo_title=root.title, **recipientdata) alert('email', [root.get_site_sender()], [email], subject=subject, body=message) return {'person': person}
def start(self, context, request, appstruct, **kw): root = getSite() user = get_current() newbrief = appstruct['_object_data'] root.addtoproperty('reviews', newbrief) newbrief.state.append('draft') grant_roles(user=user, roles=(('Owner', newbrief), )) newbrief.setproperty('author', user) newbrief.set_metadata(appstruct) newbrief.reindex() request.registry.notify(ActivityExecuted(self, [newbrief], user)) return {'newcontext': newbrief}
def start(self, context, request, appstruct, **kw): root = getSite() newgame = appstruct['_object_data'] root.addtoproperty('games', newgame) newgame.state.append('editable') grant_roles(roles=(('Owner', newgame), )) newgame.setproperty('author', get_current()) newgame.start_date = newgame.start_date.replace(tzinfo=None) newgame.end_date = newgame.end_date.replace(tzinfo=None) self.process.execution_context.add_created_entity('game', newgame) newgame.reindex() return {'newcontext': newgame}
def start(self, context, request, appstruct, **kw): root = getSite() new_smart_folder = appstruct['_object_data'] root.addtoproperty('smart_folders', new_smart_folder) context.addtoproperty('children', new_smart_folder) grant_roles(roles=(('Owner', new_smart_folder), )) new_smart_folder.setproperty('author', get_current()) new_smart_folder.state = PersistentList(['private']) new_smart_folder.filters = PersistentList( getattr(new_smart_folder, 'filters', [])) new_smart_folder.reindex() return {'newcontext': new_smart_folder}
def start(self, context, request, appstruct, **kw): root = getSite() new_smart_folder = appstruct['_object_data'] root.addtoproperty('smart_folders', new_smart_folder) context.addtoproperty('children', new_smart_folder) grant_roles(roles=(('Owner', new_smart_folder), )) new_smart_folder.setproperty('author', get_current()) new_smart_folder.state = PersistentList(['private']) new_smart_folder.filters = PersistentList( getattr(new_smart_folder, 'filters', [])) new_smart_folder.reindex() return {'newcontext': new_smart_folder}
def start(self, context, request, appstruct, **kw): root = getSite() user = get_current() newbrief = appstruct['_object_data'] root.addtoproperty('reviews', newbrief) newbrief.state.append('draft') grant_roles(user=user, roles=(('Owner', newbrief), )) newbrief.setproperty('author', user) newbrief.set_metadata(appstruct) newbrief.reindex() request.registry.notify(ActivityExecuted(self, [newbrief], user)) return {'newcontext': newbrief}
def start(self, context, request, appstruct, **kw): root = getSite() newgame = appstruct['_object_data'] root.addtoproperty('games', newgame) newgame.state.append('editable') grant_roles(roles=(('Owner', newgame), )) newgame.setproperty('author', get_current()) newgame.start_date = newgame.start_date.replace(tzinfo=None) newgame.end_date = newgame.end_date.replace(tzinfo=None) self.process.execution_context.add_created_entity('game', newgame) newgame.reindex() return {'newcontext': newgame}
def evolve_roles_comments(root, registry): from novaideo.views.filter import find_entities from novaideo.content.interface import IComment from dace.objectofcollaboration.principal.util import grant_roles contents = find_entities(interfaces=[IComment]) for comment in contents: author = comment.author comment.edited = False comment.pinned = False grant_roles(user=author, roles=(('Owner', comment), )) comment.reindex() log.info('Comments evolved.')
def start(self, context, request, appstruct, **kw): site = get_site_folder(True) group = appstruct['_object_data'] root = context root.addtoproperty('groups', group) new_roles = [(r, site) for r in list(appstruct['roles'])] grant_roles(group, new_roles) if 'Member' in new_roles: grant_roles(group, ('Member', )) group.state.append('private') group.reindex() return {}
def start(self, context, request, appstruct, **kw): site = get_site_folder(True) group = appstruct['_object_data'] root = context root.addtoproperty('groups', group) new_roles = [(r, site) for r in list(appstruct['roles'])] grant_roles(group, new_roles) if 'Member' in new_roles: grant_roles(group, ('Member',)) group.state.append('private') group.reindex() return {}
def add_nia_bot(root): nia_picture = os.path.join(os.path.dirname(__file__), 'static', 'images', 'nia.png') picture = None if os.path.exists(nia_picture): buf = open(nia_picture, mode='rb') picture = File(fp=buf, filename='nia', mimetype='image/png') nia = root['principals']['users'].get('nia', None) if nia is None: nia = Bot(title='Nia', picture=picture) root['principals']['users']['nia'] = nia grant_roles(nia, ('Bot', ), root=root)
def start(self, context, request, appstruct, **kw): user = get_current() report = appstruct['_object_data'] context.addtoproperty('reports', report) report.state.append('pending') context.state.append('reported') grant_roles(user=user, roles=(('Owner', report), )) report.setproperty('author', user) report.reindex() context.reindex() if hasattr(user, 'add_report'): user.add_report(context) root = getSite() # get random moderators ballots = [ b for b in getattr(context, 'ballot_processes', []) if b.id == 'contentreportdecision' ] if not ballots: moderators = get_random_users(ELECTORS_NB, [context.author]) if not moderators: ignore(context, request, root) else: author = context.author def before_start(b_proc): b_proc.content = context start_ballot(context, author, request, root, moderators, 'contentreportdecision', before_start=before_start, initiator=user, subjects=[context]) alert_data = get_ballot_alert_data(context, request, root, moderators) alert_data.update(get_user_data(author, 'recipient', request)) mail_template = root.get_mail_template('alert_report', author.user_locale) if mail_template: subject = mail_template['subject'].format(**alert_data) message = mail_template['template'].format(**alert_data) alert('email', [root.get_site_sender()], [author.email], subject=subject, body=message) return {}
def start(self, context, request, appstruct, **kw): root = getSite() user = get_current() venue = appstruct['_object_data'] root.addtoproperty('venues', venue) venue.state.append('editable') grant_roles(user=user, roles=(('Owner', venue), )) venue.setproperty('author', user) venue.add_contributors([user]) venue.set_metadata(appstruct) venue.hash_venue_data() venue.reindex() request.registry.notify(ActivityExecuted(self, [venue], user)) return {'newcontext': venue}
def start(self, context, request, appstruct, **kw): root = getSite() user = get_current() venue = appstruct['_object_data'] root.addtoproperty('venues', venue) venue.state.append('editable') grant_roles(user=user, roles=(('Owner', venue), )) venue.setproperty('author', user) venue.add_contributors([user]) venue.set_metadata(appstruct) venue.hash_venue_data() venue.reindex() request.registry.notify(ActivityExecuted(self, [venue], user)) return {'newcontext': venue}
def start(self, context, request, appstruct, **kw): root = getSite() user = get_current(request) mask = user.get_mask(root) if hasattr(user, 'get_mask') else user author = mask if appstruct.get('anonymous', False) and mask else user question = appstruct['_object_data'] root.merge_keywords(question.keywords) root.addtoproperty('questions', question) question.state.extend(['pending', 'published']) grant_roles(user=author, roles=(('Owner', question), )) question.setproperty('author', author) if isinstance(context, Comment): related_contents = [question] content = context.subject correlations = connect( content, list(related_contents), {'comment': context.comment, 'type': context.intention}, author, ['transformation'], CorrelationType.solid) for correlation in correlations: correlation.setproperty('context', context) context_type = context.__class__.__name__.lower() # Add Nia comment alert_comment_nia( question, request, root, internal_kind=InternalAlertKind.content_alert, subject_type='question', alert_kind='transformation', content=context ) # Add Nia comment alert_comment_nia( context, request, root, internal_kind=InternalAlertKind.content_alert, subject_type=context_type, alert_kind='transformation_question', question=question ) question.format(request) question.reindex() request.registry.notify(ActivityExecuted(self, [question], author)) request.registry.notify(ObjectPublished(object=question)) return {'newcontext': question}
def start(self, context, request, appstruct, **kw): root = getSite() user = get_current() artist = appstruct['_object_data'] root.addtoproperty('artists', artist) artist.state.append('editable') grant_roles(user=user, roles=(('Owner', artist), )) artist.setproperty('author', user) artist.add_contributors([user]) artist.set_metadata(appstruct) artist.hash_picture_fp() artist.hash_artist_data() artist.reindex() request.registry.notify(ActivityExecuted(self, [artist], user)) return {'newcontext': artist}
def start(self, context, request, appstruct, **kw): user = get_current(request) event = appstruct['_object_data'] context.addtoproperty('events', event) event.state.append('published') event.tree = getattr(context, 'tree', DEFAULT_TREE) event.title = getattr(context, 'title', 'Discussion event') grant_roles(user=user, roles=(('Owner', event), )) event.setproperty('author', user) timezone = pytz.timezone(event.tzname) event.date = event.date.replace(tzinfo=timezone) event.init_published_at() event.format(request) event.reindex() return {'newcontext': event}
def _set(self, new_managers): old_managers = self.managers managers_toadd = [u for u in new_managers if u not in old_managers] managers_todel = [u for u in old_managers if u not in new_managers] for manager in managers_todel: revoke_roles(manager, (('OrganizationResponsible', self), )) for manager in managers_toadd: for current_org in manager.managed_organization: revoke_roles(manager, (('OrganizationResponsible', current_org), )) grant_roles(user=manager, roles=(('OrganizationResponsible', self), ))