Esempio n. 1
0
    def _listPresetTags(self, request):
        (appchange, script, args, myId) = yield self._getBasicArgs(request)
        orgId = args["orgId"]
        landing = not self._ajax

        args['title'] = 'Preset Tags'
        args['menuId'] = 'tags'
        args["viewType"] = "tags"

        if script and landing:
            t.render(request, "admin.mako", **args)

        if script and appchange:
            t.renderScriptBlock(request, "admin.mako", "layout",
                                    landing, "#mainbar", "set", **args)

        presetTags = yield db.get_slice(orgId, "orgPresetTags", count=100)
        presetTags = utils.columnsToDict(presetTags, ordered=True).values()
        if presetTags:
            tags_ = yield db.get_slice(orgId, "orgTags", presetTags)
            tags_ = utils.supercolumnsToDict(tags_)
        else:
            tags_ = {}

        args['tagsList'] = presetTags
        args['tags'] = tags_
        if script:
            t.renderScriptBlock(request, "admin.mako", "list_tags",
                                    landing, "#content", "set", **args)

        if not script:
            t.render(request, "admin.mako", **args)
Esempio n. 2
0
    def _addPresetTag(self, request):
        orgId = request.getSession(IAuthInfo).organization
        tagNames = utils.getRequestArg(request, 'tag')
        if not tagNames:
            return

        invalidTags = []
        tagNames = [x.strip().decode('utf-8', 'replace') for x in tagNames.split(',')]
        for tagName in tagNames:
            if len(tagName) < 50 and regex.match('^[\w-]*$', tagName):
                yield tags.ensureTag(request, tagName, orgId, True)
            else:
                invalidTags.append(tagName)

        presetTags = yield db.get_slice(orgId, "orgPresetTags")
        presetTags = utils.columnsToDict(presetTags, ordered=True).values()

        tags_ = yield db.get_slice(orgId, "orgTags", presetTags)
        tags_ = utils.supercolumnsToDict(tags_)
        args = {'tags': tags_, 'tagsList': presetTags}

        handlers = {}
        if invalidTags:
            if len(invalidTags) == 1:
                message = " %s is invalid tag." % (invalidTags[0])
            else:
                message = " %s are invalid tags. " % (",".join(invalidTags))
            errorMsg = "%s <br/>Tag can contain alpha-numeric characters or hyphen only. It cannot be more than 50 characters" % (message)
            handlers = {'onload': "$$.alerts.error('%s')" % (errorMsg)}

        t.renderScriptBlock(request, "admin.mako", "list_tags",
                            False, "#content", "set", True,
                            handlers=handlers, **args)
Esempio n. 3
0
    def _renderOrgInfo(self, request):
        (appchange, script, args, myId) = yield self._getBasicArgs(request)
        landing = not self._ajax

        args['title'] = "Update Company Info"
        args["menuId"] = "org"

        if script and landing:
            t.render(request, "admin.mako", **args)

        if script and appchange:
            t.renderScriptBlock(request, "admin.mako", "layout",
                                    landing, "#mainbar", "set", **args)

        args["viewType"] = "org"
        if script:
            handlers = {'onload': "$$.ui.bindFormSubmit('#orginfo-form');"}
            t.renderScriptBlock(request, "admin.mako", "orgInfo",
                                landing, "#content", "set", True,
                                handlers=handlers, **args)

        if script and landing:
            request.write("</body></html>")

        if not script:
            t.render(request, "admin.mako", **args)
Esempio n. 4
0
    def _renderKeywordMatches(self, request):
        (appchange, script, args, myId) = yield self._getBasicArgs(request)
        landing = not self._ajax

        keyword = utils.getRequestArg(request, 'keyword')
        if not keyword:
            errors.MissingParams(['Keyword'])
        args["keyword"] = keyword

        start = utils.getRequestArg(request, "start") or ""
        args["start"] = start

        if script and landing:
            t.render(request, "keyword-matches.mako", **args)

        if script and appchange:
            t.renderScriptBlock(request, "keyword-matches.mako", "layout",
                                    landing, "#mainbar", "set", **args)

        keywordItems = yield self._getKeywordMatches(request, keyword,
                                                     start=start)
        args.update(keywordItems)

        if script:
            onload = "(function(obj){$$.convs.load(obj);})(this);"
            t.renderScriptBlock(request, "keyword-matches.mako", "feed",
                                    landing, "#convs-wrapper", "set", True,
                                    handlers={"onload": onload}, **args)

        if not script:
            t.render(request, "keyword-matches.mako", **args)
Esempio n. 5
0
    def _unfollow(self, request):
        authInfo = request.getSession(IAuthInfo)
        myId = authInfo.username
        orgId = authInfo.organization
        tagId, tag = yield utils.getValidTagId(request, "id")

        count = int(tag[tagId].get('followersCount', 0))
        if count % 5 == 3:
            count = yield db.get_count(tagId, "tagFollowers")
        count = count - 1 if count > 0 else count

        yield db.remove(tagId, 'tagFollowers', myId)
        yield db.insert(orgId, "orgTags", str(count), "followersCount", tagId)

        tag[tagId]['followersCount'] = count
        args = {'tags': tag}
        args['tagsFollowing'] = []
        fromListTags = (utils.getRequestArg(request, '_pg') == '/tags/list')
        if fromListTags:
            t.renderScriptBlock(request, "tags.mako", "_displayTag",
                                False, "#tag-%s" % tagId, "replace",
                                args=[tagId], **args)
        else:
            t.renderScriptBlock(request, 'tags.mako', "tag_actions", False,
                                "#tag-actions-%s" % (tagId), "set",
                                args=[tagId, False, False])
Esempio n. 6
0
    def renderShareBlock(self, request, isAjax):
        authinfo = request.getSession(IAuthInfo)
        myId = authinfo.username
        orgId = authinfo.organization

        entities = base.EntitySet([myId, orgId])
        yield entities.fetchData()

        me = entities[myId]
        org = entities[orgId]
        args = {"myId": myId, "orgId": orgId, "me": me, "org": org}

        my_tz = timezone(me.basic["timezone"])
        utc_now = datetime.datetime.now(pytz.utc)
        mytz_now = utc_now.astimezone(my_tz)
        args.update({"my_tz": my_tz, "utc_now":utc_now, "mytz_now":mytz_now})

        onload = """
                (function(obj){
                    $$.publisher.load(obj);
                    $$.events.prepareDateTimePickers();
                    $$.events.autoFillUsers();
                })(this);
                """
        t.renderScriptBlock(request, "event.mako", "share_event",
                                not isAjax, "#sharebar", "set", True,
                                attrs={"publisherName": "event"},
                                handlers={"onload": onload}, **args)
Esempio n. 7
0
    def _unsubscribe(self, request, data=None):
        authInfo = request.getSession(IAuthInfo)
        myId = authInfo.username

        group = data['id']
        _pg = data['_pg']
        me = base.Entity(myId)
        yield me.fetchData(['basic'])

        yield Group.unsubscribe(request, group, me)
        args = {"groupId": group.id, "me": me, "myGroups": [],
                "entities": {group.id: group}, "groupFollowers": {group.id: []},
                "pendingConnections": [], "isMember": False}
        t.renderScriptBlock(request, "group-feed.mako", "group_actions", False,
                            "#group-actions-%s" % (group.id), "set", **args)

        if _pg == '/group':
            onload = "(function(obj){$$.convs.load(obj);})(this);"
            onload += "$('#sharebar-attach-fileshare, #sharebar-attach-file-input').attr('disabled', 'disabled');"
            onload += "$('#sharebar-submit').attr('disabled', 'disabled');"
            onload += "$('#group-share-block').addClass('disabled');"
            onload += "$('#group-links').hide();"
            t.renderScriptBlock(request, "group-feed.mako", "feed",
                                False, "#user-feed", "set", True,
                                handlers={"onload": onload}, **args)
Esempio n. 8
0
    def _renderReportResponses(self, request, convId, convMeta, args):
        reportId = convMeta.get('reportId', None)
        args['convMeta'] = convMeta
        script = args["script"]
        myId = args["myId"]
        landing = not self._ajax

        if script:
            t.renderScriptBlock(request, "item-report.mako", "item_report",
                                landing, "#report-contents", "set", **args)

        if reportId:
            reportResponses = yield db.get_slice(reportId, "itemResponses")
            reportResponseKeys, toFetchEntities = [], []
            reportResponseActions = {}

            for response in reportResponses:
                userKey, responseKey, action = response.column.value.split(":")
                reportResponseKeys.append(responseKey)
                reportResponseActions[responseKey] = action

            fetchedResponses = yield db.multiget_slice(reportResponseKeys, "items", ["meta"])
            fetchedResponses = utils.multiSuperColumnsToDict(fetchedResponses)

            args["reportId"] = reportId
            args["reportItems"] = fetchedResponses
            args["responseKeys"] = reportResponseKeys
            args["reportResponseActions"] = reportResponseActions

            #Show comments from report only if I am the owner or the reporter
            if script and myId in [convMeta["owner"], convMeta["reportedBy"]]:
                t.renderScriptBlock(request, "item-report.mako", 'report_comments',
                                    landing, '#report-comments', 'set', **args)
Esempio n. 9
0
    def _renderEditGroup(self, request, data=None):
        appchange, script, args, myId = yield self._getBasicArgs(request)
        landing = not self._ajax

        group = data['id']
        args["menuId"] = "settings"
        args["groupId"] = group.id
        args["entities"] = base.EntitySet(group)
        args["heading"] = group.basic['name']

        if myId not in group.admins:
            raise errors.PermissionDenied('You should be an administrator to edit group meta data')

        if script and landing:
            t.render(request, "group-settings.mako", **args)
        if script and appchange:
            t.renderScriptBlock(request, "group-settings.mako", "layout",
                                landing, "#mainbar", "set", **args)
        if script:
            handlers = {}
            handlers["onload"] = """$$.ui.bindFormSubmit('#group-form');"""
            t.renderScriptBlock(request, "group-settings.mako", "edit_group",
                                landing, "#center-content", "set", True,
                                handlers=handlers, **args)
        else:
            t.render(request, "group-settings.mako", **args)
Esempio n. 10
0
    def _comment(self, request, data=None):

        authInfo = request.getSession(IAuthInfo)
        myId = authInfo.username
        orgId = authInfo.organization
        convId, conv = data['parent']
        fids = data['fId']
        comment, snippet = data['comment']
        review = data['_review']

        itemId, convId, items, keywords = yield Item._comment(convId, conv, comment, snippet, myId, orgId, False, review, fids)

        if keywords:
            block = t.getBlock('item.mako', 'requireReviewDlg', keywords=keywords, convId=convId)
            request.write('$$.convs.reviewRequired(%s, "%s");' % (json.dumps(block), convId))
            return

        # Finally, update the UI
        entities = base.EntitySet([myId])
        yield entities.fetchData()
        args = {"entities": entities, "items": items, "me": entities[myId]}

        numShowing = utils.getRequestArg(request, "nc") or "0"
        numShowing = int(numShowing) + 1
        responseCount = items[convId]['meta']['responseCount']
        isItemView = (utils.getRequestArg(request, "_pg") == "/item")
        t.renderScriptBlock(request, 'item.mako', 'conv_comments_head',
                            False, '#comments-header-%s' % (convId), 'set',
                            args=[convId, responseCount, numShowing, isItemView], **args)
        onload = """(function(){$('.comment-input', '#comment-form-%s').val(''); $('[name=\"nc\"]', '#comment-form-%s').val('%s');})();$('#comment-attach-%s-uploaded').empty()""" % (convId, convId, numShowing, convId)
        t.renderScriptBlock(request, 'item.mako', 'conv_comment', False,
                            '#comments-%s' % convId, 'append', True,
                            handlers={"onload": onload},
                            args=[convId, itemId], **args)
Esempio n. 11
0
    def _renderMore(self, request, data=None):
        myId = request.getSession(IAuthInfo).username

        group = data['id']
        start = data['start']
        itemType = data['type']
        me = base.Entity(myId)
        me_d = me.fetchData()
        args = {'itemType': itemType, 'groupId': group.id, "me": me}

        isMember = yield db.get_count(group.id, "groupMembers", start=myId, finish=myId)
        if isMember:
            feedItems = yield Feed.get(request.getSession(IAuthInfo),
                                       feedId=group.id, start=start,
                                       itemType=itemType)
            args.update(feedItems)
        else:
            args["conversations"] = []
            args["entities"] = {}
        yield me_d
        args["isMember"] = isMember
        args["entities"].update(group)
        args['entities'].update(me)

        onload = "(function(obj){$$.convs.load(obj);})(this);"
        t.renderScriptBlock(request, "group-feed.mako", "feed", False,
                            "#next-load-wrapper", "replace", True,
                            handlers={"onload": onload}, **args)
Esempio n. 12
0
    def _renderChooseAudience(self, request):
        (appchange, script, args, myId) = yield self._getBasicArgs(request)

        onload = "$('form').html5form({messages: 'en'});"
        t.renderScriptBlock(request, "feed.mako", "customAudience", False,
                            "#custom-audience-dlg", "set", True,
                            handlers={"onload": onload}, **args)
Esempio n. 13
0
 def renderSuggestion(res):
     suggestions, entities = res
     t.renderScriptBlock(request, "feed.mako", "_suggestions",
                         False, "#suggestions", "set", True,
                         relations = relation,
                         suggestions = suggestions,
                         entities=entities)
Esempio n. 14
0
    def _renderClientDetails(self, request, clientId):
        (appchange, script, args, myId) = yield self._getBasicArgs(request)
        landing = not self._ajax

        args["detail"] = "apps"

        if script and landing:
            t.render(request, "apps.mako", **args)

        if appchange and script:
            t.renderScriptBlock(request, "apps.mako", "layout", landing, "#mainbar", "set", **args)

        client = yield db.get_slice(clientId, "apps")
        client = utils.supercolumnsToDict(client)
        if not client:
            raise errors.InvalidApp(clientId)

        args.update({"client": client, "clientId": clientId})
        if script:
            self.setTitle(request, client["meta"]["name"])

        author = base.Entity(client["meta"]["author"])
        yield author.fetchData()
        args["entities"] = base.EntitySet(author)

        if script:
            t.renderScriptBlock(request, "apps.mako", "appDetails", landing, "#apps-contents", "set", **args)
        else:
            t.render(request, "apps.mako", **args)
Esempio n. 15
0
    def _attendance(self, request):
        itemId, item = yield utils.getValidItemId(request, "id",
                                                  columns=["invitees"])
        list_type = utils.getRequestArg(request, 'type') or "yes"
        user_list = []

        if itemId and list_type in ["yes", "no", "maybe"]:
            cols = yield db.get_slice(itemId, "eventResponses")
            res = utils.columnsToDict(cols)
            for rsvp in res.keys():
                resp = rsvp.split(":")[0]
                uid = rsvp.split(":")[1]
                if resp == list_type:
                    if uid in item["invitees"] and \
                      item["invitees"][uid] == list_type:
                        user_list.insert(0, uid)
                    else:
                        user_list.append(uid)

            invited = user_list
            owner = item["meta"].get("owner")

            entities = base.EntitySet(invited+[owner])
            yield entities.fetchData()

            args = {"users": invited, "entities": entities}
            args['title'] = {"yes":_("People attending this event"),
                             "no": _("People not attending this event"),
                             "maybe": _("People who may attend this event")
                             }[list_type]

            t.renderScriptBlock(request, "item.mako", "userListDialog", False,
                                    "#invitee-dlg-%s"%(itemId), "set", **args)
Esempio n. 16
0
    def _editCompany(self, request):
        (appchange, script, args, myId) = yield self._getBasicArgs(request)
        remove = utils.getRequestArg(request, 'action') == 'd'
        encodedCompanyId = utils.getRequestArg(request, 'id', sanitize=False)
        companyId = utils.decodeKey(encodedCompanyId) if encodedCompanyId else None

        if companyId and remove:
            db.remove(myId, "entities", companyId, "companies")
            request.write('$("#%s").remove();' % encodedCompanyId)
            return

        today = datetime.date.today()
        try:
            startYear = int(utils.getRequestArg(request, 'startyear'))
            startMonth = int(utils.getRequestArg(request, 'startmonth'))
            startDay = datetime.date(startYear, startMonth, 1)
        except (ValueError, TypeError):
            raise errors.InvalidRequest('Please give a valid start month and year')

        try:
            endYear = utils.getRequestArg(request, 'endyear')
            if not endYear:
                endYear = 9999
                endMonth = 12
            else:
                endYear = int(endYear)
                endMonth = int(utils.getRequestArg(request, 'endmonth'))
            endDay = datetime.date(endYear, endMonth, 1)
        except (ValueError, TypeError):
            raise errors.InvalidRequest('Please give a valid end month and year')

        if startDay > today or startDay > endDay or (endDay > today and endYear != 9999):
            raise errors.InvalidRequest('The start month/year and end month/year are invalid!')

        name = utils.getRequestArg(request, 'company')
        title = utils.getRequestArg(request, 'title')

        if not remove and not name:
            errors.MissingParams(['Name'])

        if companyId:
            db.remove(myId, "entities", companyId, "companies")

        newCompanyId = "%s%s:%s%s:%s" % (endYear, endMonth, startYear, startMonth, name)
        newCompanyVal = title
        db.insert(myId, "entities", newCompanyVal, newCompanyId, "companies")

        if companyId:
            yield t.renderScriptBlock(request, "settings.mako", "companyItem",
                                    False, "#"+encodedCompanyId, "replace",
                                    args=[newCompanyId, newCompanyVal])
        else:
            onload = """$('#company-empty-msg').remove();"""+\
                     """$('#addemp-wrap').replaceWith('<div id="addemp-wrap"><button class="button ajax" id="addedu-button" data-ref="/settings/company">Add Company</button></div>');"""
            yield t.renderScriptBlock(request, "settings.mako", "companyItem",
                                    False, "#companies-wrapper", "append", True,
                                    handlers={'onload': onload},
                                    args=[newCompanyId, newCompanyVal])
Esempio n. 17
0
    def _unblock(self, request, data=None):
        myId = request.getSession(IAuthInfo).username
        group = data['id']
        user = data['uid']
        me = base.Entity(myId)

        yield Group.unblock(group, user, me)
        t.renderScriptBlock(request, "groups.mako", "groupRequestActions",
                            False, '#group-request-actions-%s-%s' % (user.id, group.id),
                            "set", args=[group.id, user.id, "unblock"])
Esempio n. 18
0
    def _unblockUser(self, request, data=None):
        orgId = request.getSession(IAuthInfo).organization

        user = data['id']
        emailId = user.basic.get("emailId", None)

        yield db.remove(emailId, "userAuth", "isBlocked")
        yield db.remove(orgId, "blockedUsers", user.id)
        t.renderScriptBlock(request, "admin.mako", "admin_actions",
                                False, "#user-actions-%s" % (user.id),
                                "set", args=[user.id, 'unblocked'])
Esempio n. 19
0
    def _registerClient(self, request):
        (appchange, script, args, myId) = yield self._getBasicArgs(request)
        landing = not self._ajax
        myOrgId = args["orgId"]

        name = utils.getRequestArg(request, "name")
        desc = utils.getRequestArg(request, "desc")
        scope = utils.getRequestArg(request, "scope", multiValued=True)
        category = utils.getRequestArg(request, "category")
        redirect = utils.getRequestArg(request, "redirect", sanitize=False)

        if not name:
            raise errors.MissingParams(["Name"])

        if not scope:
            raise errors.MissingParams(["Permissions"])

        if category != "apikey" and not redirect:
            raise errors.MissingParams(["Redirect URL"])

        knownScopes = globals().get("scopes")
        unknownScopes = [x for x in scope if x not in knownScopes.keys()]
        if category not in ["webapp", "native", "apikey"] or unknownScopes:
            raise errors.BaseError("Invalid value sent for Type/Permissions")

        clientId = utils.getUniqueKey()
        clientSecret = utils.getRandomKey()

        meta = {
            "author": myId,
            "name": name,
            "org": myOrgId,
            "secret": utils.hashpass(clientSecret),
            "scope": " ".join(scope),
            "category": category,
        }

        if category != "apikey":
            meta["redirect"] = b64encode(redirect)
            meta["desc"] = desc
            yield db.batch_insert(clientId, "apps", {"meta": meta})
            yield db.insert(myId, "appsByOwner", "", clientId)
            yield db.insert(myOrgId, "appsByOwner", "", clientId)
        else:
            yield db.batch_insert(clientId, "apps", {"meta": meta})
            yield db.insert(myId, "entities", "", clientId, "apikeys")

        self.setTitle(request, name)

        args["clientId"] = clientId
        args["client"] = meta
        args["client"]["secret"] = clientSecret
        t.renderScriptBlock(request, "apps.mako", "registrationResults", landing, "#apps-contents", "set", **args)
Esempio n. 20
0
 def renderShareBlock(self, request, isAjax):
     t.renderScriptBlock(
         request,
         "feed.mako",
         "share_status",
         not isAjax,
         "#sharebar",
         "set",
         True,
         attrs={"publisherName": "status"},
         handlers={"onload": "(function(obj){$$.publisher.load(obj)})(this);"},
     )
Esempio n. 21
0
 def _unfollow(self, request, data=None):
     myId = request.getSession(IAuthInfo).username
     me = base.Entity(myId)
     group = data['id']
     unfollowed = yield Group.unfollow(group, me)
     if unfollowed:
         args = {"groupId": group.id, "myGroups": [group.id], "me": me,
                 "entities": {group.id: group}, "pendingConnections": {},
                 "groupFollowers": {group.id: []}}
         t.renderScriptBlock(request, "group-feed.mako", "group_actions",
                             False, "#group-actions-%s" % (group.id),
                             "set", **args)
Esempio n. 22
0
    def _new(self, request, data=None):
        (appchange, script, args, myId) = yield self._getBasicArgs(request)
        me = args['me']
        landing = not self._ajax
        authInfo = request.getSession(IAuthInfo)
        convType = data['type']
        convId, conv, keywords = yield Item.new(request, authInfo, convType)
        if keywords:
            block = t.getBlock('item.mako', 'requireReviewDlg', keywords=keywords)
            request.write('$$.convs.reviewRequired(%s);' % json.dumps(block))
            return

        target = conv['meta'].get('target', None)
        toFetchEntities = set()
        if target:
            toFetchEntities.update(target.split(','))

        convType = utils.getRequestArg(request, "type")
        plugin = plugins[convType]
        entityIds = yield plugin.fetchData(args, convId)
        toFetchEntities.update(entityIds)
        entities = base.EntitySet(toFetchEntities)
        yield entities.fetchData()
        entities.update(args['me'])

        relation = Relation(myId, [])
        yield relation.initGroupsList()

        data = {"items": {convId: conv}, "relations": relation,
                "entities": entities, "script": True}
        args.update(data)
        onload = "(function(obj){$$.convs.load(obj);$('#sharebar-attach-uploaded').empty();})(this);"
        t.renderScriptBlock(request, "item.mako", "item_layout",
                            False, "#user-feed", "prepend", args=[convId, 'conv-item-created'],
                            handlers={"onload": onload}, **args)

        defaultType = plugins.keys()[0]
        plugins[defaultType].renderShareBlock(request, True)
        if plugin and hasattr(plugin, 'renderFeedSideBlock'):
            entityId = myId
            referer = request.getHeader('referer')
            matchObj = feedPathObj.search(referer)
            if matchObj:
                matchedStr = matchObj.group('entityId')
                if matchedStr != "":
                    entityId = matchedStr
            else:
                if target:
                    entityId = target.split(',')[0]
                    args["groupId"] = target.split(',')[0]

            request.write("$('#feed-side-block-container').empty();")
            yield plugin.renderFeedSideBlock(request, landing, entityId, args)
Esempio n. 23
0
 def _approve(self, request, data=None):
     authInfo = request.getSession(IAuthInfo)
     myId = authInfo.username
     group = data['id']
     user = data['uid']
     me = base.Entity(myId)
     yield me.fetchData()
     approved = yield Group.approveRequest(request, group, user, me)
     if approved:
         t.renderScriptBlock(request, "groups.mako", "groupRequestActions",
                             False, '#group-request-actions-%s-%s' % (user.id, group.id),
                             "set", args=[group.id, user.id, "accept"])
Esempio n. 24
0
    def _likes(self, request, data=None):
        itemId, item = data['id']
        entities, users = yield Item.likes(itemId, item)
        args = {"users": users, "entities": entities}
        if not users:
            raise errors.InvalidRequest(_("Currently, no one likes the item"))
        itemType = item['meta'].get('type', 'comment')
        ownerId = item["meta"]["owner"]
        args['title'] = _("People who like %s's %s") %\
                          (utils.userName(ownerId, entities[ownerId]), _(itemType))

        t.renderScriptBlock(request, "item.mako", "userListDialog", False,
                            "#likes-dlg-%s" % (itemId), "set", **args)
Esempio n. 25
0
    def _renderMore(self, request):
        (appchange, script, args, myId) = yield self._getBasicArgs(request)
        (tagId, tagInfo) = yield utils.getValidTagId(request, 'id')
        start = utils.getRequestArg(request, 'start') or ""

        tagItems = yield self._getTagItems(request, tagId, start=start)
        args.update(tagItems)
        args["tagId"] = tagId

        onload = "(function(obj){$$.convs.load(obj);})(this);"
        t.renderScriptBlock(request, "tags.mako", "items", False,
                            "#next-load-wrapper", "replace", True,
                            handlers={"onload": onload}, **args)
Esempio n. 26
0
    def _events(self, request):
        (appchange, script, args, myId) = yield self._getBasicArgs(request)
        landing = not self._ajax
        page = utils.getRequestArg(request, 'page') or '1'
        entityId = utils.getRequestArg(request, 'id') or myId
        view = utils.getRequestArg(request, 'view') or "agenda"
        authinfo = request.getSession(IAuthInfo)
        myOrgId = authinfo.organization
        start = utils.getRequestArg(request, 'start') or ""

        #Check if entity Id is my Org or a group that I have access to.
        if entityId != myId and entityId != myOrgId:
            yield utils.getValidEntityId(request, "id", "group")

        if view == "invitations":
            entityId = "%s:%s" %(myId, "I")

        if page.isdigit():
            page = int(page)
        else:
            page = 1
        count = constants.EVENTS_PER_PAGE

        try:
            start = datetime.datetime.strptime(start, "%Y-%m-%d")
        except ValueError:
            start = None

        args.update({'view':view, 'menuId': 'events'})
        args.update({'page':page, 'entityId': entityId})

        if script and landing:
            t.render(request, "event.mako", **args)

        if script and appchange:
            t.renderScriptBlock(request, "event.mako", "layout",
                                    landing, "#mainbar", "set", **args)

        yield event.fetchMatchingEvents(request, args, entityId, count=count,
                                        start=start)

        if script:
            onload = """
                     $$.menu.selectItem('events');
                     $$.events.prepareAgendaDatePicker('%s')
                     """ % (args["start"])
            t.renderScriptBlock(request, 'event.mako', "render_events",
                                landing, ".center-contents", "set", True,
                                handlers={"onload": onload}, **args)
        else:
            t.render(request, "event.mako", **args)
Esempio n. 27
0
    def _change(self, request):
        convId, conv = yield utils.getValidItemId(request, "id", "poll")

        data = {}
        userId = request.getSession(IAuthInfo).username
        yield poll.fetchData(data, convId, userId, ["meta"])

        myVotes = data["myVotes"]
        voted = myVotes[convId] if (convId in myVotes and myVotes[convId])\
                                else False

        t.renderScriptBlock(request, "poll.mako", 'poll_options',
                            False, '#poll-contents-%s' % convId, 'set',
                            args=[convId, voted], **data)
Esempio n. 28
0
    def _listPendingSubscriptions(self, request, data=None):
        appchange, script, args, myId = yield self._getBasicArgs(request)
        landing = not self._ajax
        me = args['me']

        group = data['id']
        start = data['start'] or 'GI'

        entities = base.EntitySet(group)

        args.update({"menuId": "pending", "groupId": group.id,
                     "entities": entities, "heading": group.basic['name']})

        if me.id not in group.admins:
            raise errors.InvalidRequest('Access Denied')
        if script and landing:
            t.render(request, "group-settings.mako", **args)
        if script and appchange:
            t.renderScriptBlock(request, "group-settings.mako", "layout",
                                landing, "#mainbar", "set", **args)

        data = yield Group.getPendingRequests(group, me, start)
        args.update(data)
        args["entities"].update(group)
        args["tab"] = 'pending'

        if script:
            t.renderScriptBlock(request, "groups.mako", "titlebar",
                                landing, "#titlebar", "set", **args)
            t.renderScriptBlock(request, "group-settings.mako", "displayUsers",
                                landing, "#groups-wrapper", "set", **args)
            t.renderScriptBlock(request, 'groups.mako', "pendingRequestsPaging",
                                landing, "#groups-paging", "set", **args)
Esempio n. 29
0
    def _cancelGroupInvitation(self, request, data=None):
        myId = request.getSession(IAuthInfo).username
        group = data['id']
        me = base.Entity(myId)
        yield me.fetchData()
        cancelled = yield Group.cancelRequest(group, me)

        if cancelled:
            args = {"groupId": group.id, "entities": {group.id: group},
                    "myGroups": [], "groupFollowers": {group.id: []},
                    "pendingConnections": [], "me": me}
            t.renderScriptBlock(request, "group-feed.mako", "group_actions",
                                False, "#group-actions-%s" % (group.id),
                                "set", **args)
Esempio n. 30
0
    def _deleteUser(self, request, data=None):
        myId = request.getSession(IAuthInfo).username
        user = data['id']
        delete = data['deleted'] == 'deleted'

        # Admin cannot block himself.
        if user.id == myId:
            raise errors.InvalidRequest(_("You are the only administrator, you can not delete yourself"))

        if delete:
            yield utils.removeUser(request, user.id, myId, user)
            t.renderScriptBlock(request, "admin.mako", "admin_actions",
                                    False, "#user-actions-%s" % (user.id),
                                    "set", args=[user.id, 'deleted'])