def getUploadForms(name, label, help_text): dynafields = [{ 'name': name, 'base': forms.FileField, 'label': label, 'required': False, 'help_text': help_text, }] dynaproperties = params_helper.getDynaFields(dynafields) add_form = dynaform.newDynaForm(dynabase=base_form, dynaproperties=dynaproperties) dynaproperties = { 'name': django_fields.CharField(label='Name', required=False, widget=widgets.HTMLTextWidget), 'uploaded': django_fields.CharField(label='Uploaded on', required=False, widget=widgets.PlainTextWidget), 'size': django_fields.CharField(label='Size', required=False, widget=widgets.PlainTextWidget), } edit_form = dynaform.extendDynaForm( add_form, dynaproperties=dynaproperties, dynainclude=['name', 'size', 'uploaded', name]) return add_form, edit_form
def getUploadForms(name, label, help_text): dynafields = [ {"name": name, "base": forms.FileField, "label": label, "required": False, "help_text": help_text} ] dynaproperties = params_helper.getDynaFields(dynafields) add_form = dynaform.newDynaForm(dynabase=base_form, dynaproperties=dynaproperties) dynaproperties = { "name": django_fields.CharField(label="Name", required=False, widget=widgets.HTMLTextWidget), "uploaded": django_fields.CharField( label="Uploaded on", required=False, widget=widgets.PlainTextWidget ), "size": django_fields.CharField(label="Size", required=False, widget=widgets.PlainTextWidget), } edit_form = dynaform.extendDynaForm( add_form, dynaproperties=dynaproperties, dynainclude=["name", "size", "uploaded", name] ) return add_form, edit_form
def __init__(self, params=None): """Defines the fields and methods required for the base View class to provide the user with list, public, create, edit and delete views. Params: params: a dict with params for this View """ rights = access.GSoCChecker(params) rights['create'] = ['checkIsDeveloper'] rights['edit'] = [('checkCanStudentPropose', ['scope_path', False]), ('checkRoleAndStatusForStudentProposal', [['proposer'], ['active'], ['new', 'pending', 'invalid']])] rights['delete'] = ['checkIsDeveloper'] rights['private'] = [ ('checkRoleAndStatusForStudentProposal', [['proposer', 'org_admin', 'mentor', 'host'], ['active', 'inactive'], ['new', 'pending', 'accepted', 'rejected', 'invalid']])] rights['show'] = ['checkIsStudentProposalPubliclyVisible'] rights['comment'] = [ ('checkRoleAndStatusForStudentProposal', [['org_admin', 'mentor', 'host'], ['active', 'inactive'], ['new', 'pending', 'accepted', 'rejected', 'invalid']])] rights['list'] = ['checkIsDeveloper'] rights['list_orgs'] = [ ('checkIsStudent', ['scope_path', ['active']]), ('checkCanStudentPropose', ['scope_path', False])] rights['list_self'] = [ ('checkIsStudent', ['scope_path', ['active', 'inactive']])] rights['apply'] = [ ('checkIsStudent', ['scope_path', ['active']]), ('checkCanStudentPropose', ['scope_path', True])] rights['review'] = [ ('checkIsBeforeEvent', ['accepted_students_announced_deadline', None, program_logic.logic]), ('checkRoleAndStatusForStudentProposal', [['org_admin', 'mentor', 'host'], ['active'], ['new', 'pending', 'accepted', 'invalid']])] new_params = {} new_params['logic'] = student_proposal_logic.logic new_params['rights'] = rights new_params['name'] = "Student Proposal" new_params['url_name'] = "gsoc/student_proposal" new_params['module_package'] = 'soc.modules.gsoc.views.models' new_params['sidebar_grouping'] = 'Students' new_params['scope_view'] = student_view new_params['scope_redirect'] = redirects.getCreateRedirect new_params['no_create_with_key_fields'] = True patterns = [ (r'^%(url_name)s/(?P<access_type>apply)/%(scope)s$', 'soc.modules.gsoc.views.models.%(module_name)s.apply', 'Create a new %(name)s'), (r'^%(url_name)s/(?P<access_type>list_self)/%(scope)s$', 'soc.modules.gsoc.views.models.%(module_name)s.list_self', 'List my %(name_plural)s'), (r'^%(url_name)s/(?P<access_type>list_orgs)/%(scope)s$', 'soc.modules.gsoc.views.models.%(module_name)s.list_orgs', 'List my %(name_plural)s'), (r'^%(url_name)s/(?P<access_type>review)/%(key_fields)s$', 'soc.modules.gsoc.views.models.%(module_name)s.review', 'Review %(name)s'), (r'^%(url_name)s/(?P<access_type>public)/%(key_fields)s$', 'soc.modules.gsoc.views.models.%(module_name)s.public', 'Public view for %(name)s'), (r'^%(url_name)s/(?P<access_type>private)/%(key_fields)s$', 'soc.modules.gsoc.views.models.%(module_name)s.private', 'Private view of %(name)s'), (r'^%(url_name)s/(?P<access_type>comment)/%(key_fields)s$', 'soc.modules.gsoc.views.models.%(module_name)s.comment', 'Comment view of %(name)s'), ] new_params['extra_django_patterns'] = patterns new_params['extra_dynaexclude'] = ['org', 'program', 'score', 'status', 'mentor', 'link_id', 'possible_mentors'] new_params['create_extra_dynaproperties'] = { 'content': forms.fields.CharField(required=True, widget=widgets.FullTinyMCE(attrs={'rows': 25, 'cols': 100})), 'scope_path': forms.CharField(widget=forms.HiddenInput, required=True), 'organization': forms.CharField(label='Organization Link ID', required=True), 'clean_abstract': cleaning.clean_content_length('abstract'), 'clean_content': cleaning.clean_html_content('content'), 'clean_organization': cleaning.clean_link_id('organization'), 'clean_additional_info': cleaning.clean_url('additional_info'), 'clean': cleaning.validate_student_proposal('organization', 'scope_path', student_logic, org_logic), } new_params['edit_extra_dynaproperties'] = { 'organization': forms.CharField(label='Organization Link ID', widget=widgets.ReadOnlyInput), 'link_id': forms.CharField(widget=forms.HiddenInput) } new_params['comment_template'] = 'soc/student_proposal/comment.html' new_params['edit_template'] = 'soc/student_proposal/edit.html' new_params['private_template'] = 'soc/student_proposal/private.html' new_params['review_template'] = 'soc/student_proposal/review.html' new_params['public_template'] = 'soc/student_proposal/public.html' new_params['review_after_deadline_template'] = \ 'soc/student_proposal/review_after_deadline.html' new_params['public_field_extra'] = lambda entity: { "student": entity.scope.name(), "organization_name": entity.org.name, } new_params['public_field_keys'] = [ "title", "student", "organization_name", "last_modified_on", ] new_params['public_field_names'] = [ "Title", "Student", "Organization Name", "Last Modified On", ] params = dicts.merge(params, new_params) super(View, self).__init__(params=params) # create the special form for students dynafields = [ {'name': 'organization', 'base': forms.CharField, 'label': 'Organization Link ID', 'widget': widgets.ReadOnlyInput(), 'required': False, }, ] dynaproperties = params_helper.getDynaFields(dynafields) student_create_form = dynaform.extendDynaForm( dynaform=self._params['create_form'], dynaproperties=dynaproperties) self._params['student_create_form'] = student_create_form # create the special form for public review base_fields = [ {'name': 'comment', 'base': forms.CharField, 'widget': widgets.FullTinyMCE(attrs={'rows': 10, 'cols': 40}), 'label': 'Comment', 'required': False, 'example_text': 'Caution, you will not be able to edit your comment!', }, ] dynafields = [field.copy() for field in base_fields] dynaproperties = params_helper.getDynaFields(dynafields) dynaproperties['clean_comment'] = cleaning.clean_html_content('comment') public_review_form = dynaform.newDynaForm(dynamodel=None, dynabase=helper.forms.BaseForm, dynainclude=None, dynaexclude=None, dynaproperties=dynaproperties) self._params['public_review_form'] = public_review_form # create the special form for mentors when the scoring is locked # this fields is used by the on-page JS base_fields.append( {'name': 'public', 'base': forms.BooleanField, 'label': 'Review visible to Student', 'initial': False, 'required': False, 'help_text': 'By ticking this box the score will not be assigned, ' 'and the review will be visible to the student.', }) dynafields = [field.copy() for field in base_fields] dynaproperties = params_helper.getDynaFields(dynafields) dynaproperties['clean_comment'] = cleaning.clean_html_content('comment') locked_review_form = dynaform.newDynaForm(dynamodel=None, dynabase=helper.forms.BaseForm, dynainclude=None, dynaexclude=None, dynaproperties=dynaproperties) self._params['locked_review_form'] = locked_review_form # create the form for mentors when the scoring is unlocked base_fields.append( {'name': 'score', 'base': forms.ChoiceField, 'label': 'Score', 'initial': 0, 'required': False, 'passthrough': ['initial', 'required', 'choices'], 'choices': [(-4,'-4'), (-3,'-3'), (-2,'-2'), (-1,'-1'), (0,'No score'), (1,'1'), (2,'2'), (3,'3'), (4,'4')] }) dynafields = [field.copy() for field in base_fields] dynaproperties = params_helper.getDynaFields(dynafields) dynaproperties['clean_comment'] = cleaning.clean_html_content('comment') mentor_review_form = dynaform.newDynaForm(dynamodel=None, dynabase=helper.forms.BaseForm, dynainclude=None, dynaexclude=None, dynaproperties=dynaproperties) self._params['mentor_review_form'] = mentor_review_form self._show_review_not_appeared_msg = False
'required': False, 'passthrough': ['min_value', 'required', 'help_text'], }, {'name': 'mentor', 'base': forms.ChoiceField, 'passthrough': ['initial', 'required', 'choices'], 'label': 'Assign Mentor', 'choices': choices, 'required': False, 'help_text': 'Choose the mentor you would like to assign to this ' 'Proposal. Choose "No mentor" if you don\'t want any ' 'mentor assigned.' }, ] dynaproperties = params_helper.getDynaFields(dynafields) dynaproperties['clean_comment'] = cleaning.clean_html_content('comment') form = dynaform.extendDynaForm( dynaform=params['mentor_review_form'], dynaproperties=dynaproperties) else: # the current user is not an org admin if entity.org.scoring_disabled: # reviews are disabled, don't show score field form = params['locked_review_form'] else: # reviews are enabled, show the score field form = params['mentor_review_form']
def _enableMentorManagement(self, entity, params, context): """Sets the data required to manage mentors for a StudentProject. Args: entity: StudentProject entity to manage params: params dict for the manage view context: context for the manage view """ context['can_manage_mentors'] = True # get all mentors for this organization fields = {'scope': entity.scope, 'status': 'active'} mentors = mentor_logic.getForFields(fields) choices = [(mentor.link_id,'%s (%s)' %(mentor.name(), mentor.link_id)) for mentor in mentors] # create the form that org admins will use to reassign a mentor dynafields = [ {'name': 'mentor_id', 'base': forms.ChoiceField, 'label': 'Primary Mentor', 'required': True, 'passthrough': ['required', 'choices', 'label'], 'choices': choices, },] dynaproperties = params_helper.getDynaFields(dynafields) mentor_edit_form = dynaform.newDynaForm( dynabase = params['dynabase'], dynaproperties = dynaproperties, ) params['mentor_edit_form'] = mentor_edit_form additional_mentors = entity.additional_mentors # we want to show the names of the additional mentors in the context # therefore they need to be resolved to entities first additional_mentors_context = [] for mentor_key in additional_mentors: mentor_entity = mentor_logic.getFromKeyName( mentor_key.id_or_name()) additional_mentors_context.append(mentor_entity) context['additional_mentors'] = additional_mentors_context # all mentors who are not already an additional mentor or # the primary mentor are allowed to become an additional mentor possible_additional_mentors = [m for m in mentors if (m.key() not in additional_mentors) and (m.key() != entity.mentor.key())] # create the information to be shown on the additional mentor form additional_mentor_choices = [ (mentor.link_id,'%s (%s)' %(mentor.name(), mentor.link_id)) for mentor in possible_additional_mentors] dynafields = [ {'name': 'mentor_id', 'base': forms.ChoiceField, 'label': 'Co-Mentor', 'required': True, 'passthrough': ['required', 'choices', 'label'], 'choices': additional_mentor_choices, },] dynaproperties = params_helper.getDynaFields(dynafields) additional_mentor_form = dynaform.newDynaForm( dynabase = params['dynabase'], dynaproperties = dynaproperties, ) params['additional_mentor_form'] = additional_mentor_form
def __init__(self, params=None): """Defines the fields and methods required for the base View class to provide the user with list, public, create, edit and delete views. Params: params: a dict with params for this View """ rights = access.Checker(params) rights['create'] = ['checkIsDeveloper'] rights['edit'] = [('checkCanStudentPropose', ['scope_path', False]), ('checkRoleAndStatusForStudentProposal', [['proposer'], ['active'], ['new', 'pending', 'invalid']])] rights['delete'] = ['checkIsDeveloper'] rights['show'] = [ ('checkRoleAndStatusForStudentProposal', [['proposer', 'org_admin', 'mentor', 'host'], ['active', 'inactive'], ['new', 'pending', 'accepted', 'rejected', 'invalid']])] rights['list'] = ['checkIsDeveloper'] rights['list_orgs'] = [ ('checkIsStudent', ['scope_path', ['active']]), ('checkCanStudentPropose', ['scope_path', False])] rights['list_self'] = [ ('checkIsStudent', ['scope_path', ['active', 'inactive']])] rights['apply'] = [ ('checkIsStudent', ['scope_path', ['active']]), ('checkCanStudentPropose', ['scope_path', True])] rights['review'] = [('checkRoleAndStatusForStudentProposal', [['org_admin', 'mentor', 'host'], ['active'], ['new', 'pending', 'accepted', 'rejected', 'invalid']])] new_params = {} new_params['logic'] = soc.logic.models.student_proposal.logic new_params['rights'] = rights new_params['name'] = "Student Proposal" new_params['url_name'] = "student_proposal" new_params['sidebar_grouping'] = 'Students' new_params['scope_view'] = student_view new_params['scope_redirect'] = redirects.getCreateRedirect new_params['no_create_with_key_fields'] = True new_params['list_key_order'] = ['title', 'abstract', 'content', 'additional_info', 'created_on', 'last_modified_on'] patterns = [ (r'^%(url_name)s/(?P<access_type>apply)/%(scope)s$', 'soc.views.models.%(module_name)s.apply', 'Create a new %(name)s'), (r'^%(url_name)s/(?P<access_type>list_self)/%(scope)s$', 'soc.views.models.%(module_name)s.list_self', 'List my %(name_plural)s'), (r'^%(url_name)s/(?P<access_type>list_orgs)/%(scope)s$', 'soc.views.models.%(module_name)s.list_orgs', 'List my %(name_plural)s'), (r'^%(url_name)s/(?P<access_type>review)/%(key_fields)s$', 'soc.views.models.%(module_name)s.review', 'Review %(name)s'), ] new_params['extra_django_patterns'] = patterns new_params['extra_dynaexclude'] = ['org', 'program', 'score', 'status', 'mentor', 'link_id', 'possible_mentors'] new_params['create_extra_dynaproperties'] = { 'content': forms.fields.CharField(required=True, widget=widgets.FullTinyMCE(attrs={'rows': 25, 'cols': 100})), 'scope_path': forms.CharField(widget=forms.HiddenInput, required=True), 'organization': forms.CharField(label='Organization Link ID', required=True), 'clean_abstract': cleaning.clean_content_length('abstract'), 'clean_content': cleaning.clean_html_content('content'), 'clean_organization': cleaning.clean_link_id('organization'), 'clean_additional_info': cleaning.clean_url('additional_info'), 'clean': cleaning.validate_student_proposal('organization', 'scope_path', student_logic, org_logic), } new_params['edit_extra_dynaproperties'] = { 'organization': forms.CharField(label='Organization Link ID', widget=widgets.ReadOnlyInput), 'link_id': forms.CharField(widget=forms.HiddenInput) } new_params['edit_template'] = 'soc/student_proposal/edit.html' new_params['review_template'] = 'soc/student_proposal/review.html' new_params['review_after_deadline_template'] = 'soc/student_proposal/review_after_deadline.html' params = dicts.merge(params, new_params) super(View, self).__init__(params=params) # create the special form for students dynafields = [ {'name': 'organization', 'base': forms.CharField, 'label': 'Organization Link ID', 'widget': widgets.ReadOnlyInput(), 'required': False, }, ] dynaproperties = params_helper.getDynaFields(dynafields) student_create_form = dynaform.extendDynaForm( dynaform=self._params['create_form'], dynaproperties=dynaproperties) self._params['student_create_form'] = student_create_form # create the special form for public review dynafields = [ {'name': 'comment', 'base': forms.CharField, 'widget': widgets.FullTinyMCE(attrs={'rows': 10, 'cols': 40}), 'label': 'Comment', 'required': False, 'example_text': 'Caution, you will not be able to edit your comment!', }, ] dynaproperties = params_helper.getDynaFields(dynafields) dynaproperties['clean_comment'] = cleaning.clean_html_content('comment') public_review_form = dynaform.newDynaForm(dynamodel=None, dynabase=helper.forms.BaseForm, dynainclude=None, dynaexclude=None, dynaproperties=dynaproperties) self._params['public_review_form'] = public_review_form # create the special form for mentors dynafields = [ {'name': 'score', 'base': forms.ChoiceField, 'label': 'Score', 'initial': 0, 'required': False, 'passthrough': ['initial', 'required', 'choices'], 'example_text': 'A score will only be assigned if the review is private!', 'choices': [(-4,'-4: Wow. This. Sucks.'), (-3,'-3: Needs a lot of work'), (-2,'-2: This is bad'), (-1,'-1: I dont like this'), (0,'0: No score'), (1,'1: Might have potential'), (2,'2: Good'), (3,'3: Almost there'), (4,'4: Made. Of. Awesome.')] }, {'name': 'comment', 'base': forms.CharField, 'widget': widgets.FullTinyMCE(attrs={'rows': 10, 'cols': 40}), 'label': 'Comment', 'required': False, 'example_text': 'Caution, you will not be able to edit your review!', }, {'name': 'public', 'base': forms.BooleanField, 'label': 'Review visible to Student', 'initial': False, 'required': False, 'help_text': 'By ticking this box the score will not be assigned, ' 'and the review will be visible to the student.', }, ] dynaproperties = params_helper.getDynaFields(dynafields) dynaproperties['clean_comment'] = cleaning.clean_html_content('comment') mentor_review_form = dynaform.newDynaForm(dynamodel=None, dynabase=helper.forms.BaseForm, dynainclude=None, dynaexclude=None, dynaproperties=dynaproperties) self._params['mentor_review_form'] = mentor_review_form dynafields = [ {'name': 'rank', 'base': forms.IntegerField, 'label': 'Set to rank', 'help_text': 'Set this proposal to the given rank (ignores the given score)', 'example_text': 'A rank will only be assigned if the ' 'review is private!', 'min_value': 1, 'required': False, 'passthrough': ['min_value', 'required', 'help_text'], }, {'name': 'mentor', 'base': widgets.ReferenceField, 'passthrough': ['reference_url', 'required', 'label', 'filter'], 'reference_url': 'mentor', 'filter': ['__org__'], 'label': 'Assign Mentor (Link ID)', 'required': False, 'help_text': 'Fill in the Link ID of the Mentor ' 'you would like to assign to this Proposal. ' 'Leave this box empty if you don\'t want any mentor assigned.', }, ] dynaproperties = params_helper.getDynaFields(dynafields) dynaproperties['clean_comment'] = cleaning.clean_html_content('comment') admin_review_form = dynaform.extendDynaForm(dynaform=mentor_review_form, dynaproperties=dynaproperties) self._params['admin_review_form'] = admin_review_form
def __init__(self, params=None): """Defines the fields and methods required for the program View class to provide the user with list, public, create, edit and delete views. Params: params: a dict with params for this View """ rights = ghop_access.GHOPChecker(params) rights['show'] = ['allow'] rights['create'] = [('checkSeeded', ['checkHasRoleForScope', host_logic.logic])] rights['edit'] = [('checkIsHostForProgram', [ghop_program_logic.logic]) ] rights['delete'] = ['checkIsDeveloper'] rights['accepted_orgs'] = [ ('checkIsAfterEvent', ['student_signup_start', '__all__', ghop_program_logic.logic]) ] rights['task_difficulty'] = [('checkIsHostForProgram', [ghop_program_logic.logic])] rights['task_type'] = [('checkIsHostForProgram', [ghop_program_logic.logic])] rights['difficulty_tag_edit'] = [('checkIsHostForProgram', [ghop_program_logic.logic])] rights['type_tag_edit'] = [('checkIsHostForProgram', [ghop_program_logic.logic])] new_params = {} new_params['logic'] = soc.modules.ghop.logic.models.program.logic new_params['rights'] = rights new_params['name'] = "GHOP Program" new_params['module_name'] = "program" new_params['sidebar_grouping'] = 'Programs' new_params['document_prefix'] = 'ghop_program' new_params['module_package'] = 'soc.modules.ghop.views.models' new_params['url_name'] = 'ghop/program' new_params['extra_dynaexclude'] = ['task_difficulties', 'task_types'] patterns = [] patterns += [ (r'^%(url_name)s/(?P<access_type>assign_task_quotas)/%(key_fields)s$', '%(module_package)s.%(module_name)s.assign_task_quotas', 'Assign task quota limits'), (r'^%(url_name)s/(?P<access_type>task_difficulty)/%(key_fields)s$', '%(module_package)s.%(module_name)s.task_difficulty_edit', 'Edit Task Difficulty Tags'), (r'^%(url_name)s/(?P<access_type>task_type)/%(key_fields)s$', '%(module_package)s.%(module_name)s.task_type_edit', 'Edit Task Type Tags'), (r'^%(url_name)s/(?P<access_type>difficulty_tag_edit)$', '%(module_package)s.%(module_name)s.difficulty_tag_edit', 'Edit a Difficulty Tag'), (r'^%(url_name)s/(?P<access_type>type_tag_edit)$', '%(module_package)s.%(module_name)s.task_type_tag_edit', 'Edit a Task Type Tag'), ] new_params['public_field_keys'] = ["name", "scope_path"] new_params['public_field_names'] = ["Program Name", "Program Owner"] new_params['extra_django_patterns'] = patterns params = dicts.merge(params, new_params, sub_merge=True) super(View, self).__init__(params=params) dynafields = [ { 'name': 'overview_task_difficulties', 'base': forms.CharField, 'label': 'Task Difficulty Levels', 'group': 'Task Settings', 'widget': widgets.ReadOnlyInput(), 'required': False, 'help_text': ugettext('Lists all the difficulty levels that ' 'can be assigned to a task. Edit them ' 'from the Program menu on sidebar.'), }, { 'name': 'overview_task_types', 'base': forms.CharField, 'label': 'Task Type Tags', 'group': 'Task Settings', 'widget': widgets.ReadOnlyInput(), 'required': False, 'help_text': ugettext('Lists all the types a task can be in. ' 'Edit them from the Program menu on sidebar.'), }, ] dynaproperties = params_helper.getDynaFields(dynafields) edit_form = dynaform.extendDynaForm(dynaform=self._params['edit_form'], dynaproperties=dynaproperties) self._params['edit_form'] = edit_form
def __init__(self, params=None): """Defines the fields and methods required for the base View class to provide the user with list, public, create, edit and delete views. Params: params: a dict with params for this View """ rights = access.Checker(params) rights['create'] = ['checkIsDeveloper'] rights['edit'] = [('checkIsMyActiveRole', org_admin_logic.logic)] rights['delete'] = ['checkIsDeveloper'] rights['invite'] = [('checkHasRoleForScope', org_admin_logic.logic)] rights['accept_invite'] = [ ('checkIsMyRequestWithStatus', [['group_accepted']]), ('checkIsNotStudentForProgramOfOrgInRequest', [org_logic.logic, student_logic.logic])] rights['process_request'] = [ ('checkCanProcessRequest', [[org_admin_logic.logic]])] rights['manage'] = [ ('checkIsAllowedToManageRole', [org_admin_logic.logic, org_admin_logic.logic])] new_params = {} new_params['logic'] = soc.logic.models.org_admin.logic new_params['group_logic'] = org_logic.logic new_params['group_view'] = org_view.view new_params['rights'] = rights new_params['scope_view'] = org_view new_params['name'] = "Organization Admin" new_params['module_name'] = "org_admin" new_params['sidebar_grouping'] = 'Organizations' new_params['extra_dynaexclude'] = ['agreed_to_tos', 'program'] new_params['create_dynafields'] = [ {'name': 'scope_path', 'base': forms.fields.CharField, 'widget': forms.HiddenInput, 'required': True, }, {'name': 'admin_agreement', 'base': forms.fields.CharField, 'required': False, 'widget': widgets.AgreementField, 'group': ugettext("5. Terms of Service"), }, {'name': 'agreed_to_admin_agreement', 'base': forms.fields.BooleanField, 'initial': False, 'required':True, 'label': ugettext('I agree to the Admin Agreement'), 'group': ugettext("5. Terms of Service"), }, ] new_params['allow_invites'] = True # only if subclassed, so params is not empty new_params['show_in_roles_overview'] = bool(params) new_params['public_field_keys'] = ['name', 'link_id', 'scope_path'] new_params['public_field_names'] = ["Admin Name", "Admin ID", "Organization ID"] params = dicts.merge(params, new_params) super(View, self).__init__(params=params) params = self.getParams() # register the role with the group_view params['group_view'].registerRole(self._logic.role_name, self) # create and store the special form for invited users dynafields = [ {'name': 'link_id', 'base': forms.CharField, 'widget': widgets.ReadOnlyInput(), 'required': False, }, {'name': 'admin_agreement', 'base': forms.fields.Field, 'required': False, 'widget': widgets.AgreementField, 'group': ugettext("5. Terms of Service"), }, ] dynaproperties = params_helper.getDynaFields(dynafields) invited_create_form = dynaform.extendDynaForm( dynaform = params['create_form'], dynaproperties = dynaproperties) params['invited_create_form'] = invited_create_form # add the contact field to the admin list params['admin_field_keys'].append('can_we_contact_you') params['admin_field_names'].append('Allowed to Contact?') params['admin_field_hidden'].append('can_we_contact_you')
def __init__(self, params=None): """Defines the fields and methods required for the base View class to provide the user with list, public, create, edit and delete views. Params: params: a dict with params for this View """ rights = access.Checker(params) rights['create'] = ['checkIsDeveloper'] rights['edit'] = [('checkHasActiveRoleForScope', soc.logic.models.mentor.logic), ('checkIsMyEntity', [soc.logic.models.mentor.logic, 'user', True])] rights['delete'] = ['checkIsDeveloper'] rights['invite'] = [('checkHasActiveRoleForScope', soc.logic.models.org_admin.logic)] rights['accept_invite'] = [('checkCanCreateFromRequest', 'mentor'), 'checkIsNotStudentForProgramOfOrg'] rights['request'] = ['checkIsNotStudentForProgramOfOrg', ('checkCanMakeRequestToGroup', org_logic)] rights['process_request'] = [ ('checkHasActiveRoleForScope', soc.logic.models.org_admin.logic), ('checkCanProcessRequest', 'mentor')] rights['manage'] = [ ('checkIsAllowedToManageRole', [soc.logic.models.mentor.logic, soc.logic.models.org_admin.logic])] new_params = {} new_params['logic'] = soc.logic.models.mentor.logic new_params['group_logic'] = org_logic.logic new_params['group_view'] = org_view.view new_params['rights'] = rights new_params['pickable'] = True new_params['cache_pick_order'] = ['link_id', 'name'] new_params['scope_view'] = org_view new_params['name'] = "Mentor" new_params['module_name'] = "mentor" new_params['sidebar_grouping'] = 'Organizations' new_params['extra_dynaexclude'] = ['agreed_to_tos', 'program'] new_params['create_dynafields'] = [ {'name': 'scope_path', 'base': forms.fields.CharField, 'widget': forms.HiddenInput, 'required': True, }, {'name': 'mentor_agreement', 'base': forms.fields.CharField, 'required': False, 'widget': widgets.AgreementField, 'group': ugettext("5. Terms of Service"), }, {'name': 'agreed_to_mentor_agreement', 'base': forms.fields.BooleanField, 'initial': False, 'required':True, 'label': ugettext('I agree to the Mentor Agreement'), 'group': ugettext("5. Terms of Service"), }, ] new_params['allow_requests_and_invites'] = True new_params['show_in_roles_overview'] = True params = dicts.merge(params, new_params) super(View, self).__init__(params=params) # register the role with the group_view self._params['group_view'].registerRole(self._params['module_name'], self) # create and store the special form for invited users dynafields = [ {'name': 'link_id', 'base': forms.CharField, 'widget': widgets.ReadOnlyInput(), 'required': False, }, {'name': 'mentor_agreement', 'base': forms.fields.Field, 'required': False, 'widget': widgets.AgreementField, 'group': ugettext("5. Terms of Service"), }, ] dynaproperties = params_helper.getDynaFields(dynafields) invited_create_form = dynaform.extendDynaForm( dynaform=self._params['create_form'], dynaproperties=dynaproperties) self._params['invited_create_form'] = invited_create_form
def __init__(self, params=None): """Defines the fields and methods required for the program View class to provide the user with list, public, create, edit and delete views. Params: params: a dict with params for this View """ rights = gci_access.GCIChecker(params) rights['show'] = ['allow'] rights['create'] = [('checkSeeded', ['checkHasRoleForScope', host_logic])] rights['edit'] = [('checkIsHostForProgram', [gci_program_logic.logic])] rights['delete'] = ['checkIsDeveloper'] rights['assign_task_quotas'] = [('checkIsHostForProgram', [gci_program_logic.logic])] rights['accepted_orgs'] = [('checkIsAfterEvent', [ 'accepted_organization_announced_deadline', '__all__', gci_program_logic.logic ])] rights['list_participants'] = [('checkIsHostForProgram', [gci_program_logic.logic])] rights['task_difficulty'] = [('checkIsHostForProgram', [gci_program_logic.logic])] rights['task_type'] = [('checkIsHostForProgram', [gci_program_logic.logic])] rights['type_tag_edit'] = [('checkIsHostForProgram', [gci_program_logic.logic])] rights['list_self'] = [ ('checkIsAfterEvent', ['tasks_publicly_visible', '__all__', gci_program_logic.logic]), 'checkIsUser' ] rights['list_tasks'] = [ ('checkIsAfterEvent', ['tasks_publicly_visible', '__all__', gci_program_logic.logic]) ] rights['show_ranking'] = ['allow'] rights['request_tasks'] = [ ('checkHasRoleForKeyFieldsAsScope', [gci_student_logic.logic]), ('checkIsAfterEvent', ['tasks_publicly_visible', '__all__', gci_program_logic.logic]), ('checkIsBeforeEvent', ['task_claim_deadline', '__all__', gci_program_logic.logic]) ] new_params = {} new_params['logic'] = soc.modules.gci.logic.models.program.logic new_params['rights'] = rights new_params['name'] = "GCI Program" new_params['module_name'] = "program" new_params['sidebar_grouping'] = 'Programs' new_params['document_prefix'] = 'gci_program' new_params['module_package'] = 'soc.modules.gci.views.models' new_params['url_prefix'] = 'gci' new_params['url_name'] = 'gci/program' new_params['extra_dynaexclude'] = [ 'task_difficulties', 'task_types', 'ranking_schema' ] patterns = [] patterns += [ (r'^%(url_name)s/(?P<access_type>assign_task_quotas)/%(key_fields)s$', '%(module_package)s.%(module_name)s.assign_task_quotas', 'Assign task quota limits'), (r'^%(url_name)s/(?P<access_type>task_difficulty)/%(key_fields)s$', '%(module_package)s.%(module_name)s.task_difficulty_edit', 'Edit Task Difficulty Tags'), (r'^%(url_name)s/(?P<access_type>task_type)/%(key_fields)s$', '%(module_package)s.%(module_name)s.task_type_edit', 'Edit Task Type Tags'), (r'^%(url_name)s/(?P<access_type>type_tag_edit)/%(key_fields)s$', '%(module_package)s.%(module_name)s.task_type_tag_edit', 'Edit a Task Type Tag'), (r'^%(url_name)s/(?P<access_type>list_self)/%(key_fields)s$', '%(module_package)s.%(module_name)s.list_my_tasks', 'List of my starred tasks'), (r'^%(url_name)s/(?P<access_type>list_tasks)/%(key_fields)s$', '%(module_package)s.%(module_name)s.list_tasks', 'List of all Tasks in'), (r'^%(url_name)s/(?P<access_type>show_ranking)/%(key_fields)s$', '%(module_package)s.%(module_name)s.show_ranking', 'Show ranking'), (r'^%(url_name)s/(?P<access_type>request_tasks)/%(key_fields)s$', '%(module_package)s.%(module_name)s.request_tasks', 'Request more tasks'), ] new_params['public_field_keys'] = ["name", "scope_path"] new_params['public_field_names'] = ["Program Name", "Program Owner"] new_params['extra_django_patterns'] = patterns new_params['org_app_logic'] = org_app_logic # used to list the participants in this program new_params['participants_logic'] = [ (gci_org_admin_logic.logic, 'program'), (gci_mentor_logic.logic, 'program'), (gci_student_logic.logic, 'scope') ] params = dicts.merge(params, new_params, sub_merge=True) super(View, self).__init__(params=params) dynafields = [ { 'name': 'overview_task_difficulties', 'base': forms.CharField, 'label': 'Task Difficulty Levels', 'group': 'Task Settings', 'widget': widgets.ReadOnlyInput(), 'required': False, 'help_text': ugettext('Lists all the difficulty levels that ' 'can be assigned to a task. Edit them ' 'from the Program menu on sidebar.'), }, { 'name': 'overview_task_types', 'base': forms.CharField, 'label': 'Task Type Tags', 'group': 'Task Settings', 'widget': widgets.ReadOnlyInput(), 'required': False, 'help_text': ugettext('Lists all the types a task can be in. ' 'Edit them from the Program menu on sidebar.'), }, ] dynaproperties = params_helper.getDynaFields(dynafields) edit_form = dynaform.extendDynaForm(dynaform=self._params['edit_form'], dynaproperties=dynaproperties) self._params['edit_form'] = edit_form
def __init__(self, params=None): """Defines the fields and methods required for the program View class to provide the user with list, public, create, edit and delete views. Params: params: a dict with params for this View """ rights = gci_access.GCIChecker(params) rights['show'] = ['allow'] rights['create'] = [('checkSeeded', ['checkHasRoleForScope', host_logic])] rights['edit'] = [('checkIsHostForProgram', [gci_program_logic.logic])] rights['delete'] = ['checkIsDeveloper'] rights['assign_task_quotas'] = [ ('checkIsHostForProgram', [gci_program_logic.logic])] rights['accepted_orgs'] = [('checkIsAfterEvent', ['accepted_organization_announced_deadline', '__all__', gci_program_logic.logic])] rights['list_participants'] = [('checkIsHostForProgram', [gci_program_logic.logic])] rights['task_difficulty'] = [('checkIsHostForProgram', [gci_program_logic.logic])] rights['task_type'] = [('checkIsHostForProgram', [gci_program_logic.logic])] rights['type_tag_edit'] = [('checkIsHostForProgram', [gci_program_logic.logic])] rights['list_self'] = [('checkIsAfterEvent', ['tasks_publicly_visible', '__all__', gci_program_logic.logic]), 'checkIsUser'] rights['list_tasks'] = [('checkIsAfterEvent', ['tasks_publicly_visible', '__all__', gci_program_logic.logic])] rights['show_ranking'] = ['allow'] rights['request_tasks'] = [ ('checkHasRoleForKeyFieldsAsScope', [gci_student_logic.logic]), ('checkIsAfterEvent', ['tasks_publicly_visible', '__all__', gci_program_logic.logic]), ('checkIsBeforeEvent', ['task_claim_deadline', '__all__', gci_program_logic.logic])] new_params = {} new_params['logic'] = soc.modules.gci.logic.models.program.logic new_params['rights'] = rights new_params['name'] = "GCI Program" new_params['module_name'] = "program" new_params['sidebar_grouping'] = 'Programs' new_params['document_prefix'] = 'gci_program' new_params['module_package'] = 'soc.modules.gci.views.models' new_params['url_prefix'] = 'gci' new_params['url_name'] = 'gci/program' new_params['extra_dynaexclude'] = ['task_difficulties', 'task_types', 'ranking_schema'] patterns = [] patterns += [ (r'^%(url_name)s/(?P<access_type>assign_task_quotas)/%(key_fields)s$', '%(module_package)s.%(module_name)s.assign_task_quotas', 'Assign task quota limits'), (r'^%(url_name)s/(?P<access_type>task_difficulty)/%(key_fields)s$', '%(module_package)s.%(module_name)s.task_difficulty_edit', 'Edit Task Difficulty Tags'), (r'^%(url_name)s/(?P<access_type>task_type)/%(key_fields)s$', '%(module_package)s.%(module_name)s.task_type_edit', 'Edit Task Type Tags'), (r'^%(url_name)s/(?P<access_type>type_tag_edit)/%(key_fields)s$', '%(module_package)s.%(module_name)s.task_type_tag_edit', 'Edit a Task Type Tag'), (r'^%(url_name)s/(?P<access_type>list_self)/%(key_fields)s$', '%(module_package)s.%(module_name)s.list_my_tasks', 'List of my starred tasks'), (r'^%(url_name)s/(?P<access_type>list_tasks)/%(key_fields)s$', '%(module_package)s.%(module_name)s.list_tasks', 'List of all Tasks in'), (r'^%(url_name)s/(?P<access_type>show_ranking)/%(key_fields)s$', '%(module_package)s.%(module_name)s.show_ranking', 'Show ranking'), (r'^%(url_name)s/(?P<access_type>request_tasks)/%(key_fields)s$', '%(module_package)s.%(module_name)s.request_tasks', 'Request more tasks'), ] new_params['public_field_keys'] = ["name", "scope_path"] new_params['public_field_names'] = ["Program Name", "Program Owner"] new_params['extra_django_patterns'] = patterns new_params['org_app_logic'] = org_app_logic # used to list the participants in this program new_params['participants_logic'] = [ (gci_org_admin_logic.logic, 'program'), (gci_mentor_logic.logic, 'program'), (gci_student_logic.logic, 'scope')] params = dicts.merge(params, new_params, sub_merge=True) super(View, self).__init__(params=params) dynafields = [ {'name': 'overview_task_difficulties', 'base': forms.CharField, 'label': 'Task Difficulty Levels', 'group': 'Task Settings', 'widget': widgets.ReadOnlyInput(), 'required': False, 'help_text': ugettext('Lists all the difficulty levels that ' 'can be assigned to a task. Edit them ' 'from the Program menu on sidebar.'), }, {'name': 'overview_task_types', 'base': forms.CharField, 'label': 'Task Type Tags', 'group': 'Task Settings', 'widget': widgets.ReadOnlyInput(), 'required': False, 'help_text': ugettext('Lists all the types a task can be in. ' 'Edit them from the Program menu on sidebar.'), }, ] dynaproperties = params_helper.getDynaFields(dynafields) edit_form = dynaform.extendDynaForm( dynaform=self._params['edit_form'], dynaproperties=dynaproperties) self._params['edit_form'] = edit_form
def __init__(self, params=None): """Defines the fields and methods required for the base View class to provide the user with list, public, create, edit and delete views. Params: params: a dict with params for this View """ rights = access.Checker(params) rights['create'] = ['checkIsDeveloper'] rights['edit'] = [('checkIsMyActiveRole', soc.logic.models.mentor.logic)] rights['delete'] = ['checkIsDeveloper'] rights['invite'] = [('checkHasRoleForScope', soc.logic.models.org_admin.logic)] rights['accept_invite'] = [ ('checkIsMyRequestWithStatus', [['group_accepted']]), ('checkIsNotStudentForProgramOfOrgInRequest',[org_logic.logic, student_logic.logic])] rights['request'] = [ ('checkIsNotStudentForProgramOfOrg', [org_logic.logic, student_logic.logic]), ('checkCanMakeRequestToGroup', org_logic.logic)] rights['process_request'] = [ ('checkCanProcessRequest', [[soc.logic.models.org_admin.logic]])] rights['manage'] = [ ('checkIsAllowedToManageRole', [soc.logic.models.mentor.logic, soc.logic.models.org_admin.logic])] new_params = {} new_params['logic'] = soc.logic.models.mentor.logic new_params['group_logic'] = org_logic.logic new_params['group_view'] = org_view.view new_params['rights'] = rights new_params['pickable'] = True new_params['cache_pick_order'] = ['link_id', 'name'] new_params['scope_view'] = org_view new_params['name'] = "Mentor" new_params['module_name'] = "mentor" new_params['sidebar_grouping'] = 'Organizations' new_params['extra_dynaexclude'] = ['agreed_to_tos', 'program'] new_params['create_dynafields'] = [ {'name': 'scope_path', 'base': forms.fields.CharField, 'widget': forms.HiddenInput, 'required': True, }, {'name': 'mentor_agreement', 'base': forms.fields.CharField, 'required': False, 'widget': widgets.AgreementField, 'group': ugettext("5. Terms of Service"), }, {'name': 'agreed_to_mentor_agreement', 'base': forms.fields.BooleanField, 'initial': False, 'required':True, 'label': ugettext('I agree to the Mentor Agreement'), 'group': ugettext("5. Terms of Service"), }, ] new_params['allow_requests_and_invites'] = True # only if subclassed, so params is not empty new_params['show_in_roles_overview'] = bool(params) new_params['public_field_keys'] = ["name", "link_id", "scope_path"] new_params['public_field_names'] = ["Name", "Mentor ID", "Organization ID"] params = dicts.merge(params, new_params) super(View, self).__init__(params=params) params = self.getParams() # register the role with the group_view params['group_view'].registerRole(self._logic.role_name, self) # create and store the special form for invited users dynafields = [ {'name': 'link_id', 'base': forms.CharField, 'widget': widgets.ReadOnlyInput(), 'required': False, }, {'name': 'mentor_agreement', 'base': forms.fields.Field, 'required': False, 'widget': widgets.AgreementField, 'group': ugettext("5. Terms of Service"), }, ] dynaproperties = params_helper.getDynaFields(dynafields) invited_create_form = dynaform.extendDynaForm( dynaform=params['create_form'], dynaproperties=dynaproperties) params['invited_create_form'] = invited_create_form # add the contact field to the admin list params['admin_field_keys'].append('can_we_contact_you') params['admin_field_names'].append('Allowed to Contact?') params['admin_field_hidden'].append('can_we_contact_you')