예제 #1
0
 def get_summary(self):
     return dict (
         total_members_active = User.selectBy(active=1).count(),
         loc_members_active = User.selectBy(active=1, homeplace=self.location).count(),
         loc_members_not_active = User.selectBy(active=0, homeplace=self.location).count(),
         new_members = User.select( \
             AND(User.q.active == 1, User.q.homeplaceID == self.location.id, User.q.created >= self.start, User.q.created <= self.end)).count(),
         revenue = sum(ru.effectivecost for ru in self.usages),
         currency = self.location.currency,
         )
예제 #2
0
파일: users.py 프로젝트: mightymau/hubspace
def filter_members(location, text_filter, type, active_only, start, end, override_user=None):

    if type == "member_search":

        text_filter = "%" + " ".join(text_filter.split()).replace("'","\\'") + "%"

        if override_user:
            user_locs = Location.select()
        else:
            user_locs = user_locations(identity.current.user, ['member', 'host'])

        if user_locs:
            if location:
                relevant_groups = location.groups
                relevant_user_ids = tuple((ug.userID for ug in UserGroup.select(IN(UserGroup.q.group, tuple(relevant_groups)))))
                display_name_clause = iLIKE(User.q.display_name, text_filter)
                user_id_clause = IN(User.q.id, relevant_user_ids) # so that we select all members even those with homehub as this hub
                if active_only:
                    user_active_clause = (User.q.active == 1)
                    users = User.select(AND(display_name_clause, user_id_clause, user_active_clause))
                else:
                    users = User.select(AND(display_name_clause, user_id_clause))

            else:
                display_name_clause = iLIKE(User.q.display_name, text_filter)
                if active_only:
                    user_active_clause = (User.q.active == 1)
                    users = User.select(AND(display_name_clause, user_active_clause))
                else:
                    users = User.select(display_name_clause)

            users = users.orderBy('display_name')
        else:
            users = []

    elif type == 'rfid_member_search':
        users = User.select(AND(User.q.rfid == text_filter))

    elif type == 'fulltext_member_search':
        users = hubspace.search.do_search(text_filter)
        if location:
            user_ids = tuple(user.id for user in users)
            if not user_ids:
                users = []
            else:
                users = User.select(AND(IN(User.q.id, user_ids), User.q.homeplaceID==location.id))

    if start != None and end != None:
        users = users[start:end]

    try:
        webapi = User.selectBy(first_name="web", last_name="api")[0]
        if webapi in users and not identity.has_permission("superuser"):
            users.remove(webapi)
    except:
        pass
    return users
예제 #3
0
파일: login.py 프로젝트: mightymau/hubspace
def resetPassword(*args,**kwargs):
    key=kwargs['key']
    result = User.selectBy(reminderkey=key)
    if result.count()==0:
        return dict(message=_("The confirmation key is wrong - maybe you need to check your email?"),
                    showform=False)
    else:
        user=result[0]
        user.reminderkey = md5.new(str(random.random())).hexdigest()	    
        newpassword = md5.new(str(random.random())).hexdigest()[:8]
        user.password = newpassword 
        mailtext = """
Dear Member,

Your new password for The Hub is: %(newpassword)s

For your convenience and security please login and change the password at the earliest possible opportunity. To do so click 'edit' on the top section of your profile page and enter a new password in the 'password' and 'confirm password' fields.
You can login at:
%(url)s

The Hub Team
"""%({'newpassword':newpassword, 'url':user.homeplace.url})
    sendmail.sendmail(user.email_address, user.homeplace.name.lower().replace(' ', '') +'*****@*****.**','The Hub | new password',mailtext,[])
    return dict(message=_("""The new password was sent to you."""), showform=False)