예제 #1
0
파일: login.py 프로젝트: mightymau/hubspace
def requestPassword(*args, **kwargs):
    if kwargs.get('submit') == "Get Password":
        mode = "pword"
    else:
        mode = "uname"            
    email = None
    if 'email' in kwargs:
        email = kwargs['email']
    if not email:
        return dict(message=_("Please enter the email address associated with your account"),
                    showform=True)
    result = User.select(User.q.email_address==email)
            
    try:
        if mode == "uname":
            user = result[0]
            mailtext = "Dear %(first_name)s,\n\nYour username is: %(user_name)s\n\nYou can login at:\n\n%(request_url)s/public/login\n\nIf you have any questions, please contact The Hub's hosting team at %(location_name)[email protected] or phone %(telephone)s.\n\nThank you very much.\n\nThe Hosting Team" %({'first_name':user.first_name, 'request_url':cherrypy.request.base, 'user_name':user.user_name, 'location_name':user.homeplace.name.lower().replace(' ', ''), 'telephone':user.homeplace.telephone})
            
            sendmail.sendmail(email, user.homeplace.name.lower().replace(' ', '') +'*****@*****.**','The Hub | username reminder',mailtext,[])
            return dict(message=_("""A confirmation email was sent to you. """),
                        showform=False)
        else:
            user = result[0]
            reminderkey = md5.new(str(random.random())).hexdigest()
            user.reminderkey = reminderkey
            mailtext = "Dear %(first_name)s,\n\nPlease click the link to reset your password:\n\n %(request_url)s/public/resetPassword?key=%(reminderkey)s\n\nIf you have any questions, please contact The Hub's hosting team at %(location_name)[email protected] or phone %(telephone)s.\n\nThank you very much.\n\nThe Hosting Team" %({'first_name':user.first_name, 'request_url':cherrypy.request.base, 'reminderkey':reminderkey, 'location_name':user.homeplace.name.lower().replace(' ', ''), 'telephone':user.homeplace.telephone})
            
            sendmail.sendmail(email, user.homeplace.name.lower().replace(' ', '') +'*****@*****.**','The Hub | password reminder',mailtext,[])
            return dict(message=_("""A confirmation email was sent to you. """),
                        showform=False)
    except IndexError:            
        return dict(message=_("The email was not correct"),
                               showform=True)
예제 #2
0
def tariff_users(tariff):
    localtime = now(tariff.place)
    if isinstance(tariff, Resource) and tariff.type == 'tariff':
        return User.select(AND(RUsage.q.resourceID == tariff.id,
                               RUsage.q.userID == User.q.id,
                               RUsage.q.start <= localtime,
                               RUsage.q.end_time >= localtime))
        
    raise "input is not a tariff"
예제 #3
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,
         )
예제 #4
0
파일: 021.py 프로젝트: mightymau/hubspace
def setup_microsite_spaces(): 
    """Create the microsites spaces object
    """
    from hubspace.model import ObjectReference, Page, ListItem, PublicSpace, Location, MetaData, MicroSiteSpace, PublicPlace, User
    from hubspace.microSite import microsite_pages, microsite_page_types, microsite_left_page_list, microsite_right_page_list, append_existing_item
    Page.createTable(ifNotExists=True)
    ObjectReference.createTable(ifNotExists=True)
    ListItem.createTable(ifNotExists=True)
    PublicSpace.createTable(ifNotExists=True)
    PublicPlace.createTable(ifNotExists=True)
    MetaData.createTable(ifNotExists=True)
    for user in User.select():
        ObjectReference(**{'object': (user.__class__.__name__, user.id)})

    for loc in Location.select():
        if loc.id == 16 or not loc.url:
            continue
       
        try:
            old_space = MicroSiteSpace.select(AND(MicroSiteSpace.q.locationID==loc.id,
                                                  MicroSiteSpace.q.nextID==None))[0]
        except IndexError:
            print `loc.name` + " doesn't have any spaces to migrate"
            old_space = None
            
        next_item = None
        while old_space:
            new_space = PublicSpace(name=old_space.name, description=old_space.description, image=old_space.image)
            object_ref = ObjectReference.selectBy(object_type='PublicSpace', object_id=new_space.id)[0]
            new_list_item = ListItem(next=next_item, location=loc, active=old_space.active, list_name="spaces_list", object_ref=object_ref)
            next_item = new_list_item
            old_space = old_space.previous

        ObjectReference(**{'object': (loc.__class__.__name__, loc.id)})
        for page, type in microsite_pages.items():
            microsite_page_types[type].create_page(page, loc, {})
        
        kwargs = {'location':loc, 'object_type': Page, 'active': 1}
        for page in microsite_left_page_list:
            kwargs.update({'name':page})
            try:
                page = Page.select(AND(Page.q.location == loc,
                                       IN(Page.q.path_name, [page, page + '.html'])))[0]
                append_existing_item('left_tabs', page, **kwargs)
            except IndexError:
                pass
        for page in microsite_right_page_list: 
            kwargs.update({'name':page})
            try:
                page = Page.select(AND(Page.q.location == loc,
                                       IN(Page.q.path_name, [page, page + '.html'])))[0]
                append_existing_item('right_tabs', page, **kwargs)
            except IndexError:
                pass
예제 #5
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
예제 #6
0
파일: 036.py 프로젝트: mightymau/hubspace
def fix_users_without_object_references():
    from hubspace.model import User, ObjectReference, create_object_reference, Location

    for user in User.select():
        try:
            object_ref = ObjectReference.select(
                AND(ObjectReference.q.object_type == user.__class__.__name__, ObjectReference.q.object_id == user.id)
            )[0]
        except IndexError:
            print "giving " + user.username + "an object reference"
            create_object_reference({"class": User, "id": user.id}, None)

    for loc in Location.select():
        try:
            object_ref = ObjectReference.select(
                AND(ObjectReference.q.object_type == loc.__class__.__name__, ObjectReference.q.object_id == loc.id)
            )[0]
        except IndexError:
            create_object_reference({"class": Location, "id": loc.id}, None)
            print "giving " + loc.name + "an object reference"
예제 #7
0
파일: 022.py 프로젝트: mightymau/hubspace
def setup_display_name_field(): 
    """Create the microsites spaces object
    """
    from hubspace.model import User
    for user in User.select():
        user.display_name