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['any_access'] = ['allow'] rights['show'] = [('checkIsSurveyReadable', grading_survey_logic)] rights['create'] = ['checkIsUser'] rights['edit'] = [('checkIsSurveyWritable', grading_survey_logic)] rights['delete'] = ['checkIsDeveloper'] # TODO: fix deletion of Surveys rights['list'] = ['checkDocumentList'] rights['record'] = [('checkHasAny', [ [('checkIsAllowedToViewProjectSurveyRecordAs', [grading_survey_logic, 'mentor', 'id']), ('checkIsSurveyReadable', [grading_survey_logic]), ]])] rights['results'] = ['checkIsUser'] rights['take'] = [('checkIsSurveyTakeable', grading_survey_logic), ('checkIsAllowedToTakeProjectSurveyAs', [grading_survey_logic, 'mentor', 'project'])] new_params = {} new_params['logic'] = grading_survey_logic new_params['rights'] = rights new_params['name'] = "Grading Project Survey" new_params['url_name'] = 'gsoc/grading_project_survey' new_params['module_package'] = 'soc.modules.gsoc.views.models' new_params['survey_take_form'] = GradeSurveyTakeForm new_params['survey_record_form'] = GradeSurveyRecordForm # used for sending reminders new_params['survey_type'] = 'grading' new_params['manage_student_project_heading'] = \ 'soc/grading_project_survey/list/heading_manage_student_project.html' new_params['manage_student_project_row'] = \ 'soc/grading_project_survey/list/row_manage_student_project.html' new_params['public_field_extra'] = lambda entity: { "path": entity.scope_path + '/' + entity.link_id, } new_params['public_field_keys'] = [ "path", "title", "link_id", "is_featured", "link_id", "created", "mofidied", ] new_params['public_field_names'] = [ "Path", "Title", "Link ID", "Featured", "Created By", "Created On", "Modified", ] params = dicts.merge(params, new_params, sub_merge=True) super(View, self).__init__(params=params)
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['any_access'] = ['allow'] rights['show'] = ['allow'] rights['create'] = ['checkIsDeveloper'] rights['edit'] = [('checkHasRoleForKeyFieldsAsScope', org_admin_logic), ('checkGroupIsActiveForLinkId', org_logic)] rights['delete'] = ['checkIsDeveloper'] rights['home'] = ['allow'] rights['public_list'] = ['allow'] rights['apply_mentor'] = ['checkIsUser'] rights['list_requests'] = [('checkHasRoleForKeyFieldsAsScope', org_admin_logic)] rights['list_roles'] = [('checkHasRoleForKeyFieldsAsScope', org_admin_logic)] rights['applicant'] = [('checkIsApplicationAccepted', org_app_logic)] rights['list_proposals'] = [ ('checkHasAny', [[('checkHasRoleForKeyFieldsAsScope', [org_admin_logic, ['active', 'inactive']]), ('checkHasRoleForKeyFieldsAsScope', [mentor_logic, ['active', 'inactive']])]]) ] new_params = {} new_params['logic'] = org_logic new_params['rights'] = rights new_params['scope_view'] = program_view new_params['name'] = "GSoC Organization" new_params['module_name'] = "organization" new_params['sidebar_grouping'] = 'Organizations' new_params['module_package'] = 'soc.modules.gsoc.views.models' new_params['url_name'] = 'gsoc/org' new_params['document_prefix'] = 'gsoc_org' new_params['mentor_role_name'] = 'gsoc_mentor' new_params['mentor_url_name'] = 'gsoc/mentor' new_params['extra_dynaexclude'] = [ 'slots', 'slots_calculated', 'nr_applications', 'nr_mentors' ] params = dicts.merge(params, new_params, sub_merge=True) super(View, self).__init__(params)
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'] = [('checkIsMyActiveRole', student_logic)] rights['delete'] = ['checkIsDeveloper'] rights['apply'] = [ 'checkIsUser', ('checkIsActivePeriod', ['student_signup', 'scope_path', program_logic]), ('checkIsNotParticipatingInProgramInScope', [program_logic, student_logic, org_admin_logic, mentor_logic]), ] rights['manage'] = [('checkIsMyActiveRole', student_logic)] rights['list_projects'] = [('checkHasRoleForScope', [student_logic, ['active', 'inactive']]), ('checkIsAfterEvent', [ 'accepted_students_announced_deadline', 'scope_path', program_logic ])] new_params = {} new_params['logic'] = student_logic new_params['rights'] = rights new_params['group_logic'] = program_logic new_params['group_view'] = program_view.view new_params['scope_view'] = program_view new_params['name'] = "GSoC Student" new_params['module_name'] = "student" new_params['sidebar_grouping'] = 'Students' new_params['module_package'] = 'soc.modules.gsoc.views.models' new_params['url_name'] = 'gsoc/student' patterns = [ (r'^%(url_name)s/(?P<access_type>list_projects)/%(scope)s$', '%(module_package)s.%(module_name)s.list_projects', 'List of my Student Projects') ] new_params['extra_django_patterns'] = patterns params = dicts.merge(params, new_params, sub_merge=True) super(View, self).__init__(params=params)
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'] = [('checkIsMyActiveRole', mentor_logic)] rights['delete'] = ['checkIsDeveloper'] rights['invite'] = [('checkHasRoleForScope', org_admin_logic)] rights['accept_invite'] = [ ('checkIsMyRequestWithStatus', [['group_accepted']]), ('checkIsNotStudentForProgramOfOrgInRequest', [org_logic, student_logic]) ] rights['request'] = [('checkIsNotStudentForProgramOfOrg', [org_logic, student_logic]), ('checkCanMakeRequestToGroup', org_logic)] rights['process_request'] = [('checkCanProcessRequest', [[org_admin_logic]])] rights['manage'] = [('checkIsAllowedToManageRole', [mentor_logic, org_admin_logic])] new_params = {} new_params['logic'] = mentor_logic new_params['group_logic'] = org_logic new_params['group_view'] = org_view.view new_params['rights'] = rights new_params['scope_view'] = org_view new_params['name'] = "GSoC Mentor" new_params['module_name'] = "mentor" new_params['sidebar_grouping'] = 'Organizations' new_params['module_package'] = 'soc.modules.gsoc.views.models' new_params['url_name'] = 'gsoc/mentor' new_params['role'] = 'gsoc/mentor' params = dicts.merge(params, new_params, sub_merge=True) super(View, self).__init__(params)
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['any_access'] = ['allow'] rights['show'] = [('checkIsSurveyReadable', org_app_logic)] rights['create'] = [('checkIsHostForProgramInScope', program_logic)] rights['edit'] = [('checkIsHostForProgramInScope', program_logic)] rights['delete'] = ['checkIsDeveloper'] rights['list'] = ['checkIsDeveloper'] rights['list_self'] = ['checkIsUser'] rights['record'] = [('checkHasAny', [[('checkCanViewOrgAppRecord', [org_app_logic]), ('checkIsSurveyReadable', [org_app_logic])]])] rights['results'] = [('checkIsHostForProgramInScope', program_logic)] rights['review'] = [('checkIsHostForProgramInScope', program_logic), ('checkCanReviewOrgAppRecord', [org_app_logic])] rights['review_overview'] = [('checkIsHostForProgramInScope', program_logic)] rights['take'] = [('checkOrgAppRecordIfPresent', org_app_logic), ('checkIsSurveyTakeable', org_app_logic), ('checkIsNotStudentForProgramInScope', [program_logic, student_logic])] new_params = {} new_params['logic'] = org_app_logic new_params['rights'] = rights new_params['scope_view'] = program_view new_params['name'] = "GSoC Org Application Survey" new_params['url_name'] = 'gsoc/org_app' new_params['module_package'] = 'soc.modules.gsoc.views.models' new_params['module_name'] = 'org_app_survey' new_params['bulk_process_task'] = org_app_survey_tasks.bulk_process params = dicts.merge(params, new_params, sub_merge=True) super(View, self).__init__(params=params)
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['any_access'] = ['allow'] rights['show'] = [('checkIsSurveyReadable', grading_survey_logic)] rights['create'] = ['checkIsUser'] rights['edit'] = [('checkIsSurveyWritable', grading_survey_logic)] rights['delete'] = ['checkIsDeveloper'] # TODO: fix deletion of Surveys rights['list'] = ['checkDocumentList'] rights['record'] = [('checkHasAny', [ [('checkIsAllowedToViewProjectSurveyRecordAs', [grading_survey_logic, 'mentor', 'id']), ('checkIsSurveyReadable', [grading_survey_logic]), ]])] rights['results'] = ['checkIsUser'] rights['take'] = [('checkIsSurveyTakeable', grading_survey_logic), ('checkIsAllowedToTakeProjectSurveyAs', [grading_survey_logic, 'mentor', 'project'])] new_params = {} new_params['logic'] = grading_survey_logic new_params['rights'] = rights new_params['name'] = "Grading Project Survey" new_params['url_name'] = 'gsoc/grading_project_survey' new_params['module_package'] = 'soc.modules.gsoc.views.models' new_params['survey_take_form'] = GradeSurveyTakeForm new_params['survey_record_form'] = GradeSurveyRecordForm # used for sending reminders new_params['survey_type'] = 'grading' params = dicts.merge(params, new_params, sub_merge=True) super(View, self).__init__(params=params)
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['edit'] = [('checkCanEditTimeline', [program_logic])] new_params = {} new_params['logic'] = timeline_logic new_params['rights'] = rights new_params['name'] = "GSoC Timeline" new_params['module_name'] = "timeline" new_params['module_package'] = 'soc.modules.gsoc.views.models' new_params['url_name'] = 'gsoc/timeline' params = dicts.merge(params, new_params, sub_merge=True) super(View, self).__init__(params=params)
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
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['any_access'] = ['allow'] rights['create'] = ['checkIsDeveloper'] rights['edit'] = ['checkIsDeveloper'] rights['delete'] = ['checkIsDeveloper'] rights['show'] = ['allow'] rights['list'] = ['checkIsDeveloper'] rights['manage'] = [('checkHasRoleForScope', [org_admin_logic, ['active', 'inactive']]), ('checkStudentProjectHasStatus', [['accepted', 'failed', 'completed', 'withdrawn']])] rights['manage_overview'] = [('checkHasRoleForScope', [ org_admin_logic, ['active', 'inactive']])] # TODO: lack of better name here! rights['st_edit'] = [ 'checkCanEditStudentProjectAsStudent', ('checkStudentProjectHasStatus', [['accepted', 'completed']]) ] rights['withdraw'] = ['checkIsHostForProgram'] rights['withdraw_project'] = ['checkIsHostForStudentProject', ('checkStudentProjectHasStatus', [['accepted', 'completed']]) ] rights['accept_project'] = ['checkIsHostForStudentProject', ('checkStudentProjectHasStatus', [['withdrawn']]) ] new_params = {} new_params['logic'] = project_logic new_params['rights'] = rights new_params['name'] = "Student Project" new_params['url_name'] = "gsoc/student_project" new_params['module_package'] = 'soc.modules.gsoc.views.models' new_params['sidebar_grouping'] = 'Students' new_params['scope_view'] = org_view new_params['scope_redirect'] = redirects.getCreateRedirect new_params['no_create_with_key_fields'] = True new_params['extra_dynaexclude'] = ['program', 'status', 'link_id', 'mentor', 'additional_mentors', 'student', 'passed_evaluations', 'failed_evaluations'] new_params['create_extra_dynaproperties'] = { 'scope_path': forms.CharField(widget=forms.HiddenInput, required=True), 'public_info': forms.fields.CharField(required=True, widget=widgets.FullTinyMCE(attrs={'rows': 25, 'cols': 100})), 'student_id': forms.CharField(label='Student Link ID', required=True), 'mentor_id': forms.CharField(label='Mentor Link ID', required=True), 'clean_abstract': cleaning.clean_content_length('abstract'), 'clean_public_info': cleaning.clean_html_content('public_info'), 'clean_student': cleaning.clean_link_id('student'), 'clean_mentor': cleaning.clean_link_id('mentor'), 'clean_additional_info': cleaning.clean_url('additional_info'), 'clean_feed_url': cleaning.clean_feed_url, 'clean': cleaning.validate_student_project('scope_path', 'mentor_id', 'student_id') } new_params['edit_extra_dynaproperties'] = { 'link_id': forms.CharField(widget=forms.HiddenInput), } patterns = [ (r'^%(url_name)s/(?P<access_type>manage_overview)/%(scope)s$', 'soc.modules.gsoc.views.models.%(module_name)s.manage_overview', 'Overview of %(name_plural)s to Manage for'), (r'^%(url_name)s/(?P<access_type>manage)/%(key_fields)s$', 'soc.modules.gsoc.views.models.%(module_name)s.manage', 'Manage %(name)s'), (r'^%(url_name)s/(?P<access_type>st_edit)/%(key_fields)s$', 'soc.modules.gsoc.views.models.%(module_name)s.st_edit', 'Edit my %(name)s'), (r'^%(url_name)s/(?P<access_type>withdraw)/(?P<scope_path>%(ulnp)s)/%(lnp)s$', 'soc.modules.gsoc.views.models.%(module_name)s.withdraw', 'Withdraw %(name_plural)s'), (r'^%(url_name)s/(?P<access_type>withdraw_project)/%(key_fields)s$', 'soc.modules.gsoc.views.models.%(module_name)s.withdraw_project', 'Withdraw a %(name)s'), (r'^%(url_name)s/(?P<access_type>accept_project)/%(key_fields)s$', 'soc.modules.gsoc.views.models.%(module_name)s.accept_project', 'Accept a %(name)s'), ] new_params['extra_django_patterns'] = patterns new_params['edit_template'] = 'soc/student_project/edit.html' new_params['manage_template'] = 'soc/student_project/manage.html' new_params['manage_overview_heading'] = \ 'soc/student_project/list/heading_manage.html' new_params['manage_overview_row'] = \ 'soc/student_project/list/row_manage.html' new_params['public_field_extra'] = lambda entity: { "student": entity.student.name(), "mentor": entity.mentor.name(), } new_params['public_field_keys'] = ["student", "title", "mentor", "status"] new_params['public_field_names'] = ["Student", "Title", "Mentor", "Status"] params = dicts.merge(params, new_params) super(View, self).__init__(params=params) # create the form that students will use to edit their projects dynaproperties = { 'public_info': forms.fields.CharField(required=True, widget=widgets.FullTinyMCE(attrs={'rows': 25, 'cols': 100})), 'clean_abstract': cleaning.clean_content_length('abstract'), 'clean_public_info': cleaning.clean_html_content('public_info'), 'clean_additional_info': cleaning.clean_url('additional_info'), 'clean_feed_url': cleaning.clean_feed_url, } student_edit_form = dynaform.newDynaForm( dynabase = self._params['dynabase'], dynamodel = self._params['logic'].getModel(), dynaexclude = self._params['create_dynaexclude'], dynaproperties = dynaproperties, ) self._params['student_edit_form'] = student_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['any_access'] = ['allow'] rights['show'] = [('checkIsSurveyReadable', project_survey_logic)] rights['create'] = ['checkIsUser'] rights['edit'] = [('checkIsSurveyWritable', project_survey_logic)] rights['delete'] = ['checkIsDeveloper'] # TODO: fix deletion of Surveys rights['list'] = ['checkDocumentList'] rights['record'] = [('checkHasAny', [ [('checkIsAllowedToViewProjectSurveyRecordAs', [project_survey_logic, 'student', 'id']), ('checkIsSurveyReadable', [project_survey_logic]), ]])] rights['results'] = ['checkIsUser'] rights['take'] = [('checkIsSurveyTakeable', project_survey_logic), ('checkIsAllowedToTakeProjectSurveyAs', [project_survey_logic, 'student', 'project'])] rights['send_reminder'] = [('checkIsHostForProgramInScope', program_logic)] new_params = {} new_params['logic'] = project_survey_logic new_params['rights'] = rights new_params['name'] = "Project Survey" new_params['url_name'] = 'gsoc/project_survey' new_params['module_package'] = 'soc.modules.gsoc.views.models' new_params['extra_dynaexclude'] = ['taking_access'] new_params['extra_django_patterns'] = [ (r'^%(url_name)s/(?P<access_type>send_reminder)/%(key_fields)s$', '%(module_package)s.%(module_name)s.send_reminder', 'Send Reminder for %(name)s')] new_params['take_template'] = 'soc/project_survey/take.html' # used for sending reminders new_params['survey_type'] = 'project' new_params['reminder_template'] = 'soc/project_survey/reminder.html' new_params['records_field_keys'] = [ 'mentor_id', 'student_id', 'organization' ] new_params['records_field_names'] = [ 'Mentor Link ID', 'Student Link ID', 'Organization' ] new_params['records_field_prefetch'] = ['project', 'org'] # TODO(ljvderijk): If we ever fix the merging of field_extra remove the # taken_by. new_params['records_field_extra'] = lambda entity: { 'mentor_id': entity.project.mentor.link_id, 'student_id': entity.project.student.link_id, 'organization': entity.org.name, 'taken_by': '%s (%s)' %(entity.user.name, entity.user.link_id), } params = dicts.merge(params, new_params, sub_merge=True) super(View, self).__init__(params=params)
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['any_access'] = ['allow'] rights['show'] = ['allow'] rights['create'] = ['checkIsDeveloper'] rights['edit'] = [('checkHasRoleForKeyFieldsAsScope', org_admin_logic), ('checkGroupIsActiveForLinkId', org_logic)] rights['delete'] = ['checkIsDeveloper'] rights['home'] = ['allow'] rights['public_list'] = ['allow'] rights['applicant'] = [('checkIsOrgAppAccepted', org_app_logic)] rights['apply_mentor'] = ['checkIsUser'] rights['list_requests'] = [('checkHasRoleForKeyFieldsAsScope', org_admin_logic)] rights['list_roles'] = [('checkHasRoleForKeyFieldsAsScope', org_admin_logic)] rights['list_proposals'] = [ ('checkHasAny', [[('checkHasRoleForKeyFieldsAsScope', [org_admin_logic, ['active', 'inactive']]), ('checkHasRoleForKeyFieldsAsScope', [mentor_logic, ['active', 'inactive']])]]) ] new_params = {} new_params['logic'] = org_logic new_params['rights'] = rights new_params['scope_view'] = program_view new_params['name'] = "GSoC Organization" new_params['module_name'] = "organization" new_params['sidebar_grouping'] = 'Organizations' new_params['module_package'] = 'soc.modules.gsoc.views.models' new_params['url_name'] = 'gsoc/org' new_params['document_prefix'] = 'gsoc_org' new_params['mentor_role_name'] = 'gsoc_mentor' new_params['mentor_url_name'] = 'gsoc/mentor' new_params['org_admin_role_name'] = 'gsoc_org_admin' patterns = [] patterns += [ (r'^org_tags/(?P<access_type>pick)$', '%(module_package)s.%(module_name)s.pick_suggested_tags', "Pick a list of suggested tags."), ] new_params['extra_django_patterns'] = patterns new_params['extra_dynaexclude'] = [ 'slots', 'slots_calculated', 'nr_applications', 'nr_mentors' ] new_params['create_extra_dynaproperties'] = { 'tags': widgets.ReferenceField( required=False, reference_url='org_tags', label=ugettext('Tags'), help_text=ugettext("A list of comma seperated tags"), example_text="e.g. python, django, appengine", filter=['scope_path'], group="1. Public Info"), 'clean_tags': gsoc_cleaning.cleanTagsList('tags', gsoc_cleaning.COMMA_SEPARATOR), 'contrib_template': forms.fields.CharField(widget=helper.widgets.FullTinyMCE( attrs={ 'rows': 25, 'cols': 100 })), 'clean_contrib_template': cleaning.clean_html_content('contrib_template'), 'clean_facebook': cleaning.clean_url('facebook'), 'clean_twitter': cleaning.clean_url('twitter'), 'clean_blog': cleaning.clean_url('blog'), } new_params['org_app_logic'] = org_app_logic params = dicts.merge(params, new_params, sub_merge=True) super(View, self).__init__(params) self._params['public_field_keys'].append('tags') self._params['public_field_names'].append("Tags") self._params['public_field_extra'] = lambda entity: { 'ideas': lists.urlize(entity.ideas, 'Click Here'), 'tags': entity.tags_string(entity.org_tag), } self._params['select_field_extra'] = self._params['public_field_extra']
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'] = [('checkIsHostForProgramInScope', program_logic)] rights['edit'] = [('checkIsHostForProgramInScope', program_logic)] rights['delete'] = ['checkIsDeveloper'] rights['show'] = [('checkIsHostForProgramInScope', program_logic)] rights['list'] = ['checkIsDeveloper'] rights['records'] = [('checkIsHostForProgramInScope', program_logic)] rights['edit_record'] = [('checkIsHostForProgramInScope', program_logic)] new_params = {} new_params['logic'] = survey_group_logic new_params['rights'] = rights new_params['name'] = "Grading Survey Group" new_params['url_name'] = 'gsoc/grading_survey_group' new_params['module_package'] = 'soc.modules.gsoc.views.models' new_params['sidebar_grouping'] = "Surveys" new_params['scope_view'] = program_view new_params['scope_redirect'] = redirects.getCreateRedirect new_params['no_admin'] = True new_params['no_create_with_key_fields'] = True new_params['create_extra_dynaproperties'] = { 'grading_survey': djangoforms.ModelChoiceField(GradingProjectSurvey, required=True), 'student_survey': djangoforms.ModelChoiceField(ProjectSurvey, required=False), } new_params['extra_dynaexclude'] = [ 'link_id', 'scope', 'scope_path', 'last_update_started', 'last_update_complete' ] new_params['edit_extra_dynaproperties'] = { 'link_id': forms.CharField(widget=forms.HiddenInput), } patterns = [ (r'^%(url_name)s/(?P<access_type>records)/%(key_fields)s$', '%(module_package)s.%(module_name)s.view_records', 'Overview of GradingRecords'), (r'^%(url_name)s/(?P<access_type>edit_record)/%(key_fields)s$', '%(module_package)s.%(module_name)s.edit_record', 'Edit a GradingRecord'), ] new_params['extra_django_patterns'] = patterns new_params[ 'view_records_template'] = 'soc/grading_survey_group/records.html' new_params[ 'records_heading_template'] = 'soc/grading_record/list/heading.html' new_params['records_row_template'] = 'soc/grading_record/list/row.html' new_params['record_edit_template'] = 'soc/grading_record/edit.html' # create the form that will be used to edit a GradingRecord record_logic = survey_group_logic.getRecordLogic() record_edit_form = dynaform.newDynaForm( dynabase=soc.views.helper.forms.BaseForm, dynamodel=record_logic.getModel(), dynaexclude=[ 'grading_survey_group', 'mentor_record', 'student_record', 'project' ], ) new_params['record_edit_form'] = record_edit_form new_params['public_field_keys'] = [ "name", "last_update_started", "last_update_completed" ] new_params['public_field_names'] = [ "Name", "Last update started", "Last update completed" ] new_params['records_field_extra'] = lambda entity: { "project_title": entity.project.title, "student_name": "%s (%s)" % (entity.project.student.name, entity.project.student.link_id), "organization": entity.project.name, "mentor_name": "%s (%s)" % (entity.project.mentor.name, entity.project.mentor.link_id), "final_grade": entity.grade_decision.capitalize(), "mentor_grade": ("Pass" if entity.mentor_record.grade else "Fail") if entity.mentor_record else "Not Available", "student_eval": "Yes" if entity.student_record else "Not Available", } new_params['records_field_keys'] = [ "project_title", "student_name", "organization", "mentor_name", "final_grade", "mentor_grade", "student_eval", "locked" ] new_params['records_field_names'] = [ "Project Name", "Student (link id)", "Organization", "Mentor (link id)", "Final Grade", "Mentor Grade", "Student Eval", "Locked" ] params = dicts.merge(params, new_params) super(View, self).__init__(params=params)
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['any_access'] = ['allow'] rights['show'] = [('checkIsSurveyReadable', project_survey_logic)] rights['create'] = ['checkIsUser'] rights['edit'] = [('checkIsSurveyWritable', project_survey_logic)] rights['delete'] = ['checkIsDeveloper' ] # TODO: fix deletion of Surveys rights['list'] = ['checkDocumentList'] rights['record'] = [('checkHasAny', [[ ('checkIsAllowedToViewProjectSurveyRecordAs', [project_survey_logic, 'student', 'id']), ('checkIsSurveyReadable', [project_survey_logic]), ]])] rights['results'] = ['checkIsUser'] rights['take'] = [('checkIsSurveyTakeable', project_survey_logic), ('checkIsAllowedToTakeProjectSurveyAs', [project_survey_logic, 'student', 'project'])] rights['send_reminder'] = ['checkIsDeveloper' ] #TODO: proper access check new_params = {} new_params['logic'] = project_survey_logic new_params['rights'] = rights new_params['name'] = "Project Survey" new_params['url_name'] = 'gsoc/project_survey' new_params['module_package'] = 'soc.modules.gsoc.views.models' new_params['extra_dynaexclude'] = ['taking_access'] new_params['extra_django_patterns'] = [ (r'^%(url_name)s/(?P<access_type>send_reminder)/%(key_fields)s$', '%(module_package)s.%(module_name)s.send_reminder', 'Send Reminder for %(name)s') ] new_params['take_template'] = 'soc/project_survey/take.html' # used for sending reminders new_params['survey_type'] = 'project' new_params['reminder_template'] = 'soc/project_survey/reminder.html' new_params['manage_student_project_heading'] = \ 'soc/project_survey/list/heading_manage_student_project.html' new_params['manage_student_project_row'] = \ 'soc/project_survey/list/row_manage_student_project.html' new_params['public_field_extra'] = lambda entity: { "path": entity.scope_path + '/' + entity.link_id, "created_by": entity.author.link_id, } new_params['public_field_keys'] = [ "path", "title", "link_id", "is_featured", "created_by", "created", "modified", ] new_params['public_field_names'] = [ "Path", "Title", "Link ID", "Featured", "Created By", "Created On", "Modified", ] params = dicts.merge(params, new_params, sub_merge=True) super(View, self).__init__(params=params)
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['any_access'] = ['allow'] rights['show'] = ['allow'] rights['create'] = [('checkSeeded', ['checkHasRoleForScope', host_logic])] rights['edit'] = [('checkIsHostForProgram', [program_logic])] rights['delete'] = ['checkIsDeveloper'] rights['assign_slots'] = [('checkIsHostForProgram', [program_logic])] rights['slots'] = [('checkIsHostForProgram', [program_logic])] rights['show_duplicates'] = [('checkIsHostForProgram', [program_logic]) ] rights['assigned_proposals'] = [('checkIsHostForProgram', [program_logic])] rights['accepted_orgs'] = [('checkIsAfterEvent', [ 'accepted_organization_announced_deadline', '__all__', program_logic ])] rights['list_projects'] = [('checkIsAfterEvent', [ 'accepted_students_announced_deadline', '__all__', program_logic ])] new_params = {} new_params['logic'] = program_logic new_params['rights'] = rights new_params['name'] = "GSoC Program" new_params['module_name'] = "program" new_params['sidebar_grouping'] = 'Programs' new_params['document_prefix'] = 'gsoc_program' new_params['module_package'] = 'soc.modules.gsoc.views.models' new_params['url_name'] = 'gsoc/program' new_params['extra_dynaexclude'] = ['slots_allocation'] new_params['create_dynafields'] = [ { 'name': 'org_tags', 'base': forms.fields.Field, 'widget': forms.widgets.Textarea, 'label': 'Predefined organization tags', 'required': False, 'group': ugettext('Manage organization tags'), 'help_text': ugettext( 'Enter predefined tags to be used by ' 'organization admins to tag their organizations. Each line ' 'should contain only one tag') }, ] new_params['create_extra_dynaproperties'] = { 'clean_org_tags': cleaning.cleanTagsList('org_tags') } params = dicts.merge(params, new_params, sub_merge=True) super(View, self).__init__(params)
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['any_access'] = ['allow'] rights['create'] = ['checkIsDeveloper'] rights['edit'] = ['checkIsDeveloper'] rights['delete'] = ['checkIsDeveloper'] rights['show'] = ['allow'] rights['list'] = ['checkIsDeveloper'] rights['manage'] = [('checkHasRoleForScope', [org_admin_logic, ['active', 'inactive']]), ('checkStudentProjectHasStatus', [['accepted', 'failed', 'completed', 'withdrawn']])] rights['manage_overview'] = [('checkHasAny', [[ ('checkHasRoleForScope', [org_admin_logic, ['active', 'inactive']]), ('checkHasRoleForScope', [mentor_logic, ['active', 'inactive']]) ]])] # TODO: lack of better name here! rights['st_edit'] = [ 'checkCanEditStudentProjectAsStudent', ('checkStudentProjectHasStatus', [['accepted', 'completed']]) ] rights['overview'] = [('checkIsHostForProgram', [program_logic])] new_params = {} new_params['logic'] = project_logic new_params['rights'] = rights new_params['name'] = 'Student Project' new_params['url_name'] = 'gsoc/student_project' new_params['module_package'] = 'soc.modules.gsoc.views.models' new_params['sidebar_grouping'] = 'Students' new_params['scope_view'] = org_view new_params['scope_redirect'] = redirects.getCreateRedirect new_params['no_create_with_key_fields'] = True new_params['extra_dynaexclude'] = [ 'program', 'status', 'link_id', 'mentor', 'additional_mentors', 'student', 'passed_evaluations', 'failed_evaluations' ] new_params['create_extra_dynaproperties'] = { 'scope_path': forms.CharField(widget=forms.HiddenInput, required=True), 'public_info': forms.fields.CharField(required=True, widget=widgets.FullTinyMCE(attrs={ 'rows': 25, 'cols': 100 })), 'student_id': forms.CharField(label='Student Link ID', required=True), 'mentor_id': forms.CharField(label='Mentor Link ID', required=True), 'clean_abstract': cleaning.clean_content_length('abstract'), 'clean_public_info': cleaning.clean_html_content('public_info'), 'clean_student': cleaning.clean_link_id('student'), 'clean_mentor': cleaning.clean_link_id('mentor'), 'clean_additional_info': cleaning.clean_url('additional_info'), 'clean_feed_url': cleaning.clean_feed_url('feed_url'), 'clean': cleaning.validate_student_project('scope_path', 'mentor_id', 'student_id') } new_params['edit_extra_dynaproperties'] = { 'link_id': forms.CharField(widget=forms.HiddenInput), } patterns = [ (r'^%(url_name)s/(?P<access_type>manage_overview)/%(scope)s$', 'soc.modules.gsoc.views.models.%(module_name)s.manage_overview', 'Overview of %(name_plural)s to Manage for'), (r'^%(url_name)s/(?P<access_type>manage)/%(key_fields)s$', 'soc.modules.gsoc.views.models.%(module_name)s.manage', 'Manage %(name)s'), (r'^%(url_name)s/(?P<access_type>st_edit)/%(key_fields)s$', 'soc.modules.gsoc.views.models.%(module_name)s.st_edit', 'Edit my %(name)s'), (r'^%(url_name)s/(?P<access_type>overview)/(?P<scope_path>%(ulnp)s)/%(lnp)s$', 'soc.modules.gsoc.views.models.%(module_name)s.overview', 'Overview of all %(name_plural)s for'), ] new_params['extra_django_patterns'] = patterns new_params['edit_template'] = 'soc/student_project/edit.html' new_params['manage_template'] = 'soc/student_project/manage.html' new_params['public_field_prefetch'] = ['mentor', 'student', 'scope'] new_params['public_field_extra'] = lambda entity: { 'student': entity.student.name(), 'mentor': entity.mentor.name(), 'org': entity.scope.name, } new_params['public_field_keys'] = [ 'student', 'title', 'mentor', 'org', 'status' ] new_params['public_field_names'] = [ 'Student', 'Title', 'Mentor', 'Organization', 'Status' ] new_params['org_home_field_prefetch'] = ['mentor', 'student'] new_params['org_home_field_extra'] = lambda entity: { 'student': entity.student.name(), 'mentor': ', '.join(mentor.name() for mentor in [entity.mentor] + db.get( entity.additional_mentors)) } new_params['org_home_field_keys'] = [ 'student', 'title', 'mentor', 'status' ] new_params['org_home_field_names'] = [ 'Student', 'Title', 'Mentor', 'Status' ] # define the list redirect action to show the notification new_params['public_row_extra'] = new_params[ 'org_home_row_extra'] = lambda entity: { 'link': redirects.getPublicRedirect(entity, new_params) } new_params['org_home_row_action'] = { 'type': 'redirect_custom', 'parameters': dict(new_window=False), } new_params['admin_field_prefetch'] = ['mentor', 'student', 'scope'] new_params['admin_field_extra'] = lambda entity: { 'student': entity.student.name(), 'mentor': entity.mentor.name(), 'student_id': entity.student.link_id } new_params['admin_field_keys'] = [ 'student', 'title', 'mentor', 'status', 'student_id' ] new_params['admin_field_names'] = [ 'Student', 'Title', 'Mentor', 'Status', 'Student Link ID' ] new_params['admin_field_hidden'] = ['student_id'] new_params['admin_conf_extra'] = { 'multiselect': True, } new_params['admin_button_global'] = [{ 'bounds': [1, 'all'], 'id': 'withdraw', 'caption': 'Withdraw Project', 'type': 'post', 'parameters': { 'url': '', 'keys': ['key'], 'refresh': 'current', } }, { 'bounds': [1, 'all'], 'id': 'accept', 'caption': 'Accept Project', 'type': 'post', 'parameters': { 'url': '', 'keys': ['key'], 'refresh': 'current', } }] params = dicts.merge(params, new_params) super(View, self).__init__(params=params) # create the form that students will use to edit their projects dynaproperties = { 'public_info': forms.fields.CharField(required=True, widget=widgets.FullTinyMCE(attrs={ 'rows': 25, 'cols': 100 })), 'clean_abstract': cleaning.clean_content_length('abstract'), 'clean_public_info': cleaning.clean_html_content('public_info'), 'clean_additional_info': cleaning.clean_url('additional_info'), 'clean_feed_url': cleaning.clean_feed_url('feed_url'), } student_edit_form = dynaform.newDynaForm( dynabase=self._params['dynabase'], dynamodel=self._params['logic'].getModel(), dynaexclude=self._params['create_dynaexclude'], dynaproperties=dynaproperties, ) self._params['student_edit_form'] = student_edit_form