示例#1
0
文件: invite.py 项目: adviti/melange
 def _getProfile(self, user_to_invite):
   key_name = '/'.join([
       self.request_data.program.key().name(), user_to_invite.link_id])
   return GCIProfile.get_by_key_name(key_name, parent=user_to_invite)
示例#2
0
文件: invite.py 项目: adviti/melange
 def _getInvitedProfile(self):
   key_name = '/'.join([
       self.data.program.key().name(),
       self.data.invited_user.link_id])
   return GCIProfile.get_by_key_name(key_name, parent=self.data.invited_user)
示例#3
0
  def populate(self, redirect, request, args, kwargs):
    """Populates the fields in the RequestData object.

    Args:
      request: Django HTTPRequest object.
      args & kwargs: The args and kwargs django sends along.
    """
    super(RequestData, self).populate(redirect, request, args, kwargs)

    if kwargs.get('sponsor') and kwargs.get('program'):
      program_key_name = "%s/%s" % (kwargs['sponsor'], kwargs['program'])
      program_key = db.Key.from_path('GCIProgram', program_key_name)
    else:
      program_key = Site.active_program.get_value_for_datastore(self.site)
      program_key_name = program_key.name()

    timeline_key = db.Key.from_path('GCITimeline', program_key_name)

    org_app_key_name = 'gci_program/%s/orgapp' % program_key_name
    org_app_key = db.Key.from_path('OrgAppSurvey', org_app_key_name)

    keys = [program_key, timeline_key, org_app_key]

    self.program, self.program_timeline, self.org_app = db.get(keys)

    if not self.program:
      raise NotFound("There is no program for url '%s'" % program_key_name)

    self.timeline = TimelineHelper(self.program_timeline, self.org_app)

    if kwargs.get('organization'):
      fields = [self.program.key().id_or_name(), kwargs.get('organization')]
      org_key_name = '/'.join(fields)
      self.organization = GCIOrganization.get_by_key_name(org_key_name)
      if not self.organization:
        raise NotFound("There is no organization for url '%s'" % org_key_name)

    if self.user:
      key_name = '%s/%s' % (self.program.key().name(), self.user.link_id)
      self.profile = GCIProfile.get_by_key_name(
          key_name, parent=self.user)

      host_key = GCIProgram.scope.get_value_for_datastore(self.program)
      self.is_host = host_key in self.user.host_for

    if self.profile and self.profile.status != 'invalid':
      org_keys = set(self.profile.mentor_for + self.profile.org_admin_for)

      prop = GCIProfile.student_info
      student_info_key = prop.get_value_for_datastore(self.profile)

      if student_info_key:
        self.student_info = db.get(student_info_key)
        self.is_student = True
      else:
        orgs = db.get(org_keys)

        org_map = self.org_map = dict((i.key(), i) for i in orgs)

        self.mentor_for = org_map.values()
        self.org_admin_for = [org_map[i] for i in self.profile.org_admin_for]

    self.is_org_admin = self.is_host or bool(self.org_admin_for)
    self.is_mentor = self.is_org_admin or bool(self.mentor_for)