class searchUser0: cfg_svc = __jitar__.configService def __init__(self): self.params = ParamUtil(request) return def execute(self): self.config = self.cfg_svc.getConfigure() # 用户 self.userList() # 机构列表. self.get_units_list() singleuser = self.params.getIntParam("singleuser") #1 用户单选 2 用户多选 if singleuser == None: singleuser = 1 inputUser_Id = self.params.getStringParam("inputUser_Id") inputUserName_Id = self.params.getStringParam("inputUserName_Id") inputLoginName_Id = self.params.getStringParam("inputLoginName_Id") request.setAttribute("singleuser", singleuser) request.setAttribute("inputUser_Id", inputUser_Id) request.setAttribute("inputUserName_Id", inputUserName_Id) request.setAttribute("inputLoginName_Id", inputLoginName_Id) # 返回 response.contentType = "text/html; charset=UTF-8" return "/WEB-INF/ftl/searchUserList0.ftl" def userList(self): unitId = self.params.getIntParamZeroAsNull("unitId") userName = self.params.getStringParam("userName") qry = UserQuery2(" u.userId, u.loginName, u.userIcon, u.gender, u.blogName, u.trueName, u.unitId, unit.unitName, unit.unitTitle ") qry.userStatus = 0 qry.kk = userName pager = self.createPager() pager.totalRows = qry.count() user_list = qry.query_map(pager) request.setAttribute("unitId", unitId) request.setAttribute("user_list", user_list) request.setAttribute("userName", userName) request.setAttribute("pager", pager) # 机构列表. def get_units_list(self): hql = """SELECT new Map(ut.unitId as unitId, ut.unitTitle as unitTitle) FROM Unit ut ORDER BY ut.unitName """ unit_list = Command(hql).open() request.setAttribute("unit_list", unit_list) def createPager(self): # private 构造人员的缺省 pager. pager = self.params.createPager() pager.itemName = u"用户" pager.itemUnit = u"个" pager.pageSize = 10 return pager
class showVideoList: def __init__(self): self.params = ParamUtil(request) self.categoryName = None self.type = "new" self.video_svc = __spring__.getBean("videoService") def execute(self): vid = self.params.getIntParam("vid") self.type = self.params.getStringParam("type") if self.type == None or self.type == "": self.type = "new" if (vid != None) and (vid != 0): video = self.video_svc.findById(vid) self.categoryName = video.staple else: self.categoryName = self.params.getStringParam("categoryName") request.setAttribute("categoryName", self.categoryName) request.setAttribute("categoryShowTitle", u"所有视频") if ((self.categoryName != None) and (self.categoryName != "")): request.setAttribute("categoryShowTitle", self.categoryName + u"分类下的所有视频") else: if self.type == "new": request.setAttribute("categoryShowTitle", u"最新视频") if self.type == "hot": request.setAttribute("categoryShowTitle", u"视频排行") request.setAttribute("type", type) self.get_video_with_pager() # 页面导航高亮为 'video' request.setAttribute("head_nav", "video") return "/WEB-INF/ftl/show_video_list.ftl" def get_video_with_pager(self): pager = self.params.createPager() pager.itemName = u"视频" pager.itemUnit = u"个" pager.pageSize = 24 qry = VideoQuery( """ v.videoId, v.title, v.createDate, v.href, v.userId, u.loginName, u.nickName, v.summary,v.flvThumbNailHref """ ) if ((self.categoryName != None) and (self.categoryName != "")): qry.sysCateTitle = self.categoryName if self.type == "new": qry.orderType = 1 elif self.type == "hot": qry.orderType = 2 else: qry.orderType = 0 pager.totalRows = qry.count() video_list = qry.query_map(pager) request.setAttribute("video_list", video_list) request.setAttribute("pager", pager)
def execute(self): params = ParamUtil(request) cmt_svc = __jitar__.getCommentService() writer = response.getWriter() if self.loginUser == None: writer.write(u"请先登录。") return userName = self.loginUser.trueName if userName == None: userName = self.loginUser.loginName title = params.getStringParam("title") objtype = params.getIntParam("objtype") aboutUserId = params.getIntParam("aboutUserId") objId = params.getIntParam("photoId") star = params.getIntParam("star") content = params.getStringParam("content") userIP = request.getHeader("x-forwarded-for") if userIP == None or userIP == "": userIP = request.getRemoteAddr() if title == "": writer.write(u"请输入标题。") return if content == "" or content == "<span></span>": writer.write(u"请输入评论内容。") return cmt = Comment() cmt.setTitle(title) cmt.setAboutUserId(aboutUserId) cmt.setIp(userIP) cmt.setUserName(userName) cmt.setUserId(self.loginUser.userId) cmt.setCreateDate(Date()) cmt.setStar(star) cmt.setAudit(True) cmt.setContent(content) cmt.setObjId(objId) cmt.setObjType(objtype) cmt_svc.saveComment(cmt) # 评论计数器 cmd = Command( """ UPDATE Photo SET commentCount = commentCount + 1 WHERE photoId = :photoId """ ) cmd.setInteger("photoId", objId) cmd.update() photoUser = params.getStringParam("photoUser") if request.getHeader("Referer") != None: response.sendRedirect(request.getHeader("Referer")) return request.setAttribute( "redUrl", photoUser + "/py/user_photo_show.py?photoId=" + str(objId)) return "/WEB-INF/ftl/photo/PhotoComment_Success.ftl"
class SpecialSubjectQuery(BaseQuery): def __init__(self, selectFields): BaseQuery.__init__(self, selectFields) self.params = ParamUtil(request) self.specialSubjectId = None self.objectType = None self.objectId = None self.k = self.params.getStringParam("k") request.setAttribute("k", self.k) self.orderType = 0 def initFromEntities(self, qctx): qctx.addEntity("SpecialSubject", "ss", "") def resolveEntity(self, qctx, entity): BaseQuery.resolveEntity(self, qctx, entity) def applyWhereCondition(self, qctx): if self.specialSubjectId != None: qctx.addAndWhere("ss.specialSubjectId = :specialSubjectId") qctx.setInteger("specialSubjectId", self.specialSubjectId) if self.objectType != None: qctx.addAndWhere("ss.objectType = :objectType") qctx.setString("objectType", self.objectType) if self.objectId != None: qctx.addAndWhere("ss.objectId = :objectId") qctx.setInteger("objectId", self.objectId) def applyOrderCondition(self, qctx): if self.orderType == 0: qctx.addOrder("ss.specialSubjectId DESC")
class PlugInTopicQuery(BaseQuery): def __init__(self, selectFields): BaseQuery.__init__(self, selectFields) self.params = ParamUtil(request) self.parentGuid = None self.parentObjectType = None self.createUserId = None self.orderType = 0 self.k = self.params.getStringParam("k") request.setAttribute("k", self.k) def initFromEntities(self, qctx): qctx.addEntity("PlugInTopic", "pt", "") def resolveEntity(self, qctx, entity): BaseQuery.resolveEntity(self, qctx, entity) def applyWhereCondition(self, qctx): if (self.parentGuid != None): qctx.addAndWhere("pt.parentGuid = :parentGuid") qctx.setString("parentGuid", self.parentGuid) if (self.parentObjectType != None): qctx.addAndWhere("pt.parentObjectType = :parentObjectType") qctx.setString("parentObjectType", self.parentObjectType) if (self.createUserId != None): qctx.addAndWhere("pt.createUserId = :createUserId") qctx.setInteger("createUserId", self.createUserId) def applyOrderCondition(self, qctx): if self.orderType == 0: qctx.addOrder("pt.plugInTopicId DESC")
class admin_validate_user(BaseAdminAction): def __init__(self): self.params = ParamUtil(request) self.out = response.writer def execute(self): if self.loginUser == None: self.out.write(u"请先登录。") return accessControlService = __spring__.getBean("accessControlService") if not(accessControlService.isSystemAdmin(self.loginUser) or accessControlService.isSystemContentAdmin(self.loginUser)): self.out.write(u"您没有管理的权限。") return userName = self.params.getStringParam("loginName") if userName == None or userName == "": self.out.write(u"请输入用户的登录名。") return user_svc = __jitar__.userService user = user_svc.getUserByLoginName(userName) if user == None: self.out.write(u"您输入用户的登录名在本系统中不存在,请检查输入的是否正确。") return else: self.out.write("OK") return
class split_article_table(BaseAdminAction, ActionResult): def execute(self): if self.loginUser == None: return ActionResult.LOGIN accessControlService = __spring__.getBean("accessControlService") if accessControlService.isSystemAdmin(self.loginUser) == False: self.addActionError(u"没有管理站点配置的权限,只有超级管理员才能进行管理。") return ActionResult.ERROR self.params = ParamUtil(request) cmd = self.params.getStringParam("cmd") webSiteManageService = __spring__.getBean("webSiteManageService") if cmd == "": y = webSiteManageService.getArticleYearList() request.setAttribute("info", "") ydata = [] for yy in y: if yy != Calendar.getInstance().get(Calendar.YEAR): count = webSiteManageService.getYearArticleCount(yy) ydata.append({"year": yy, "count": count}) request.setAttribute("ydata", ydata) return "/WEB-INF/ftl/admin/split_article_table.ftl" elif cmd == "split": year = self.params.safeGetIntParam("year") if year == 0: self.addActionError(u"请选择一个年份。") return ActionResult.ERROR ret = webSiteManageService.slpitArticleTable(year) self.addActionMessage(u"操作成功!") self.addActionLink(u"返回前页", "?") return ActionResult.SUCCESS
class PrepareCoursePlanQuery(BaseQuery): def __init__(self, selectFields): BaseQuery.__init__(self, selectFields) self.params = ParamUtil(request) self.groupId = None self.defaultPlan = None self.k = self.params.getStringParam("k") self.subjectId = self.params.getIntParamZeroAsNull("subjectId") self.gradeId = self.params.getIntParamZeroAsNull("gradeId") request.setAttribute("subjectId", self.subjectId) request.setAttribute("gradeId", self.gradeId) request.setAttribute("k", self.k) self.orderType = 0 def initFromEntities(self, qctx): qctx.addEntity("PrepareCoursePlan", "pcp", "") def resolveEntity(self, qctx, entity): if "u" == entity: qctx.addEntity("User", "u", "pcp.createUserId = u.userId") else: BaseQuery.resolveEntity(qctx, entity) def applyWhereCondition(self, qctx): if (self.groupId != None): qctx.addAndWhere("pcp.groupId = :groupId") qctx.setInteger("groupId", self.groupId) if self.defaultPlan != None: qctx.addAndWhere("pcp.defaultPlan = :defaultPlan") qctx.setBoolean("defaultPlan", self.defaultPlan) def applyOrderCondition(self, qctx): if self.orderType == 0: qctx.addOrder("pcp.prepareCoursePlanId DESC")
class VoteQuery(BaseQuery): def __init__(self, selectFields): BaseQuery.__init__(self, selectFields) self.params = ParamUtil(request) self.parentGuid = None self.parentObjectType = None self.createUserId = None self.orderType = 0 self.k = self.params.getStringParam("k") self.subjectId = self.params.getIntParamZeroAsNull("subjectId") self.gradeId = self.params.getIntParamZeroAsNull("gradeId") request.setAttribute("subjectId", self.subjectId) request.setAttribute("gradeId", self.gradeId) request.setAttribute("k", self.k) def initFromEntities(self, qctx): qctx.addEntity("Vote", "vote", "") def resolveEntity(self, qctx, entity): BaseQuery.resolveEntity(qctx, entity) def applyWhereCondition(self, qctx): if (self.parentGuid != None): qctx.addAndWhere("vote.parentGuid = :parentGuid") qctx.setString("parentGuid", self.parentGuid) if (self.parentObjectType != None): qctx.addAndWhere("vote.parentObjectType = :parentObjectType") qctx.setString("parentObjectType", self.parentObjectType) if (self.createUserId != None): qctx.addAndWhere("vote.createUserId = :createUserId") qctx.setInteger("createUserId", self.createUserId) def applyOrderCondition(self, qctx): if self.orderType == 0: qctx.addOrder("vote.voteId DESC")
class group_mutilcates_title(ActionExecutor): def __init__(self): self.params = ParamUtil(request) self.page_svc = __jitar__.pageService def execute(self): response.setContentType("text/html; charset=UTF-8") widgetId = self.params.getIntParamZeroAsNull("widgetId") if widgetId == none: out = response.writer out.write("未找到参数widgetId") return None widget = self.page_svc.getWidget(widgetId) if widget == none: out = response.writer out.write("未找到参数widget") return None request.setAttribute("widget", widget) action = self.params.getStringParam("act") if action != None or action != "": if request.getMethod() == "POST": return self.saveWidget() return "/WEB-INF/group/default/group_mutilcates_title.ftl" def saveWidget(self): #放弃了 return None
class myaction(BaseAction): act_svc = __jitar__.actionService def execute(self): self.params = ParamUtil(request) self.out = response.writer if self.loginUser == None: self.addActionError(u"请先<a href='../../login.jsp'>登录</a>") return self.ERROR if request.getMethod() == "POST": return self.actionPost() else: qry = ActionUserUnitQuery( """ actu.actionUserId, actu.actionId, actu.actionUserId, actu.title,actu.startDateTime,actu.createDate, actu.actionUserStatus, actu.actionStatus, actu.ownerType, actu.ownerId """) qry.userId = self.loginUser.userId pager = self.params.createPager() pager.itemName = u"活动" pager.itemUnit = u"个" pager.pageSize = 10 pager.totalRows = qry.count() user_action = qry.query_map(pager) request.setAttribute("user_action", user_action) request.setAttribute("pager", pager) return "/WEB-INF/ftl/action/myaction.ftl" def actionPost(self): ErrMsg = "" cmd = self.params.getStringParam("cmd") guids = self.params.safeGetIntValues("guid") if guids.size() < 1: self.addActionError(u"请先选择一个活动") self.addActionLink(u"返回", "myaction.py") return self.ERROR for actId in guids: action = self.act_svc.getActionByActionUserId(actId) if action.status != 0: ErrMsg = ErrMsg + u"<li>名为 " + action.title + u" 的活动不是一个正常状态。无法进行操作." continue if cmd == "attend": qry = """ UPDATE ActionUser Set status = 1 WHERE actionUserId = :actionUserId """ command = Command(qry) command.setInteger("actionUserId", actId) command.update() if cmd == "quit": qry = """ UPDATE ActionUser Set status = 2 WHERE actionUserId = :actionUserId""" command = Command(qry) command.setInteger("actionUserId", actId) command.update() if cmd == "leave": qry = """ UPDATE ActionUser Set status = 3 WHERE actionUserId = :actionUserId """ command = Command(qry) command.setInteger("actionUserId", actId) command.update() if ErrMsg == "": ErrMsg = u"操作已完成" self.addActionMessage(ErrMsg) self.addActionLink(u"返回", "myaction.py") return self.SUCCESS
class colorpicker: def __init__(self): self.params = ParamUtil(request) def execute(self): color = self.params.getStringParam("color") request.setAttribute("color", color) return "/WEB-INF/ftl/user/colorpicker.ftl"
class ChannelVideoQuery (BaseQuery): def __init__(self, selectFields): BaseQuery.__init__(self, selectFields) self.params = ParamUtil(request) self.channelId = None self.channelCate = None self.orderType = 0 self.custormAndWhereClause = None self.k = self.params.getStringParam("k") self.f = self.params.getStringParam("f") if self.f == None: self.f = "title" if self.f == "": self.f = "title" request.setAttribute("k", self.k) request.setAttribute("f", self.f) def initFromEntities(self, qctx): qctx.addEntity("ChannelVideo", "cv", "") def resolveEntity(self, qctx, entity): if entity == "video": qctx.addJoinEntity("cv", "cv.video", "video","LEFT JOIN") elif "user" == entity: qctx.addJoinEntity("cv", "cv.user", "user","LEFT JOIN") elif "unit" == entity: qctx.addJoinEntity("cv", "cv.unit", "unit","LEFT JOIN") else: BaseQuery.resolveEntity(self,qctx, entity) def applyWhereCondition(self, qctx): qctx.addAndWhere("video.auditState = :auditState") qctx.setInteger("auditState", 0) if self.channelId != None: qctx.addAndWhere("cv.channelId = :channelId") qctx.setInteger("channelId", self.channelId) if self.custormAndWhereClause != None: qctx.addAndWhere(" " + self.custormAndWhereClause + " ") if self.channelCate != None: qctx.addAndWhere("cv.channelCate = :channelCate") qctx.setString("channelCate", self.channelCate) if self.k != None and self.k != '': newKey = self.k.replace("'","''").replace("%","[%]").replace("_","[_]").replace("[","[[]") if self.f == "uname": qctx.addAndWhere("user.trueName LIKE :keyword") qctx.setString("keyword", "%" + newKey + "%") elif self.f == "unitTitle": qctx.addAndWhere("unit.unitTitle LIKE :keyword") qctx.setString("keyword", "%" + newKey + "%") else: qctx.addAndWhere("video.title LIKE :keyword") qctx.setString("keyword", "%" + newKey + "%") def applyOrderCondition(self, qctx): if self.orderType == 0: qctx.addOrder("cv.channelVideoId DESC")
class admin_delete_action_comment(BaseAdminAction): def __init__(self): self.params = ParamUtil(request) self.user_svc = __jitar__.userService self.act_svc = __jitar__.actionService def execute(self): if self.loginUser == None: self.out.println(u"请先<a href='../../login.jsp'>登录</a>,然后才能管理活动") return accessControlService = __spring__.getBean("accessControlService") if False == accessControlService.isSystemContentAdmin(self.loginUser): self.addActionError( u"没有管理权限。<a href='' onclick='window.history.back();return false;'>返回</a>" ) return ActionResult.ERROR cmd_type = self.params.getStringParam("cmdtype") if cmd_type == None or cmd_type == "": self.out.println( u"无效的命令。<a href='' onclick='window.history.back();return false;'>返回</a>" ) return if cmd_type == "0": user_name = self.params.getStringParam("loginname") if user_name == None or user_name == "": self.out.println( u"请输入用户登录名。<a href='' onclick='window.history.back();return false;'>返回</a>" ) return user = self.user_svc.getUserByLoginName(user_name) if user == None: self.out.println( u"您输入用户的登录名在本系统中不存在,请检查输入的是否正确。<a href='' onclick='window.history.back();return false;'>返回</a>" ) return self.act_svc.deleteActionReplyByUserId(user.userId) if cmd_type == "1": reply_id = user_name = self.params.safeGetIntValues("guid") for replyid in reply_id: self.act_svc.deleteActionReplyById(replyid) response.sendRedirect("admin_action_comment_list.py")
class clearCache: def __init__(self): self.params = ParamUtil(request) def execute(self): cache_name = self.params.getStringParam("name") object_id = self.params.safeGetIntParam("id") if cache_name == "preparecourse": cache = __jitar__.cacheProvider.getCache('prepareCourse') cache_key = "prepareCourse_page_" + str(object_id) cache.remove(cache_key)
class ChannelArticleQuery (BaseQuery): def __init__(self, selectFields): BaseQuery.__init__(self, selectFields) self.params = ParamUtil(request) self.channelId = None self.articleState = True self.channelCate = None self.orderType = 0 self.custormAndWhereClause = None self.k = self.params.getStringParam("k") self.f = self.params.getStringParam("f") if self.f == None: self.f = "title" if self.f == "": self.f = "title" request.setAttribute("k", self.k) request.setAttribute("f", self.f) def initFromEntities(self, qctx): qctx.addEntity("ChannelArticle", "ca", "") def resolveEntity(self, qctx, entity): BaseQuery.resolveEntity(self,qctx, entity) def applyWhereCondition(self, qctx): if self.channelId != None: qctx.addAndWhere("ca.channelId = :channelId") qctx.setInteger("channelId", self.channelId) if self.custormAndWhereClause != None: qctx.addAndWhere(" " + self.custormAndWhereClause + " ") if self.channelCate != None: qctx.addAndWhere("ca.channelCate = :channelCate") qctx.setString("channelCate", self.channelCate) if self.articleState != None: qctx.addAndWhere("ca.articleState = :articleState") qctx.setBoolean("articleState", self.articleState) if self.k != None and self.k != '': newKey = self.k.replace("'","''").replace("%","[%]").replace("_","[_]").replace("[","[[]") if self.f == "title": qctx.addAndWhere("ca.title LIKE :keyword") qctx.setString("keyword", "%" + newKey + "%") elif self.f == "uname": qctx.addAndWhere("ca.loginName LIKE :keyword OR ca.userTrueName LIKE :keyword") qctx.setString("keyword", "%" + newKey + "%") else: qctx.addAndWhere("ca.title LIKE :keyword OR ca.loginName LIKE :keyword") qctx.setString("keyword", "%" + newKey + "%") def applyOrderCondition(self, qctx): if self.orderType == 0: qctx.addOrder("ca.channelArticleId DESC")
class actions: def __init__(self): self.params = ParamUtil(request) def execute(self): self.get_action_list() request.setAttribute("head_nav", "actions") return "/WEB-INF/ftl/site_actions.ftl" def get_action_list(self): ownerType = self.params.getStringParam("ownerType") showtype = self.params.getStringParam("type") request.setAttribute("type", showtype) request.setAttribute("ownerType", ownerType) self.pager = self.params.createPager() self.pager.itemName = u"活动" self.pager.itemUnit = u"个" self.pager.pageSize = 20 qry = ActionQuery( """ act.title, act.createDate, act.actionId, act.ownerId, act.ownerType, act.createUserId, act.actionType, act.description, act.userLimit, act.startDateTime,act.finishDateTime, act.attendLimitDateTime, act.place, act.status, act.visibility, act.attendCount,u.loginName,u.trueName """) if not (ownerType == None or len(ownerType) < 1): qry.ownerType = ownerType if showtype == "running": qry.qryDate = 1 #正在进行 elif showtype == "finish": qry.qryDate = 2 #已经完成的活动 elif showtype == "new": qry.qryDate = 0 #正在报名的活动 self.pager.totalRows = qry.count() action_list = qry.query_map(self.pager) request.setAttribute("action_list", action_list) request.setAttribute("pager", self.pager)
class PrepareArticleQuery(BaseQuery): def __init__(self, selectFields): BaseQuery.__init__(self, selectFields) self.params = ParamUtil(request) self.prepareCourseId = None self.prepareCourseStageId = None self.articleState = True self.k = self.params.getStringParam("k") self.subjectId = self.params.getIntParamZeroAsNull("subjectId") self.gradeId = self.params.getIntParamZeroAsNull("gradeId") request.setAttribute("subjectId", self.subjectId) request.setAttribute("gradeId", self.gradeId) request.setAttribute("k", self.k) self.orderType = 0 def initFromEntities(self, qctx): qctx.addEntity("PrepareCourseArticle", "pca", "") def resolveEntity(self, qctx, entity): if "pcs" == entity: qctx.addEntity( "PrepareCourseStage", "pcs", "pcs.prepareCourseStageId = pca.prepareCourseStageId") else: BaseQuery.resolveEntity(self, qctx, entity) def applyWhereCondition(self, qctx): if (self.prepareCourseStageId != None): qctx.addAndWhere( "pca.prepareCourseStageId = :prepareCourseStageId") qctx.setInteger("prepareCourseStageId", self.prepareCourseStageId) if (self.prepareCourseId != None): qctx.addAndWhere("pca.prepareCourseId = :prepareCourseId") qctx.setInteger("prepareCourseId", self.prepareCourseId) if self.articleState != None: qctx.addAndWhere("pca.articleState = :articleState") qctx.setBoolean("articleState", self.articleState) def applyOrderCondition(self, qctx): if self.orderType == 0: qctx.addOrder("pca.prepareCourseArticleId DESC")
class ActionExecutor(JythonBaseAction, ActionResult): def __init__(self): self.params = ParamUtil(request) self.logger = LogFactory.getLog(self.__class__); def execute(self): # 得到命令, 并调用 dispatcher() 进行命令派发. cmd = self.params.getStringParam("cmd") result = self.dispatcher(cmd) # 如果没有任何链接加入到 actionLinks 中, 则添加一个缺省的. if not self.hasActionLinks(): self.addDefaultReturnActionLink() return result # 给用户提示未知命令 cmd. def unknownCommand(self, cmd='unknown'): self.addActionError("Unknown Command : " + cmd) return ActionResult.ERROR
class user(ActionExecutor): def __init__(self): self.params = ParamUtil(request) self.chatuser_svc = __spring__.getBean("chatUserService") def execute(self): request.setAttribute("ChatRoomName", "聊天室") if self.loginUser == None: response.getWriter().write("请先登录。") print "请先登录。" return roomId = self.params.getStringParam("roomId") if roomId == None or roomId == "": roomId = "1" userid = self.loginUser.getUserId() userName = self.loginUser.getTrueName() chatUser = self.chatuser_svc.getCacheChatUser(int(roomId), userid) if chatUser == None: chatUser = ChatUser() chatUser.userId = userid chatUser.roomId = int(roomId) chatUser.isLeave = False chatUser.isActived = True chatUser.userName = userName self.chatuser_svc.saveChatUser(chatUser) # 设置当前自己是在线状态 self.chatuser_svc.updateChatUserIsLeave(int(roomId), userid, False) roomUserList = self.chatuser_svc.getCacheChatUsers(int(roomId)) userList = [] for u in roomUserList: if u.isLeave == False and (u in userList) == False: userList.append(u) request.setAttribute("roomId", roomId) request.setAttribute("userList", userList) return "/WEB-INF/ftl/chat/user.ftl"
class user_customskin(ActionExecutor): def __init__(self): self.params = ParamUtil(request) self.page_svc = __spring__.getBean("pageService") self.login_user = self.getLoginUser() def execute(self): if self.loginUser == None: response.sendRedirect("../login.jsp") return None page = self.page_svc.getUserIndexPage(self.login_user) if page == None: self.addActionError(u"没有找到您的首页。") return ActionResult.ERROR if request.getMethod() == "POST": bgcolor = self.params.getStringParam("bgcolor") logo = self.params.getStringParam("logo") logoheight = self.params.getStringParam("logoheight") titletop = self.params.getStringParam("titletop") titleleft = self.params.getStringParam("titleleft") titledisplay = self.params.getStringParam("titledisplay") jstring = '{"bgcolor":"' + bgcolor + '","logo":"' + logo + '","logoheight":"' + logoheight + '","titleleft":"' + titleleft + '","titletop":"' + titletop + '","titledisplay":"' + titledisplay + '"}' jsObj = JSONObject.parse(jstring) self.page_svc.setPageCustomSkin(page, jsObj.toString()) self.addActionMessage(u"自定义设置已保存") return ActionResult.SUCCESS else: if page.customSkin != None: customSkin = JSONObject.parse(page.customSkin) color = customSkin["bgcolor"] if len(color) > 0 and color[0:1] == "#": color = color[1:6] request.setAttribute("color", color) request.setAttribute("customSkin", customSkin) else: customSkin = { "bgcolor": "", "logo": "", "logoheight": "", "titledisplay": "", "titleleft": "", "titletop": "" } request.setAttribute("customSkin", customSkin) return "/WEB-INF/ftl/user/user_custom_info.ftl"
class actionlist(BaseAction): def __init__(self): self.params = ParamUtil(request) def execute(self): self.out = response.writer if self.loginUser == None: self.out.write(u"请先<a href='../../login.jsp'>登录</a>,然后才能管理活动") return site_config = SiteConfig() site_config.get_config() show_type = self.params.getStringParam("type") self.pager = self.params.createPager() self.pager.itemName = u"活动" self.pager.itemUnit = u"个" qry = ActionQuery(""" act.title, act.createDate, act.actionId, act.ownerId, act.ownerType, act.createUserId, act.actionType, act.description, act.userLimit, act.startDateTime,act.finishDateTime, act.attendLimitDateTime, act.place, act.status, act.visibility, act.attendCount """) if show_type == "owner": qry.createUserId = self.loginUser.userId self.pager.totalRows = qry.count() action_list = qry.query_map(self.pager) request.setAttribute("action_list", action_list) request.setAttribute("pager", self.pager) response.setContentType("text/html; charset=UTF-8") if show_type == "owner": return "/WEB-INF/ftl/action/action_manage_list.ftl" else: return "/WEB-INF/ftl/action/action_list.ftl"
class group_video_category(ActionExecutor, CategoryMixiner): def __init__(self): ActionExecutor.__init__(self) self.params = ParamUtil(request) # execute() 由 ActionExecutor 实现, 我们只需要实现 dispatcher 即可. def dispatcher(self, cmd): if self.loginUser == None: return ActionResult.LOGIN # 得到当前协作组. if self.getCurrentGroup() == False: return ActionResult.ERROR # 计算协作组视频分类 itemType. self.itemType = self.toGroupVideoCategoryItemType(self.group) uuid = group_svc.getGroupCateUuid(self.group) if uuid == CategoryService.GROUP_CATEGORY_GUID_KTYJ: request.setAttribute("isKtGroup", "1") else: request.setAttribute("isKtGroup", "0") if cmd == None or cmd == '': cmd = 'list' if cmd == 'list': return self.list() elif cmd == 'add': return self.add() elif cmd == 'edit': return self.edit() elif cmd == 'save': return self.save() elif cmd == 'delete': return self.delete() self.addActionError("未知命令 : " + cmd) return ActionResult.ERROR # 列出视频分类列表. def list(self): #if self.getParentCategory() == False: # return ActionResult.ERROR self.category_tree = cate_svc.getCategoryTree(self.itemType) # print "self.category_tree = ", self.category_tree request.setAttribute("category_tree", self.category_tree) return "/WEB-INF/ftl/group/group_cate_video_list.ftl" # 添加一个分类. def add(self): if self.getParentCategory() == False: return ActionResult.ERROR # 得到整个分类树. category_tree = cate_svc.getCategoryTree(self.itemType) request.setAttribute("category_tree", category_tree) # 构造一个新分类. category = Category() category.itemType = self.itemType category.parentId = self.parentId request.setAttribute("category", category) return "/WEB-INF/ftl/group/group_cate_video_add.ftl" # 编辑修改/移动一个分类. def edit(self): # 得到要编辑的分类对象. if self.getCurrentCategory() == False: return ActionResult.ERROR request.setAttribute("category", self.category) # 得到整个分类树. category_tree = cate_svc.getCategoryTree(self.itemType) request.setAttribute("category_tree", category_tree) return "/WEB-INF/ftl/group/group_cate_video_add.ftl" # 新建/保存一个分类. def save(self): # 获得和验证父分类参数. if self.getParentCategory() == False: return ActionResult.ERROR #print "self.params = ", self.params # 从提交数据中组装出 category 对象. category = Category() category.categoryId = self.params.getIntParam("categoryId") category.name = self.params.getStringParam("name") category.itemType = self.itemType category.parentId = self.parentId category.description = self.params.getStringParam("description") # 简单验证. if category.name == None or category.name == "": self.addActionError(u"未填写分类名字.") return ActionResult.ERROR if category.categoryId == 0: # 创建该分类. cate_svc.createCategory(category) self.addActionMessage(u"分类 " + category.name + u" 创建成功.") else: # 更新/移动分类. cate_svc.updateCategory(category) self.addActionMessage(u"分类 " + category.name + u" 修改/移动操作成功完成.") link = "?cmd=list&groupId=" + str(self.group.groupId) self.addActionLink(u"返回", link) return ActionResult.SUCCESS # 删除所选分类. def delete(self): # 得到要删除的分类对象. if self.getCurrentCategory() == False: return ActionResult.ERROR # 验证其是否有子分类, 有子分类的必须要先删除子分类才能删除分类. if self.hasChildCategories(self.category): self.addActionError(u"分类 " + self.category.name + u" 有子分类, 必须先删除其所有子分类才能删除该分类.") return ActionResult.ERROR # 设置 GroupResource.groupCateId 都为 null. # 这里现在没有放在事务里面执行. self.updateGroupCategoryId(self.category) # 执行业务. cate_svc.deleteCategory(self.category) self.addActionMessage(u"分类 " + self.category.name + u" 已经成功删除.") return ActionResult.SUCCESS # 得到当前协作组, 协作组标识由页面传递过来. # 返回 True 表示有协作组, False 表示没有. def getCurrentGroup(self): # 得到协作组参数. groupId = self.params.getIntParam('groupId') if groupId == 0: self.addActionError(u"未给出要管理的协作组标识, 请确定您是从有效的链接进入的.") return False # 得到协作组. self.group = group_svc.getGroupMayCached(groupId) if self.group == None: self.addActionError(u"未找到指定标识为 %d 的协作组, 请确定您是从有效的链接进入的." % groupId) return False request.setAttribute("group", self.group) # TODO: 验证协作组状态. # TODO: 得到当前登录用户在协作组的身份. return True # 得到当前要操作的分类对象, 并验证其存在, 以及 itemType 匹配. # 返回 False 表示失败; True 表示成功. # 如果返回 True 则 self.category 中存放着拿出来的分类对象. def getCurrentCategory(self): categoryId = self.params.getIntParam("categoryId") if categoryId == 0: self.addActionError(u"未给出要操作的分类.") return False category = cate_svc.getCategory(categoryId) if category == None: self.addActionError(u"未找到指定标识为 " + str(categoryId) + u" 的分类.") return False # 验证分类类型必须匹配. if category.itemType != self.itemType: self.addActionError(u"不匹配的分类类型.") return False self.category = category return True # 得到父分类标识参数及父分类对象, 并进行 itemType 验证. def getParentCategory(self): self.parentId = self.params.getIntParamZeroAsNull("parentId") request.setAttribute("parentId", self.parentId) if self.parentId == None: # 认为是根分类. return True self.parentCategory = cate_svc.getCategory(self.parentId) request.setAttribute("parentCategory", self.parentCategory) # print "parentCategory = ", self.parentCategory if self.parentCategory == None: self.addActionError(u"未能找到指定标识的父分类, 请确定您是从有效的链接点击进入的.") return False if self.parentCategory.itemType != self.itemType: self.addActionError(u"不匹配的父分类类型: " + self.parentCategory.itemType) return False return True # 判断指定的分类是否具有子分类. def hasChildCategories(self, category): childCount = cate_svc.getChildrenCount(category.categoryId) return childCount > 0 # 设置 GroupResource.groupCateId == category.categoryId 都为 null def updateGroupCategoryId(self, category): cmd = Command(""" UPDATE GroupVideo SET groupCateId = NULL WHERE groupId = :groupId AND groupCateId = :groupCateId """) cmd.setInteger("groupId", self.group.groupId) cmd.setInteger("groupCateId", category.categoryId) count = cmd.update()
class group_mutilcates(ActionExecutor, ShowGroupBase, RequestMixiner, ResponseMixiner, PageCheckMixiner): def __init__(self): self.params = ParamUtil(request) self.group_svc = __jitar__.groupService self.page_svc = __jitar__.pageService def execute(self): categoryService = __jitar__.categoryService groupName = request.getAttribute("groupName") if groupName == None or groupName == "": return self.notFound() group = group_svc.getGroupByName(groupName) if group == None: return self.notFound() widgetId = self.params.getIntParamZeroAsNull("widgetId") if widgetId == None: return self.notFound() groupMutil = self.group_svc.getGroupMutilByWidgetId(widgetId) gm = None if self.loginUser != None: gm = self.group_svc.getGroupMemberByGroupIdAndUserId( group.groupId, self.loginUser.userId) request.setAttribute("group_member", gm) #课题研究组的分类 self.groupPrentId = None isKtGroup = 0 uuid = self.group_svc.getGroupCateUuid(group) if uuid == CategoryService.GROUP_CATEGORY_GUID_KTYJ: #课题 isKtGroup = 1 request.setAttribute("isKtGroup", "1") #课题的文章资源图片视频需要把下级的汇聚过来 self.groupPrentId = group.groupId elif uuid == CategoryService.GROUP_CATEGORY_GUID_JTBK: #备课 isKtGroup = 2 request.setAttribute("isKtGroup", "2") else: isKtGroup = 0 request.setAttribute("isKtGroup", "0") cmd = self.params.getStringParam("cmd") if cmd == "savecate": self.savecate() elif cmd == "savetitle": self.savetitle() itemType = CommonUtil.toGroupArticleCategoryItemType( group.getGroupId()) articleCate_tree = categoryService.getCategoryTree(itemType) itemType = CommonUtil.toGroupResourceCategoryItemType( group.getGroupId()) resourceCate_tree = categoryService.getCategoryTree(itemType) itemType = CommonUtil.toGroupPhotoCategoryItemType(group.getGroupId()) photoCate_tree = categoryService.getCategoryTree(itemType) itemType = CommonUtil.toGroupVideoCategoryItemType(group.getGroupId()) videoCate_tree = categoryService.getCategoryTree(itemType) request.setAttribute("articleCate_tree", articleCate_tree) request.setAttribute("resourceCate_tree", resourceCate_tree) request.setAttribute("photoCate_tree", photoCate_tree) request.setAttribute("videoCate_tree", videoCate_tree) article_cateId = 0 resource_cateId = 0 photo_cateId = 0 video_cateId = 0 if groupMutil != None: article_cateId = groupMutil.articleCateId resource_cateId = groupMutil.resourceCateId photo_cateId = groupMutil.photoCateId video_cateId = groupMutil.videoCateId article_cateName = "" resource_cateName = "" photo_cateName = "" video_cateName = "" if isKtGroup == 1: cateArt = categoryService.getCategory(article_cateId) cateRes = categoryService.getCategory(resource_cateId) catePho = categoryService.getCategory(photo_cateId) cateVio = categoryService.getCategory(video_cateId) if cateArt != None: article_cateName = cateArt.name if cateRes != None: resource_cateName = cateRes.name if catePho != None: photo_cateName = catePho.name if cateVio != None: video_cateName = cateVio.name qry1 = GroupMutilcatesQuery( """ v.videoId, v.title, v.tags, v.userId,v.href,v.flvHref,v.flvThumbNailHref,g.groupTitle,g.groupName """ ) if isKtGroup == 1: if video_cateName != "": qry1.videoCateName = video_cateName else: if groupMutil.videoCateId == None: qry1.videoCateId = 0 else: qry1.videoCateId = groupMutil.videoCateId qry1.groupPrentId = self.groupPrentId else: if groupMutil.videoCateId == None: qry1.videoCateId = 0 else: qry1.videoCateId = groupMutil.videoCateId qry1.widgetId = widgetId video_list = qry1.query_map(groupMutil.videoNumShow) request.setAttribute("video_list", video_list) qry2 = GroupMutilcatesQuery( """ p.photoId, p.title, p.tags, p.userId,p.isPrivateShow, p.createDate,p.href,g.groupTitle,g.groupName """ ) if isKtGroup == 1: if photo_cateName != "": qry2.photoCateName = photo_cateName else: if groupMutil.photoCateId == None: qry2.photoCateId = 0 else: qry2.photoCateId = groupMutil.photoCateId qry2.groupPrentId = self.groupPrentId else: if groupMutil.photoCateId == None: qry2.photoCateId = 0 else: qry2.photoCateId = groupMutil.photoCateId qry2.widgetId = widgetId photo_list = qry2.query_map(groupMutil.photoNumShow) request.setAttribute("photo_list", photo_list) qry3 = GroupMutilcatesQuery( """ a.articleId, a.title, a.userId ,a.createDate,a.typeState,g.groupTitle,g.groupName """ ) if isKtGroup == 1: if article_cateName != "": qry3.articleCateName = article_cateName else: if groupMutil.articleCateId == None: qry3.articleCateId = 0 else: qry3.articleCateId = groupMutil.articleCateId qry3.groupPrentId = self.groupPrentId else: if groupMutil.articleCateId == None: qry3.articleCateId = 0 else: qry3.articleCateId = groupMutil.articleCateId qry3.widgetId = widgetId article_list = qry3.query_map(groupMutil.articleNumShow) request.setAttribute("article_list", article_list) qry4 = GroupMutilcatesQuery( """ r.resourceId, r.title,r.userId,r.createDate,g.groupTitle,g.groupName """ ) if isKtGroup == 1: if resource_cateName != "": qry4.resourceCateName = resource_cateName else: if groupMutil.resourceCateId == None: qry4.resourceCateId = 0 else: qry4.resourceCateId = groupMutil.resourceCateId qry4.groupPrentId = self.groupPrentId else: if groupMutil.resourceCateId == None: qry4.resourceCateId = 0 else: qry4.resourceCateId = groupMutil.resourceCateId qry4.widgetId = widgetId resource_list = qry4.query_map(groupMutil.resourceNumShow) request.setAttribute("resource_list", resource_list) widget = self.page_svc.getWidget(widgetId) request.setAttribute("widget", widget) request.setAttribute("groupMutil", groupMutil) request.setAttribute("article_cateId", article_cateId) request.setAttribute("resource_cateId", resource_cateId) request.setAttribute("photo_cateId", photo_cateId) request.setAttribute("video_cateId", video_cateId) request.setAttribute("group", group) request.setAttribute("widgetId", widgetId) response.contentType = "text/html; charset=UTF-8" return "/WEB-INF/group/default/group_mutilcates.ftl" def notFound(self): response.contentType = "text/html; charset=UTF-8" out = response.writer out.write("未找到该协作组或参数不正确") return None def savetitle(self): widgetId = self.params.safeGetIntParam("widgetId") title = self.params.getStringParam("title") widget = self.page_svc.getWidget(widgetId) if widget != None: if title != "": widget.title = title self.page_svc.saveOrUpdate(widget) def savecate(self): widgetId = self.params.safeGetIntParam("widgetId") groupMutil = self.group_svc.getGroupMutilByWidgetId(widgetId) if groupMutil == None: groupMutil = GroupMutil() cate_art_Id = self.params.safeGetIntParam("cate_art_" + str(widgetId)) cate_res_Id = self.params.safeGetIntParam("cate_res_" + str(widgetId)) cate_pho_Id = self.params.safeGetIntParam("cate_pho_" + str(widgetId)) cate_vio_Id = self.params.safeGetIntParam("cate_vio_" + str(widgetId)) articlenum = self.params.safeGetIntParam("articlenum") if articlenum == 0: articlenum = 10 resourcenum = self.params.safeGetIntParam("resourcenum") if resourcenu == 0: resourcenum = 10 photonum = self.params.safeGetIntParam("photonum") if photonum == 0: photonum = 3 videonum = self.params.safeGetIntParam("videonum") if videonum == 0: videonum = 3 groupMutil.articleCateId = cate_art_Id groupMutil.resourceCateId = cate_res_Id groupMutil.photoCateId = cate_pho_Id groupMutil.videoCateId = cate_vio_Id groupMutil.articleNumShow = articlenum groupMutil.resourceNumShow = resourcenum groupMutil.photoNumShow = photonum groupMutil.videoNumShow = videonum self.group_svc.saveGroupMutil(groupMutil)
class groups(SubjectMixiner): def __init__(self): self.params = ParamUtil(request) return def execute(self): self.qrytype = self.params.getStringParam("type") # 协作组分类, 学科, 区县. self.get_group_cate() self.get_subject_list() # 学段分类. self.get_grade_list() # 推荐, 热门协作组, (最新不使用). self.get_rcmd_group_list() self.get_hot_group_list() # self.get_new_group_list() # 查询协作组. self.query_group_list() # 页面导航高亮为 'groups' request.setAttribute("head_nav", "groups") self.query_group_activity_list() response.contentType = "text/html; charset=UTF-8" return "/WEB-INF/ftl/site_groups.ftl" def _getCateSvc(self): return __jitar__.categoryService # 协作组分类. def get_group_cate(self): group_cate = self._getCateSvc().getCategoryTree("group") request.setAttribute("group_cate", group_cate) # 学科列表. def get_subject_list(self): self.putSubjectList() #学段 def get_grade_list(self): request.setAttribute("gradeId", self.params.getIntParamZeroAsNull("gradeId")) self.putGradeList() # 推荐协作组. def get_rcmd_group_list(self): qry = GroupQuery( """ g.groupId, g.groupIcon, g.groupTitle, g.createDate, g.groupIntroduce,g.parentId,g.XKXDName,g.XKXDId """ ) qry.isRecommend = True rcmd_group_list = qry.query_map(10) request.setAttribute("rcmd_group_list", rcmd_group_list) # 热门协作组. def get_hot_group_list(self): qry = GroupQuery( """ g.groupId, g.groupIcon, g.groupTitle, g.createDate, g.groupIntroduce, g.createUserId,g.parentId,g.XKXDName,g.XKXDId, u.loginName, u.nickName """) qry.orderType = GroupQuery.ORDER_BY_VISITCOUNT_DESC # visitCount DESC hot_group_list = qry.query_map() request.setAttribute("hot_group_list", hot_group_list) # 最新协作组. def get_new_group_list(self): qry = GroupQuery( """ g.groupId, g.groupIcon, g.groupTitle, g.createDate, g.groupIntroduce,g.parentId,g.XKXDName,g.XKXDId """ ) new_group_list = qry.query_map() request.setAttribute("new_group_list", new_group_list) # 查询协作组. def query_group_list(self): qry = GroupQuery( """ g.groupId, g.groupIcon, g.groupTitle, g.createDate, g.userCount,g.parentId, g.visitCount, g.articleCount, g.topicCount, g.resourceCount, g.groupIntroduce,g.XKXDName,g.XKXDId, g.groupTags, subj.subjectName, grad.gradeName, sc.name as scName """ ) qry.subjectId = self.params.getIntParamZeroAsNull('subjectId') qry.categoryId = self.params.getIntParamZeroAsNull('categoryId') qry.gradeId = self.params.getIntParamZeroAsNull('gradeId') qry.k = self.params.getStringParam("k") if self.qrytype != None: if self.qrytype == "best": qry.isBestGroup = True if self.qrytype == "rcmd": qry.isRecommend = True if self.qrytype == "hot": qry.orderType = GroupQuery.ORDER_BY_VISITCOUNT_DESC if self.qrytype == "new": qry.orderType = GroupQuery.ORDER_BY_ID_DESC pager = self.createPager() pager.totalRows = qry.count() group_list = qry.query_map(pager) request.setAttribute("group_list", group_list) #print "group_list = ", group_list request.setAttribute("pager", pager) request.setAttribute("subjectId", qry.subjectId) request.setAttribute("categoryId", qry.categoryId) request.setAttribute("gradeId", qry.gradeId) request.setAttribute("k", qry.k) # 创建分页对象. def createPager(self): pager = self.params.createPager() pager.itemName = u"协作组" pager.itemUnit = u"个" pager.pageSize = 10 return pager # 活跃度排行 def query_group_activity_list(self): # 活跃度算法 (g.userCount + g.articleCount + g.topicCount + g.resourceCount) / 10 hql = """ select new Map( g.groupId as groupId, g.groupTitle as groupTitle, g.parentId, (g.userCount + g.articleCount + g.topicCount + g.resourceCount) / 10 as totalCount) FROM Group g where g.groupState = 0 ORDER BY (g.userCount + g.articleCount + g.topicCount + g.resourceCount) DESC """ cmd = Command(hql) group_activity_list = cmd.open(25) request.setAttribute("group_activity_list", group_activity_list)
class preparecourse_topic_create(PrepareCoursePageService): def __init__(self): self.params = ParamUtil(request) self.printer = response.getWriter() self.pc_svc = __jitar__.getPrepareCourseService() def execute(self): self.getBaseData() response.setContentType("text/html; charset=UTF-8") if self.prepareCourseId == 0: self.printer.write(u"无效的课程标识。") return self.prepareCourse = self.getBasePrepareCourse() if self.prepareCourse == None: self.printer.write(u"没有加载到所请求的备课。") return if self.canView(self.prepareCourse) == False: self.printer.write(u"您无权查看本内容。") return currentStage = self.pc_svc.getPrepareCourseStage(self.prepareCourseStageId) if currentStage == None: self.printer.write(u"无效的流程标识。") return if request.getMethod() == "POST": title = self.params.getStringParam("topic_title") content = self.params.getStringParam("topicContent") if title == None or title == "": showError = ShowError() showError.msg = u"请输入标题。<a href='preparecourse_topic_create.py'>返回</a>" return showError.printError() if content == None or content == "": showError = ShowError() showError.msg = u"请输入讨论内容。<a href='preparecourse_topic_create.py'>返回</a>" return showError.printError() prepareCourseTopic = PrepareCourseTopic() prepareCourseTopic.setPrepareCourseId(self.prepareCourseId) prepareCourseTopic.setPrepareCourseStageId(self.prepareCourseStageId) prepareCourseTopic.setTitle(title) prepareCourseTopic.setContent(content) prepareCourseTopic.setUserId(self.loginUser.userId) prepareCourseTopic.setCreateDate(Date()) self.pc_svc.savePrepareCourseTopic(prepareCourseTopic) return_url = request.getContextPath() + "/p/" + str(self.prepareCourseId) + "/" + str(self.prepareCourseStageId) + "/" response.sendRedirect(return_url) return page = self.getPrepareCoursePageWithCustomSkin(self.prepareCourse) widgets = [ {"id": "1", "pageId":0, "columnIndex":1,"title":u"备课基本信息","module":"show_preparecourse_info", "ico":"", "data":""}, {"id": "placerholder1", "pageId":0, "columnIndex":2,"title":"","module":"placeholder", "ico":"", "data":""} ] request.setAttribute("widgets",widgets) request.setAttribute("widget_list",widgets) request.setAttribute("page", page) request.setAttribute("prepareCourse",self.prepareCourse) request.setAttribute("currentStage",currentStage) response.setContentType("text/html; charset=UTF-8") return "/WEB-INF/ftl/course/preparecourse_topic_create.ftl"
class group_ktusers(ActionExecutor,SubjectMixiner): def __init__(self): ActionExecutor.__init__(self) self.params = ParamUtil(request) # execute() 由 ActionExecutor 实现, 我们只需要实现 dispatcher 即可. def dispatcher(self, cmd): if self.loginUser == None: return ActionResult.LOGIN # 得到当前课题组. if self.getCurrentGroup() == False: return ActionResult.ERROR request.setAttribute("isKtGroup", "1") self.get_subject_list() # 学段分类. self.get_grade_list() if cmd == None or cmd == '': cmd = 'list' if cmd == 'list': return self.list() elif cmd == 'savektuser': return self.savektuser() elif cmd == 'delete': return self.delete() elif cmd == 'delete_ktuser': return self.deletektuser() elif cmd == 'edit_ktuser': return self.editktuser() elif cmd == 'save': return self.savektuserinfo() self.addActionError(u"未知命令 : " + cmd) return ActionResult.ERROR # 学科列表. def get_subject_list(self): self.putSubjectList() #学段 def get_grade_list(self): self.putGradeList() # 列出资源分类列表. def list(self): #print "ktuser_svc="+str(ktuser_svc) ktUserlist= ktuser_svc.GetGroupKTUsers(self.group.groupId); request.setAttribute("ktUserlist", ktUserlist) return "/WEB-INF/ftl/group/group_ktuser_list.ftl" def savektuserinfo(self): id = self.params.getIntParam('id') if id == 0: self.addActionError(u"缺少课题负责人id.") return ActionResult.ERROR ktuser=ktuser_svc.GetGroupKTUser(id) if ktuser==None: self.addActionError(u"没有找到课题负责人.") return ActionResult.ERROR ktuser.teacherXZZW=self.params.getStringParam('teacherXZZW') ktuser.teacherZYZW=self.params.getStringParam('teacherZYZW') ktuser.teacherXL=self.params.getStringParam('teacherXL') ktuser.teacherXW=self.params.getStringParam('teacherXW') ktuser.teacherYJZC=self.params.getStringParam('teacherYJZC') ktuser_svc.UpdateGroupKTUser(ktuser) return self.list(); def deletektuser(self): id = self.params.getIntParam('id') if id == 0: self.addActionError(u"请选择要删除的课题负责人.") return ActionResult.ERROR ktuser_svc.DeleteGroupKTUser(id); return self.list(); def editktuser(self): #修改课题负责人 id = self.params.getIntParam("id"); if id == 0: self.addActionError(u"请选择要修改的课题负责人.") return ActionResult.ERROR print "id="+str(id) ktuser=ktuser_svc.GetGroupKTUser(id) request.setAttribute("ktuser", ktuser) return "/WEB-INF/ftl/group/group_ktuser_edit.ftl" def delete(self): # 得到要删除的对象. ids = self.params.safeGetIntValues("ktuId"); if ids == None or ids.size() == 0: self.addActionError(u"没有选择要删除的负责人") return ActionResult.ERROR; #aid=ids.split(',') for id in ids: ktuser_svc.DeleteGroupKTUser(int(id)); #self.addActionMessage(u"课题负责人已经成功删除.") #return ActionResult.SUCCESS return self.list(); # 得到当前课题组, 课题组标识由页面传递过来. # 返回 True 表示有课题组, False 表示没有. def getCurrentGroup(self): # 得到课题组参数. groupId = self.params.getIntParam('groupId') if groupId == 0: self.addActionError(u"未给出要管理的课题组标识, 请确定您是从有效的链接进入的.") return False # 得到课题组. self.group = group_svc.getGroupMayCached(groupId) if self.group == None: self.addActionError(u"未找到指定标识为 %d 的课题组, 请确定您是从有效的链接进入的." % groupId) return False request.setAttribute("group", self.group) # TODO: 验证课题组状态. # TODO: 得到当前登录用户在课题组的身份. return True # 设置 GroupResource.groupCateId == category.categoryId 都为 null def updateGroupResourceCategoryId(self, category): cmd = Command(""" UPDATE GroupResource SET groupCateId = NULL WHERE groupId = :groupId AND groupCateId = :groupCateId """) cmd.setInteger("groupId", self.group.groupId) cmd.setInteger("groupCateId", category.categoryId) count = cmd.update()
class site_subject_resources(SubjectMixiner): def __init__(self): self.params = ParamUtil(request) def execute(self): #print "site_subject_resources python 脚本正在执行" self.putSubject() # 资源分类 self.get_res_cates() # 资源上载排行 self.get_upload_sorter() # 资源下载排行 self.get_download_resource_list() # 高亮显示项目. self.setData("head_nav", "resources") return "success" def _getCateSvc(self): return __jitar__.categoryService # 资源分类. def get_res_cates(self): res_cates = self._getCateSvc().getCategoryTree("resource") request.setAttribute("res_cates", res_cates) # 资源主列表. self.query_resource() #resource_list = QueryResourceBean() #resource_list.varName = "resource_list" #resource_list.usePager = 1 #self.addBean(resource_list) # 资源上载排行. def get_upload_sorter(self): qry = UserQuery(""" u.resourceCount, u.loginName, u.nickName """) qry.orderType = 4 #UserQuery.ORDER_TYPE_RESOURCE_COUNT_DESC upload_sorter = qry.query_map(20) request.setAttribute("upload_sorter", upload_sorter) # 资源下载排行. def get_download_resource_list(self): qry = ResourceQuery( """ r.resourceId, r.href, r.title, r.downloadCount """) qry.subjectId = self.params.getIntParamZeroAsNull("subjectId") qry.sysCateId = self.params.getIntParamZeroAsNull("categoryId") qry.k = self.params.getStringParam("k") qry.orderType = 4 download_resource_list = qry.query_map(20) request.setAttribute("download_resource_list", download_resource_list) #print "download_resource_list = ", download_resource_list # 资源查询主列表. def query_resource(self): qry = ResourceQuery( """ r.resourceId, r.title, r.href, r.fsize, r.createDate, u.loginName, u.nickName, grad.gradeName, sc.name as scName """) pager = self.createPager() # 根据页面参数处理. type = self.params.getStringParam("type") if type == "rcmd": qry.rcmdState = True elif type == "hot": qry.orderType = ResourceQuery.ORDER_TYPE_DOWNLOADCOUNT_DESC elif type == "cmt": qry.orderType = ResourceQuery.ORDER_TYPE_COMMENTCOUNT_DESC else: type = "new" request.setAttribute("type", type) qry.subjectId = self.subject.subjectId qry.k = self.params.getStringParam("k") qry.sysCateId = self.params.getIntParamZeroAsNull("categoryId") # 查询数据. pager.totalRows = qry.count() resource_list = qry.query_map(pager) request.setAttribute("resource_list", resource_list) request.setAttribute("pager", pager) def createPager(self): pager = self.params.createPager() pager.pageSize = 20 pager.itemName = u"资源" pager.itemUnit = u"个" return pager
class category_Order_article (ActionExecutor): CATEGORY_LIST = "/WEB-INF/ftl/admin/category_Order.ftl" # 构造. def __init__(self): self.params = ParamUtil(request) self.cate_svc = __jitar__.categoryService self.itemType = "user" return # 根据'cmd'进行派发. def dispatcher(self, cmd): # 以下必须要求是登录用户 if self.loginUser == None: return ActionResult.LOGIN if self.loginUser == None: self.addActionError(u"请重新登陆.") return ActionResult.ERROR # 根据cmd参数,执行相应的方法. if cmd == "" or cmd == None or cmd == "list": return self.list() # 列表显示. elif cmd == "save": return self.save() # 保存. else : self.addActionError(u"未知的命令参数:" + cmd) return ActionResult.ERROR # 系统所有机构的列表显示. def list(self): # 构造查询.根据传递的参数与权限结合来判断显示什么分类 # default 缺省为系统分类, 也就是文章分类 # group 群组分类 # resource 资源分类 # photo 照片分类 # blog 工作组分类 # user_1 用户1的分类 # gres_1 协助组1的分类 # user_res_1 用户1的资源分类 if self.loginUser == None: return ActionResult.LOGIN query = AdminCategoryQuery(""" cat.categoryId, cat.name, cat.itemType, cat.parentId, cat.parentPath,cat.childNum, cat.orderNum, cat.description """) self.localTypeName = ""; self.parentId = self.params.getIntParamZeroAsNull("parentId") self.itemType = self.params.getStringParam("type") #print 'parentId='+str(self.parentId) #print 'itemType='+self.itemType #print 'split0-4='+self.itemType[0:4] if self.itemType == None or self.itemType == '': self.itemType = 'default' query.itemType = self.itemType query.parentId = self.parentId if self.itemType == 'default' or self.itemType == 'group' or self.itemType == 'resource' or self.itemType == 'blog' or self.itemType == 'photo': # TODO: 权限检查. # print self.itemType self.localTypeName = self.itemType if self.canAdmin() == False: self.addActionError(u"没有管理系统分类的权限.") return ActionResult.ERROR elif self.itemType[0:9] == 'user_res_': #TODO: 检查当前用户是否是本分类的用户 # print self.itemType cateUserId = self.itemType[9:] if str(self.loginUser.userId) == cateUserId: self.localTypeName = "user_res" self.cateUserId = cateUserId else: self.addActionError(u"您不是id=" + str(cateUserId) + u"的用户") return ActionResult.ERROR elif self.itemType[0:5] == 'user_': #TODO: 检查当前用户是否是本分类的用户 # print self.itemType cateUserId = self.itemType[5:] # print "cateUserId=" + str(cateUserId) # print "myID=" + str(self.loginUser.userId) if str(self.loginUser.userId) == cateUserId: self.localTypeName = "user" self.cateUserId = cateUserId else: self.addActionError(u"您不是id=" + str(cateUserId) + u"的用户") return ActionResult.ERROR elif self.itemType[0:5] == 'gres_': #TODO: 检查当前用户是否是协作组的管理员 #print self.itemType groupId = self.itemType[5:] #print "groupId=" + str(groupId) gmQuery = GroupMemberQuery(""" gm.groupId, gm.groupRole """) gmQuery.userId = self.loginUser.userId gmQuery.groupId = int(groupId) group_list = gmQuery.query_map(1) if group_list.size > 0: self.localTypeName = "gres" self.cateGroupId = int(groupId) else: self.addActionError(u"您不是id=" + str(cateUserId) + u"的群组管理员") return ActionResult.ERROR else: # print self.itemType self.addActionError("无效的参数") return ActionResult.ERROR # 调用分页函数. pager = self.createPager() pager.totalRows = query.count() # 得到所有分类的列表. cateList = query.query_map(pager) # 传给页面. request.setAttribute("category_list", cateList) request.setAttribute("pager", pager) # 将参数放到查询的页面. request.setAttribute("parentId", query.parentId) request.setAttribute("itemType", query.itemType) request.setAttribute("type", self.localTypeName) if query.parentId == '' or query.parentId == None: request.setAttribute("parentparentId", "") else: pcategory = self.cate_svc.getCategory(int(query.parentId)) if pcategory == None: request.setAttribute("parentparentId", "") else: request.setAttribute("parentparentId", pcategory.parentId) # 返回到要显示的页面. return self.CATEGORY_LIST # 保存分类排序结果 def save(self): cate_ids = self.params.getIdList("cateid") nos = self.params.getIdList("orderNo") if cate_ids == None or cate_ids.size() == 0: self.addActionError(u"没有选择要操作的分类.") return ActionResult.ERROR if nos == None or nos.size() == 0: self.addActionError(u"没有选择要操作的分类序号.") return ActionResult.ERROR iIndex = -1 for id in cate_ids: iIndex = iIndex + 1 no = nos[iIndex] #print "id=" + str(id) + " no=" + str(no) category = self.cate_svc.getCategory(id) if category == None: self.addActionError(u"未能找到标识为 " + id + u" 的分类ᅡᅴ") return ActionResult.ERROR else: self.cate_svc.setCategoryOrder(id, no) self.parentId = self.params.getIntParamZeroAsNull("parentId") self.itemType = self.params.getStringParam("type") link = "?cmd=list&type=" + str(self.itemType) + "&parentId=" if self.parentId != None: link += str(self.parentId) self.addActionLink(u"返回", link) return ActionResult.SUCCESS # 创建并返回一个分页对象. def createPager(self): # 调用Java的函数. pager = self.params.createPager() pager.itemName = u"分类" pager.itemUnit = u"个" pager.pageSize = 20 return pager
class admin_school_link(BaseAdminAction, ActionResult): # 常量 机构风采系统类型 = 100. ObjectType_System = 100 # 常量 机构风采标识 = 1 . ObjectId_School = 1 def __init__(self): self.link_svc = __spring__.getBean("linkService") self.params = ParamUtil(request) return # 执行请求. def execute(self): #print "hello, admin_school_link is executed" # 必须要求登录和具有管理权限. if self.loginUser == None: return ActionResult.LOGIN if self.canAdmin() == False: self.addActionError(u"没有管理机构链接的权限.") return ActionResult.ERROR cmd = self.params.safeGetStringParam("cmd") if cmd == "" or cmd == None: cmd = "list" if cmd == "list": return self.list() elif cmd == "add": return self.add() elif cmd == "edit": return self.edit() elif cmd == "save": return self.save() elif cmd == "delete": return self.delete() else: self.addActionError(u"未知命令参数 : " + cmd) return ActionResult.ERROR # 按照分页列出链接. def list(self): pager = self.params.createPager() pager.itemName = u"机构链接" pager.itemUnit = u"个" # 计算总数. hql = """ SELECT COUNT(*) FROM Link WHERE objectType = :objectType AND objectId = :objectId """ cmd = Command(hql) cmd.setInteger("objectType", self.ObjectType_System) cmd.setInteger("objectId", self.ObjectId_School) pager.totalRows = cmd.int_scalar() # 获取当前页. hql = """ FROM Link WHERE objectType = :objectType AND objectId = :objectId ORDER BY linkId DESC """ cmd = Command(hql) cmd.setInteger("objectType", self.ObjectType_System) cmd.setInteger("objectId", self.ObjectId_School) link_list = cmd.open(pager) request.setAttribute("link_list", link_list) request.setAttribute("pager", pager) #DEBUG: print "link_list = ", link_list return "/WEB-INF/ftl/admin/school_link_list.ftl" # 增加一个链接. def add(self): link = Link() link.linkAddress = "http://" link.linkType = 1 request.setAttribute("link", link) return "/WEB-INF/ftl/admin/school_link_add.ftl" # 编辑一个现有链接. def edit(self): linkId = self.params.getIntParam("linkId") link = self.link_svc.getLinkById(linkId) if link == None: self.addActionError(u"无法找到指定标识的机构风采链接对象") return ActionResult.ERROR request.setAttribute("link", link) return "/WEB-INF/ftl/admin/school_link_add.ftl" # 保存链接. def save(self): link = self.collect() self.link_svc.saveLink(link) self.addActionMessage(u"保存链接 " + link.toDisplayString() + u"成功完成") return ActionResult.SUCCESS def delete(self): ids = self.params.getIdList("linkId") if ids == None or ids.size() == 0: self.addActionError(u"未选择任何要操作的链接") return ActionResult.ERROR oper_count = 0 for linkId in ids: # 得到链接对象. link = self.link_svc.getLinkById(linkId) if link == None: self.addActionMessage(u"未能找到指定标识为 " + str(linkId) + u" 的机构链接") continue # TODO: 验证权限. # 实施删除. self.link_svc.deleteLink(link) self.addActionMessage(u"链接 " + link.toDisplayString() + u" 已经成功删除") oper_count += 1 self.addActionMessage(u"共删除了 " + str(oper_count) + u" 个链接") return ActionResult.SUCCESS # 从页面提交参数收集 Link 对象. def collect(self): link = Link() link.linkId = self.params.getIntParam("linkId") # link.objectType = self.params.getIntParam("objectType") link.objectType = self.ObjectType_System # link.objectId = self.params.getIntParam("objectId") link.objectId = self.ObjectId_School link.title = self.params.getStringParam("title") link.linkAddress = self.params.getStringParam("linkAddress") link.linkType = self.params.getIntParam("linkType") link.description = self.params.getStringParam("description") link.linkIcon = self.params.getStringParam("linkIcon") return link