Esempio n. 1
0
 def pending_join(self):
     """Returns True if the user is pending approval to join a group."""
     for group in Group.all():
         for user in group.pending_users:
             if user.user_id() == self.user_id:
                 return True
     return False
Esempio n. 2
0
    def get(self):
        # fix any references to non-existance objects
        users = User.all()
        for user in users:
            try:
                project = user.project
            except db.ReferencePropertyResolveError as e:
                logging.info(
                    'Resolving property resolve error on user.project for {}\'s project {}'
                    .format(user.key(), user._project))
                user.project = None
                user.put()

            try:
                group = user.group
            except db.ReferencePropertyResolveError as e:
                user.group = None
                user.put()

        groups = Group.all()
        for group in groups:
            try:
                project = group.project
            except db.ReferencePropertyResolveError as e:
                group.project = None
                group.put()

        projects = Project.all()
        for project in projects:
            volunteers = project.volunteers.filter('group =', None)
            num_volunteers = volunteers.count()
            groups = project.groups
            num_group_volunteers = sum([group.slots for group in groups])
            spots = num_volunteers + num_group_volunteers
            project.setSpotsTaken(spots, True)

        groups = Group.all()
        for group in groups:
            members = group.members
            num_members = members.count()
            group.spots_taken = num_members
            group.put()

        return self.redirect('/admin', {'error': '1'})
Esempio n. 3
0
def index(request):
    groups = Group.all().filter("owner =", request.user).fetch(100)
    if len(groups) == 0:
        message = _("You don't own any group yet.")
    else:
        message = _("The groups you own.")
    return render_to_response('groupy/index.html', {
        'message': message,
        'groups': groups
    })
Esempio n. 4
0
    def post(self):
        verification = self.request.get('verification')
        if verification != 'close group registration':
            raise ValidationError(
                errors={'verification': 'Insufficient verification'})

        groups = Group.all()
        for group in groups:
            group.slots = group.spots_taken
            group.put()

        return self.redirect('/admin/groups', {'error': '3'})
Esempio n. 5
0
    def get(self):
        groups = Group.all()
        leaders_emails = ','.join(
            map(
                lambda user: user.email,
                User.all().filter('is_group_leader = ',
                                  True).filter('group !=', None)))

        return {
            'groups': groups,
            'Group': Group,
            'leaders_emails': leaders_emails,
        }
Esempio n. 6
0
def getGroups(id):
	query = Group.all()
	if id:
		query = query.filter('parentGroup =', db.Key(id)) # XXX exceptions
	query.order('name')
	groups = []
	for g in query.fetch(1000):
		gg = g.json()
		try:
			gg['parent'] = g.parentGroup.key().__str__() if g.parentGroup else None
		except Exception:
			continue
		groups.append(gg)
	return groups
Esempio n. 7
0
 def get(self):
     stats = {}
     stats['volunteers'] = {}
     stats['volunteers']['count'] = 0
     stats['volunteers']['count_has_group'] = 0
     stats['volunteers']['count_no_group'] = 0
     stats['volunteers']['count_has_project'] = 0
     stats['volunteers']['count_no_project'] = 0
     users = User.all()
     for user in users:
         stats['volunteers']['count'] += 1
         if user.group == None:
             stats['volunteers']['count_no_group'] += 1
         else:
             stats['volunteers']['count_has_group'] += 1
         if user.project == None:
             stats['volunteers']['count_no_project'] += 1
         else:
             stats['volunteers']['count_has_project'] += 1
     stats['groups'] = {}
     stats['groups']['count'] = Group.all().count()
     stats['groups']['total_spots'] = sum(
         map(lambda group: group.slots, Group.all()))
     stats['groups']['spots_taken'] = sum(
         map(lambda group: group.spots_taken, Group.all()))
     stats['groups']['unused_spots'] = sum(
         map(lambda group: group.spots_taken, Group.all()))
     stats['projects'] = {}
     stats['projects']['count'] = Project.all().count()
     stats['projects']['total_spots'] = sum(
         map(lambda project: project.max_volunteers, Project.all()))
     stats['projects']['spots_taken'] = sum(
         map(lambda project: project.spots_taken, Project.all()))
     stats['projects']['unused_spots'] = stats['projects'][
         'total_spots'] - stats['projects']['spots_taken']
     return stats
Esempio n. 8
0
 def get(self, username):
   if username == 'mine':
     user = User.get_current_user()
   else:
     user = get1_by_property(User, 'name', username)
   
   if user:
     balances = self.get_balances(user)
     self.generate('user_profile.html',
                   {'user':user,
                    'balances':balances,
                    'groups':Group.all(),
                    'vendors':Vendor.all()})    
   else:
     self.redirect('/oops/invalid_user')
Esempio n. 9
0
    def __init__(self, parent, *args, **kwargs):
        QDialog.__init__(self, parent, *args, **kwargs)

        vbox = QVBoxLayout()
        vbox.addWidget(FBoxTitle(u"<h3>Ajout de contact </h3>"))
        self.combo_grp = QComboBox()
        groups = Group()
        groups.name = "Aucun"

        self.list_grp = Group.all()
        self.list_grp.append(groups)
        self.list_grp.reverse()

        for index in self.list_grp:
            sentence = u"%(name)s" % {'name': index.name}
            self.combo_grp.addItem(sentence)

        self.full_name = LineEdit()
        self.msg_e_or_c = FLabel("")
        self.full_name.setFont(QFont("Arial", 16))
        self.phone_number = IntLineEdit()
        self.phone_number.setInputMask("D9.99.99.99")
        self.phone_number.setAlignment(Qt.AlignCenter)
        self.phone_number.setFont(QFont("Arial", 16))

        send_butt = Button(u"Enregistrer")
        send_butt.clicked.connect(self.save_form)
        cancel_but = Button(u"Fermer")
        cancel_but.clicked.connect(self.cancel)

        formbox = QGridLayout()
        formbox.addWidget(FLabel(u"Groupes:"), 0, 0)
        formbox.addWidget(self.combo_grp, 1, 0)
        formbox.addWidget(FLabel(u"Nom complèt: "), 0, 1)
        formbox.addWidget(self.full_name, 1, 1)
        formbox.addWidget(FLabel(u"Numéro: "), 0, 2)
        formbox.addWidget(self.phone_number, 1, 2)
        formbox.addWidget(send_butt, 2, 1)
        formbox.addWidget(cancel_but, 2, 0)
        formbox.addWidget(self.msg_e_or_c, 3, 0, 3, 2)

        vbox.addLayout(formbox)
        self.setLayout(vbox)
Esempio n. 10
0
    def __init__(self, parent, *args, **kwargs):
        QDialog.__init__(self, parent, *args, **kwargs)

        vbox = QVBoxLayout()
        vbox.addWidget(FBoxTitle(u"<h3>Ajout de contact </h3>"))
        self.combo_grp = QComboBox()
        groups = Group()
        groups.name = "Aucun"

        self.list_grp = Group.all()
        self.list_grp.append(groups)
        self.list_grp.reverse()

        for index in self.list_grp:
            sentence = u"%(name)s" % {'name': index.name}
            self.combo_grp.addItem(sentence)

        self.full_name = LineEdit()
        self.msg_e_or_c = FLabel("")
        self.full_name.setFont(QFont("Arial", 16))
        self.phone_number = IntLineEdit()
        self.phone_number.setInputMask("D9.99.99.99")
        self.phone_number.setAlignment(Qt.AlignCenter)
        self.phone_number.setFont(QFont("Arial", 16))

        send_butt = Button(u"Enregistrer")
        send_butt.clicked.connect(self.save_form)
        cancel_but = Button(u"Fermer")
        cancel_but.clicked.connect(self.cancel)

        formbox = QGridLayout()
        formbox.addWidget(FLabel(u"Groupes:"), 0, 0)
        formbox.addWidget(self.combo_grp, 1, 0)
        formbox.addWidget(FLabel(u"Nom complèt: "), 0, 1)
        formbox.addWidget(self.full_name, 1, 1)
        formbox.addWidget(FLabel(u"Numéro: "), 0, 2)
        formbox.addWidget(self.phone_number, 1, 2)
        formbox.addWidget(send_butt, 2, 1)
        formbox.addWidget(cancel_but, 2, 0)
        formbox.addWidget(self.msg_e_or_c, 3, 0, 3, 2)

        vbox.addLayout(formbox)
        self.setLayout(vbox)
Esempio n. 11
0
  def post(self):
    data = UserForm(data=self.request.POST)

    logging.info(self.request.POST)
    
    if not data.is_valid():
      self.redirect('/u/register')
    else:
      user = data.save(commit=False)

      if not exists_by_property(User, 'name', user.name):
        user.who = users.get_current_user()
        user.put()
        for group in self.request.POST.getall('group'):
          user.join(Group.get_by_id(group))
        self.redirect('/u/%s/profile' % user.name)
      else:
        logging.debug('user %s already exists!' % user.name)
        self.generate('add_user.html',
                      {'form':data,
                       'groups':Group.all()})
Esempio n. 12
0
 def get(self):
     """Displays a list of all groups."""
     return self.render('groups_list', {'groups': Group.all()})
Esempio n. 13
0
 def get(self):
     return {
         'groups': Group.all().order('name'),
     }
Esempio n. 14
0
 def group(self):
     """The group the user belongs to, or None."""
     for group in Group.all():
         if self.gae_user in group.members:
             return group
     return None
Esempio n. 15
0
 def get(self):
     return self.render('groups_list', { 'groups': Group.all() })
Esempio n. 16
0
 def get(self):
   form = UserForm()
   self.generate('add_user.html',
                 {'form':form,
                  'groups':Group.all()})
Esempio n. 17
0
 def get(self):
   self.generate("list_group.html",
                 {"groups":list(Group.all())})
Esempio n. 18
0
 def post(self):
     groups = Group.all()
     for group in groups:
         group.delete()