def execute(cls, options): provider = ProjectRegistrationProvider.get() for proj in options.projects: proj = cls.get_project(proj) if proj: log.info('Purging %s%s. Reason: %s', proj.neighborhood.url_prefix, proj.shortname, options.reason) provider.purge_project(proj, disable_users=options.disable_users, reason=options.reason)
def search_projects(self, q=None, f=None, page=0, limit=None, **kw): fields = [('shortname', 'shortname'), ('name', 'full name')] add_fields = aslist(tg.config.get('search.project.additional_search_fields'), ',') r = self._search(M.Project, fields, add_fields, q, f, page, limit, **kw) r['search_results_template'] = 'allura:templates/site_admin_search_projects_results.html' r['additional_display_fields'] = \ aslist(tg.config.get('search.project.additional_display_fields'), ',') r['provider'] = ProjectRegistrationProvider.get() return r
def search_projects(self, q=None, f=None, page=0, limit=None, **kw): fields = [('shortname', 'shortname'), ('name', 'full name')] add_fields = aslist( tg.config.get('search.project.additional_search_fields'), ',') r = self._search(M.Project, fields, add_fields, q, f, page, limit, **kw) r['search_results_template'] = 'allura:templates/site_admin_search_projects_results.html' r['additional_display_fields'] = \ aslist(tg.config.get('search.project.additional_display_fields'), ',') r['provider'] = ProjectRegistrationProvider.get() return r
def parse_projects(self, projects): """Takes projects from user input and returns a list of tuples (input, project, error)""" provider = ProjectRegistrationProvider.get() projects = projects.splitlines() projects = self.remove_comments(projects) parsed_projects = [] for input in projects: if input.strip(): p, error = provider.project_from_url(input.strip()) parsed_projects.append((input, p, error)) return parsed_projects
def deserialize_project(datum, projectSchema, nbhd): # type: (dict, NewProjectSchema, Neighborhood) -> object p = projectSchema.deserialize(datum) p = Object(p) # convert from dict to something with attr-access # generate a shortname, and try to make it unique if not p.shortname: max_shortname_len = 15 # maybe more depending on NeighborhoodProjectShortNameValidator impl, but this is safe shortname = orig_shortname = make_shortname(p.name, max_shortname_len) for i in range(1, 10): try: ProjectRegistrationProvider.get( ).shortname_validator.to_python(shortname, neighborhood=nbhd) except formencode.api.Invalid: if len(orig_shortname) == max_shortname_len - 1: shortname = orig_shortname + str(i) else: shortname = orig_shortname[:max_shortname_len - 1] + str(i) else: # we're good! break p.shortname = shortname return p
def execute(cls, options): provider = ProjectRegistrationProvider.get() auth_provider = AuthenticationProvider.get(Request.blank('/')) for proj in options.projects: proj = cls.get_project(proj) if proj: if proj.is_user_project: # disable user as well user = proj.user_project_of if user: auth_provider.disable_user(user, audit=False) msg = u'Account disabled because user-project was specified for deletion. Reason: {}'.format( options.reason) log_entry = h.auditlog_user(msg, user=user) session(log_entry).flush(log_entry) else: log.info('Could not find associated user for user-project %s', proj.shortname) log.info('Purging %s Reason: %s', proj.url(), options.reason) provider.purge_project(proj, disable_users=options.disable_users, reason=options.reason)
def execute(cls, options): provider = ProjectRegistrationProvider.get() auth_provider = AuthenticationProvider.get(Request.blank('/')) for proj in options.projects: proj = cls.get_project(proj) if proj: if proj.is_user_project: # disable user as well user = proj.user_project_of if user: auth_provider.disable_user(user, audit=False) msg = u'Account disabled because user-project was specified for deletion. Reason: {}'.format( options.reason) log_entry = h.auditlog_user(msg, user=user) session(log_entry).flush(log_entry) else: log.info( 'Could not find associated user for user-project %s', proj.shortname) log.info('Purging %s Reason: %s', proj.url(), options.reason) provider.purge_project(proj, disable_users=options.disable_users, reason=options.reason)
def deserialize(self, node, cstruct): if cstruct is col.null: return col.null return ProjectRegistrationProvider.get().shortname_validator.to_python(cstruct, check_allowed=not self.update, neighborhood=self.nbhd)
def __init__(self, source): super(ProjectImportForm, self).__init__() provider = ProjectRegistrationProvider.get() self.add_field('tools', ToolsValidator(source)) self.add_field('project_shortname', provider.shortname_validator) self.allow_extra_fields = True