コード例 #1
0
ファイル: js_resource.py プロジェクト: yxxcrtd/jitar2.0
class js_resource:
    def execute(self):
        # 完整的调用参数:
        # top=10&count=10&type=0&cateid=53&author=1&date=1&groupId=42
        unitService = __jitar__.unitService
        self.params = ParamUtil(request)
        ShowCount = self.params.getIntParam("count")
        ShowTop = self.params.getIntParam("top")
        ShowType = self.params.getIntParam("type")
        ShowAuthor = self.params.getIntParamZeroAsNull("author")
        ShowDate = self.params.getIntParamZeroAsNull("date")

        unitId = self.params.getIntParamZeroAsNull("unitid")
        cateid = self.params.getIntParamZeroAsNull("cateid")
        groupId = self.params.getIntParamZeroAsNull("groupId")
        if unitId == None:
            rootUnit = unitService.getRootUnit()
        else:
            rootUnit = unitService.getUnitById(unitId)

        if rootUnit == None:
            response.getWriter().println(u"document.write('没有根单位。')")
            return

        if ShowTop == None or ShowTop == 0:
            ShowTop = 10
        if ShowCount == None or ShowCount == 0:
            ShowCount = 10
        if ShowType == None:
            ShowType = 0

        if groupId != None and groupId != 0:
            qry = GroupResourceQuery(
                """ r.resourceId, r.title, r.createDate, u.userId, u.loginName, u.trueName """
            )
            qry.groupId = groupId
            if ShowType == 1:
                # 小组精华
                qry.isGroupBest = True
        else:
            qry = ResourceQuery(
                """ r.resourceId, r.title, r.createDate, u.userId, u.loginName, u.trueName """
            )
            qry.sysCateId = cateid
            if ShowType == 1:
                #推荐资源
                qry.custormAndWhereClause = "r.rcmdPathInfo Like '%/" + str(
                    rootUnit.unitId
                ) + "/%' and r.approvedPathInfo Like '%/" + str(
                    rootUnit.unitId) + "/%'"
            else:
                qry.custormAndWhereClause = "r.approvedPathInfo Like '%/" + str(
                    rootUnit.unitId) + "/%'"
        resource_list = qry.query_map(ShowTop)
        request.setAttribute("resource_list", resource_list)
        request.setAttribute("ShowAuthor", ShowAuthor)
        request.setAttribute("ShowDate", ShowDate)
        request.setAttribute("ShowCount", ShowCount)
        response.contentType = "text/html; charset=utf-8"
        return "/WEB-INF/ftl/js_resource.ftl"
コード例 #2
0
ファイル: js_user.py プロジェクト: yxxcrtd/jitar2.0
class js_user:
    def execute(self):
        # 完整的调用参数:
        # js_user.py?top=10&count=10&type=2&cateid=99

        # 默认支持 subjectId,gradeId 参数带这些值,默认是支持的
        # 更多参数请参见  user_query 的成员定义。

        self.params = ParamUtil(request)
        ShowCount = self.params.getIntParam("count")
        ShowTop = self.params.getIntParam("top")
        ShowType = self.params.getIntParam("type")

        unitId = self.params.getIntParamZeroAsNull("unitid")
        cateid = self.params.getIntParamZeroAsNull("cateid")
        groupId = self.params.getIntParamZeroAsNull("groupId")
        if ShowTop == None or ShowTop == 0:
            ShowTop = 10
        if ShowCount == None or ShowCount == 0:
            ShowCount = 10
        if ShowType == None:
            ShowType = 0

        qry = UserQuery(" u.userId,u.loginName,u.trueName ")
        qry.unitId = unitId
        qry.sysCateId = cateid
        qry.groupId = groupId

        if ShowType > 0: qry.userTypeId = ShowType

        user_list = qry.query_map(ShowTop)
        request.setAttribute("user_list", user_list)
        request.setAttribute("ShowCount", ShowCount)
        response.contentType = "text/html; charset=utf-8"
        return "/WEB-INF/ftl/js_user.ftl"
コード例 #3
0
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")
コード例 #4
0
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")
コード例 #5
0
ファイル: js_video.py プロジェクト: yxxcrtd/jitar2.0
class js_video:
    def execute(self):
        # 完整的调用参数:
        # js_video.py?top=4&count=4&type=0&cateid=13

        # 默认支持 subjectId,gradeId,参数带这些值,默认是支持的
        # 更多参数请参见 js_video。

        self.params = ParamUtil(request)
        ShowCount = self.params.getIntParam("count")
        ShowTop = self.params.getIntParam("top")
        unitId = self.params.getIntParamZeroAsNull("unitid")
        cateid = self.params.getIntParamZeroAsNull("cateid")
        if ShowTop == None or ShowTop == 0:
            ShowTop = 10
        if ShowCount == None or ShowCount == 0:
            ShowCount = 10
        qry = VideoQuery(" v.videoId, v.title, v.createDate ")
        qry.categoryId = cateid
        video_list = qry.query_map(ShowTop)

        request.setAttribute("video_list", video_list)
        request.setAttribute("ShowCount", ShowCount)
        response.contentType = "text/html; charset=utf-8"
        return "/WEB-INF/ftl/js_video.ftl"
コード例 #6
0
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
コード例 #7
0
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
コード例 #8
0
    def execute(self):
        params = ParamUtil(request)
        self.categoryId = params.getIntParamZeroAsNull("cid")
        self.userName = request.getAttribute("loginName")
        self.user = __jitar__.userService.getUserByLoginName(self.userName)
        if self.user == None:
            return "/WEB-INF/user/default/user_category_article_list.ftl"
        if self.categoryId == None: self.categoryId = 0

        # 生成静态html
        pagingService = __spring__.getBean("pagingService")
        pagingQuery = PagingQuery()
        pagingQuery.keyName = "ArticleId"
        pagingQuery.fetchFieldsName = "*"
        pagingQuery.orderByFieldName = "ArticleId DESC"
        pagingQuery.spName = "findPagingArticleBase"
        pagingQuery.tableName = "HtmlArticleBase"
        pagingQuery.whereClause = "userId = " + str(
            self.user.userId
        ) + " And HideState = 0 And AuditState = 0 And DraftState = 0 And DelState = 0"
        if self.categoryId != None and self.categoryId > 0:
            pagingQuery.whereClause = pagingQuery.whereClause + " And UserCateId=" + str(
                self.categoryId)

        pager = Pager()
        pager.setCurrentPage(params.safeGetIntParam("page", 1))
        pager.setPageSize(20)
        article_list = pagingService.getPagingList(pagingQuery, pager)

        request.setAttribute("article_list", article_list)
        return "/WEB-INF/user/default/user_category_article_list.ftl"
コード例 #9
0
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")
コード例 #10
0
ファイル: js_group.py プロジェクト: yxxcrtd/jitar2.0
class js_group:
    def execute(self):
        # 完整的调用参数:
        # js_group.py?top=10&type=0&cateid=49
        self.params = ParamUtil(request)
        ShowTop = self.params.getIntParam("top")
        ShowType = self.params.getIntParam("type")
        cateid = self.params.getIntParamZeroAsNull("cateid")
        if ShowTop == None or ShowTop == 0:
            ShowTop = 10
        if ShowType == None:
            ShowType = 0

        qry = GroupQuery(" g.groupName,g.groupTitle ")
        qry.categoryId = cateid
        if ShowType == 1:
            qry.isRecommend = True
        elif ShowType == 2:
            qry.isBestGroup = True

        group_list = qry.query_map(ShowTop)
        request.setAttribute("group_list", group_list)
        response.contentType = "text/html; charset=utf-8"
        return "/WEB-INF/ftl/js_group.ftl"
コード例 #11
0
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
コード例 #12
0
class searchRelatedPrepareCourse(BaseAdminAction, ActionResult,SubjectMixiner):
    
    def __init__(self):
        self.params = ParamUtil(request)
        self.printer = response.getWriter()        
        self.pc_svc = __jitar__.getPrepareCourseService()
        
    def execute(self):
        if self.loginUser == None:
            return ActionResult.LOGIN
        
        #print "prepareCourseId="+self.params.safeGetStringParam("prepareCourseId")
        
        self.prepareCourseId = self.params.getIntParam("prepareCourseId")
        if self.prepareCourseId == 0:
            print(u"无效的备课标识[prepareCourseId]!")
            return  
        request.setAttribute("prepareCourseId", self.prepareCourseId)
        self.putSubjectList()
    	self.putGradeList()
        guid = self.params.safeGetIntValues("guid")
        cmd = self.params.safeGetStringParam("cmd")
    	if cmd=="2":
            for id in guid:
                self.pc_svc.insertRelatedPrepareCourse(self.prepareCourseId,id,self.loginUser.userId)    
    	    return "/WEB-INF/ftl/closeOpener.ftl"
        return self.preparecourse_search()

    # 例如: 3100 -》 false  3000 ->> true
    def bNumber(self, intV):
        if intV == None:
            return False    
        strV = str(intV)
        if strV.isdigit() == False:
            return False    
        intStrLen = len(strV)        
        if intStrLen < 2:
            return False
        strPad = "0"
        b=True
        for i in range(1, intStrLen):
            if strV[i]!='0':
               b=False
        return b
    def preparecourse_search(self):
        pager = self.params.createPager()
        pager.itemName = u"备课"
        pager.itemUnit = u"个"
        pager.pageSize = 20
        k = self.params.getStringParam("k")
        ktype= self.params.getStringParam("ktype") #查询类型[关键字对应的类型]
        if ktype==None:
            ktype="1"
        unit = self.params.getStringParam("unit")  #主备人所属机构
        course_BeginDate = self.params.getStringParam("course_BeginDate")
        subjectId = self.params.getIntParamZeroAsNull("subjectId") 
        gradeId = self.params.getIntParamZeroAsNull("gradeId")
        if ktype=="2":
            qry = PrepareCourseQuery(""" pc.createUserId,pc.leaderId,pc.memberCount,pc.articleCount,pc.resourceCount,
                                    pc.status,pc.actionCount,pc.topicCount,pc.topicReplyCount,pc.viewCount,pc.startDate,
                                    pc.title, pc.prepareCourseId, pc.createDate, pc.metaSubjectId, pc.gradeId,pc.recommendState,
                                    u.trueName
                                """)
        elif ktype=="3" or ktype=="4":
            qry = PrepareCourseQuery(""" pc.createUserId,pc.leaderId,pc.memberCount,pc.articleCount,pc.resourceCount,
                                    pc.status,pc.actionCount,pc.topicCount,pc.topicReplyCount,pc.viewCount,pc.startDate,
                                    pc.title, pc.prepareCourseId, pc.createDate, pc.metaSubjectId, pc.gradeId,pc.recommendState,
                                    ul.trueName
                                """)
        else:
            qry = PrepareCourseQuery(""" pc.createUserId,pc.leaderId,pc.memberCount,pc.articleCount,pc.resourceCount,
                                    pc.status,pc.actionCount,pc.topicCount,pc.topicReplyCount,pc.viewCount,pc.startDate,
                                    pc.title, pc.prepareCourseId, pc.createDate, pc.metaSubjectId, pc.gradeId,pc.recommendState
                                """)
        if self.bNumber(gradeId)==True:
            qry.containChild=True
        else:
            qry.containChild=False	
        pager.totalRows = qry.count()
        course_list = qry.query_map(pager)
        request.setAttribute("pager", pager)
        sPrivateCount = 0
        sEditCount = 0
        privateCountList = []
        editCountList = []
        if course_list.size() > 0:
            for pc in course_list:
                pcId = pc['prepareCourseId'] 
                sPrivateCount = self.pc_svc.getPrepareCourseContentCount(pcId)
                #print " PrivateCount="+str(sPrivateCount)
                sEditCount = self.pc_svc.getPrepareCourseEditCount(pcId)
                #print " sEditCount="+str(sEditCount)
                privateCountList.append(sPrivateCount)
                editCountList.append(sEditCount)
        request.setAttribute("preparecourse_list", course_list)
        request.setAttribute("privateCountList", privateCountList)
        request.setAttribute("editCountList", editCountList)
        return "/WEB-INF/ftl/course/searchRelatedPrepareCourse.ftl"
コード例 #13
0
ファイル: ktgroups.py プロジェクト: yxxcrtd/jitar2.0
class ktgroups(SubjectMixiner):
    def __init__(self):
        self.params = ParamUtil(request)
        return

    def execute(self):
        #得到课题组的分类!
        ktuuid = CategoryService.GROUP_CATEGORY_GUID_KTYJ
        ktcate = cate_svc.getCategory(ktuuid)
        #永远查找的是课题组的分类
        self.categoryId = ktcate.categoryId
        # 页面导航高亮为 'ktgroups'
        request.setAttribute("head_nav", "ktgroups")
        response.contentType = "text/html; charset=UTF-8"
        act = self.params.safeGetStringParam("act", "")
        if act == "all":
            type = self.params.safeGetStringParam("type", "")
            if type == "placard":
                self.get_group_placard_page_list()
                return "/WEB-INF/ftl/site_ktgroups_placard.ftl"
            elif type == "article":
                self.get_group_article_page_list()
                return "/WEB-INF/ftl/site_ktgroups_article.ftl"
            elif type == "resource":
                self.get_group_resource_page_list()
                return "/WEB-INF/ftl/site_ktgroups_resource.ftl"
            elif type == "photo":
                self.get_group_photo_page_list()
                return "/WEB-INF/ftl/site_ktgroups_photo.ftl"
            elif type == "video":
                self.get_group_video_page_list()
                return "/WEB-INF/ftl/site_ktgroups_video.ftl"

        # 学科
        self.get_subject_list()
        # 学段分类.
        self.get_grade_list()

        #课题公告
        self.get_group_placard_list()

        #课题成果 文章 资源 图片 视频
        self.get_group_article_list()
        self.get_group_resource_list()
        self.get_group_photo_list()
        self.get_group_video_list()

        # 查询课题组.
        self.query_group_list()

        return "/WEB-INF/ftl/site_ktgroups.ftl"

    # 学科列表.
    def get_subject_list(self):
        self.putSubjectList()

    #学段
    def get_grade_list(self):
        request.setAttribute("gradeId",
                             self.params.getIntParamZeroAsNull("gradeId"))
        self.putGradeList()

    # 公告.
    def get_group_placard_list(self):
        qry = PlacardQuery(
            "pld.id, pld.title, pld.createDate, pld.userId,g.groupTitle,g.groupName"
        )
        qry.objType = ObjectType.OBJECT_TYPE_GROUP.getTypeId()
        qry.objId = None
        qry.groupCateId = self.categoryId
        placard_list = qry.query_map(5)
        request.setAttribute("placard_list", placard_list)

    def get_group_placard_page_list(self):
        qry = PlacardQuery(
            "pld.id, pld.title, pld.createDate, pld.userId,g.groupTitle,g.groupName"
        )
        qry.objType = ObjectType.OBJECT_TYPE_GROUP.getTypeId()
        qry.objId = None
        qry.groupCateId = self.categoryId
        pager = self.params.createPager()
        pager.itemName = u"公告"
        pager.itemUnit = u"个"
        pager.pageSize = 20
        pager.totalRows = qry.count()
        placard_list = qry.query_map(pager)
        request.setAttribute("pager", pager)
        request.setAttribute("placard_list", placard_list)

    # 成果文章.
    def get_group_article_list(self):
        qry = GroupMutilcatesQuery(
            """ a.articleId, a.title,a.userId,a.typeState,a.createDate,g.groupTitle,g.groupName """
        )
        qry.articleCateName = u"成果"
        qry.groupCateId = self.categoryId
        article_list = qry.query_map(5)
        request.setAttribute("article_list", article_list)

    # 成果文章.
    def get_group_article_page_list(self):
        qry = GroupMutilcatesQuery(
            """ a.articleId, a.title,a.userId,a.typeState,a.createDate,g.groupTitle,g.groupName """
        )
        qry.articleCateName = u"成果"
        qry.groupCateId = self.categoryId
        pager = self.params.createPager()
        pager.itemName = u"文章"
        pager.itemUnit = u"篇"
        pager.pageSize = 20
        pager.totalRows = qry.count()
        article_list = qry.query_map(pager)
        request.setAttribute("pager", pager)
        request.setAttribute("article_list", article_list)

    # 成果资源 .
    def get_group_resource_list(self):
        qry = GroupMutilcatesQuery(
            """ r.resourceId, r.title,r.userId,r.downloadCount,r.createDate,r.href,g.groupTitle,g.groupName """
        )
        qry.resourceCateName = u"成果"
        qry.groupCateId = self.categoryId
        resource_list = qry.query_map(5)
        request.setAttribute("resource_list", resource_list)

    # 成果资源 .
    def get_group_resource_page_list(self):
        qry = GroupMutilcatesQuery(
            """ r.resourceId, r.title,r.userId,r.downloadCount,r.createDate,r.href,g.groupTitle,g.groupName """
        )
        qry.resourceCateName = u"成果"
        qry.groupCateId = self.categoryId
        pager = self.params.createPager()
        pager.itemName = u"文章"
        pager.itemUnit = u"篇"
        pager.pageSize = 20
        pager.totalRows = qry.count()
        resource_list = qry.query_map(pager)
        request.setAttribute("pager", pager)
        request.setAttribute("resource_list", resource_list)

    # 成果照片 .
    def get_group_photo_list(self):
        qry = GroupMutilcatesQuery(
            """ p.photoId, p.title, p.tags, p.userId, p.createDate,p.href,g.groupTitle,g.groupName """
        )
        qry.photoCateName = u"成果"
        qry.groupCateId = self.categoryId
        photo_list = qry.query_map(4)
        request.setAttribute("photo_list", photo_list)

    # 成果照片 .
    def get_group_photo_page_list(self):
        qry = GroupMutilcatesQuery(
            """ p.photoId, p.title, p.tags, p.userId, p.createDate,p.href,g.groupTitle,g.groupName """
        )
        qry.photoCateName = u"成果"
        qry.groupCateId = self.categoryId
        pager = self.params.createPager()
        pager.itemName = u"照片"
        pager.itemUnit = u"张"
        pager.pageSize = 20
        pager.totalRows = qry.count()
        photo_list = qry.query_map(pager)
        request.setAttribute("pager", pager)
        request.setAttribute("photo_list", photo_list)

    # 成果视频.
    def get_group_video_list(self):
        qry = GroupMutilcatesQuery(
            """ v.videoId, v.title, v.tags, v.userId,v.href,v.flvHref,v.flvThumbNailHref,v.createDate,g.groupTitle,g.groupName """
        )
        qry.videoCateName = u"成果"
        qry.groupCateId = self.categoryId
        video_list = qry.query_map(4)
        request.setAttribute("video_list", video_list)

    # 成果视频.
    def get_group_video_page_list(self):
        qry = GroupMutilcatesQuery(
            """ v.videoId, v.title, v.tags, v.userId,v.href,v.flvHref,v.flvThumbNailHref,v.createDate,g.groupTitle,g.groupName """
        )
        qry.videoCateName = u"成果"
        qry.groupCateId = self.categoryId
        pager = self.params.createPager()
        pager.itemName = u"视频"
        pager.itemUnit = u"个"
        pager.pageSize = 20
        pager.totalRows = qry.count()
        video_list = qry.query_map(pager)
        request.setAttribute("pager", pager)
        request.setAttribute("video_list", video_list)

    # 查询课题组.
    def query_group_list(self):
        qry = GroupQuery(
            """ g.groupId, g.groupIcon, g.groupTitle, g.createDate, g.userCount,
              g.visitCount, g.articleCount, g.topicCount, g.resourceCount, g.groupIntroduce,
              g.groupTags, subj.subjectName, grad.gradeName, sc.name as scName """
        )
        qry.subjectId = self.params.getIntParamZeroAsNull('subjectId')
        qry.categoryId = self.categoryId
        qry.gradeId = self.params.getIntParamZeroAsNull('gradeId')
        qry.searchtype = self.params.getStringParam('searchtype')
        qry.kk = self.params.getStringParam("k")

        pager = self.createPager()

        pager.totalRows = qry.count()
        group_list = qry.query_map(pager)
        request.setAttribute("group_list", group_list)
        ggg = []
        for gg in group_list:
            gid = gg["groupId"]
            subqry = GroupQuery(
                """ g.groupId, g.groupIcon, g.groupTitle, g.createDate, g.userCount,
                  g.visitCount, g.articleCount, g.topicCount, g.resourceCount, g.groupIntroduce,
                  g.groupTags """)
            subqry.parentId = gid
            subgroup_list = subqry.query_map()
            ggg.append(subgroup_list)

        request.setAttribute("subgroups", ggg)
        request.setAttribute("pager", pager)
        request.setAttribute("subjectId", qry.subjectId)
        request.setAttribute("categoryId", qry.categoryId)
        request.setAttribute("gradeId", qry.gradeId)
        request.setAttribute("searchtype", qry.searchtype)
        request.setAttribute("k", qry.kk)

    # 创建分页对象.
    def createPager(self):
        pager = self.params.createPager()
        pager.itemName = u"课题组"
        pager.itemUnit = u"个"
        pager.pageSize = 10
        return pager
コード例 #14
0
ファイル: admin_course_list.py プロジェクト: yxxcrtd/jitar2.0
class admin_course_list(BaseAdminAction, ActionResult, SubjectMixiner):
    def __init__(self):
        self.params = ParamUtil(request)
        self.printer = response.getWriter()
        self.pc_svc = __jitar__.getPrepareCourseService()
        self.meetingsService = __spring__.getBean("meetingsService")

    def execute(self):
        if self.loginUser == None:
            return ActionResult.LOGIN
        accessControlService = __spring__.getBean("accessControlService")
        if False == accessControlService.isSystemContentAdmin(self.loginUser):
            self.addActionError(u"没有管理站点配置的权限.")
            return ActionResult.ERROR

        self.putSubjectList()
        self.putGradeList()
        guid = self.params.safeGetIntValues("guid")
        cmd = self.params.safeGetStringParam("cmd")
        if cmd == "0":
            for id in guid:
                self.pc_svc.deletePrepareCourse(id)

        if cmd == "1":
            for id in guid:
                prepareCourse = self.pc_svc.getPrepareCourse(id)
                if prepareCourse != None:
                    prepareCourse.setStatus(0)
                    self.pc_svc.updatePrepareCourse(prepareCourse)

        if cmd == "2":
            for id in guid:
                prepareCourse = self.pc_svc.getPrepareCourse(id)
                if prepareCourse != None:
                    prepareCourse.setStatus(1)
                    self.pc_svc.updatePrepareCourse(prepareCourse)

        if cmd == "3":
            for id in guid:
                prepareCourse = self.pc_svc.getPrepareCourse(id)
                if prepareCourse != None:
                    prepareCourse.setStatus(2)
                    self.pc_svc.updatePrepareCourse(prepareCourse)
        if cmd == "4":
            for id in guid:
                prepareCourse = self.pc_svc.getPrepareCourse(id)
                if prepareCourse != None:
                    prepareCourse.setRecommendState(True)
                    self.pc_svc.updatePrepareCourse(prepareCourse)
        if cmd == "5":
            for id in guid:
                prepareCourse = self.pc_svc.getPrepareCourse(id)
                if prepareCourse != None:
                    prepareCourse.setRecommendState(False)
                    self.pc_svc.updatePrepareCourse(prepareCourse)
        if cmd == "6":
            #导出Excel
            return self.printcourse()
        if cmd == "7":
            for id in guid:
                self.meetingsService.openMeetings("jibei", id)
        if cmd == "8":
            for id in guid:
                self.meetingsService.closeMeetings("jibei", id)
        if cmd == "9":  #查询
            return self.preparecourse_search()
        self.preparecourse_list()
        video_url = request.getSession().getServletContext().getInitParameter(
            "video_url")
        if video_url != None and video_url != "":
            request.setAttribute("video_url", "video_url")
        return "/WEB-INF/ftl/course/admin_course_list.ftl"

    # 例如: 3100 -》 false  3000 ->> true
    def bNumber(self, intV):
        if intV == None:
            return False
        strV = str(intV)
        if strV.isdigit() == False:
            return False
        intStrLen = len(strV)
        if intStrLen < 2:
            return False
        strPad = "0"
        b = True
        for i in range(1, intStrLen):
            if strV[i] != '0':
                b = False
        return b

    # 将学段是否是整数,例如: 3100 -》 3000
    def convertRoundMinNumber(self, intV):
        if intV == None:
            return 0
        strV = str(intV)
        if strV.isdigit() == False:
            return 0
        intStrLen = len(strV)
        if intStrLen < 2:
            return intV
        strPad = "0"
        for i in range(2, intStrLen):
            strPad = strPad + "0"

        strV = strV[0:1] + strPad
        return int(strV)

    # 将学段格式化成整数,例如: 3100 -》 4000
    def convertRoundMaxNumber(self, intV):
        if intV == None:
            return 0
        strV = str(intV)
        if strV.isdigit() == False:
            return 0
        intStrLen = len(strV)
        if intStrLen < 2:
            return intV
        strPad = "0"
        for i in range(2, intStrLen):
            strPad = strPad + "0"
        strV = str(int(strV[0:1]) + 1) + strPad
        return int(strV)

    def printcourse(self):
        request.setCharacterEncoding("utf-8")
        k = self.params.getStringParam("k")  #查询关键字
        ktype = self.params.getStringParam("ktype")  #查询类型[关键字对应的类型]
        if ktype == None or ktype == '':
            ktype = "1"
        unit = self.params.getStringParam("unit")  #主备人所属机构
        course_BeginDate = self.params.getStringParam("course_BeginDate")
        course_EndDate = self.params.getStringParam("course_EndDate")
        subjectId = self.params.getIntParamZeroAsNull("subjectId")
        gradeId = self.params.getIntParamZeroAsNull("gradeId")
        request.setAttribute("subjectId", subjectId)
        request.setAttribute("gradeId", gradeId)
        request.setAttribute("k", k)
        request.setAttribute("ktype", ktype)
        request.setAttribute("unit", unit)
        request.setAttribute("course_BeginDate", course_BeginDate)
        request.setAttribute("course_EndDate", course_EndDate)
        hql = """ SELECT new Map(pc.createUserId as createUserId ,pc.leaderId as leaderId,pc.memberCount as memberCount,pc.articleCount as articleCount,pc.resourceCount as resourceCount,
                                pc.status as status,pc.actionCount as actionCount,pc.topicCount as topicCount,pc.topicReplyCount as topicReplyCount,pc.viewCount as viewCount,pc.startDate as startDate,pc.endDate as endDate,
                                pc.title as title, pc.prepareCourseId as prepareCourseId, pc.createDate as createDate, pc.metaSubjectId as metaSubjectId, pc.gradeId as gradeId,pc.recommendState as recommendState
                                ,pc.privateCount as privateCount,pc.editCount as editCount,pc.createUserName as createUserName,pc.createUserNickName as createUserNickName,pc.createUserUnitId as createUserUnitId
                                ,pc.leaderUserName as leaderUserName,pc.leaderUserNickName as leaderUserNickName,pc.leaderUserUnitId as leaderUserUnitId,pc.createUserUnitTitle as createUserUnitTitle,pc.leaderUserUnitTitle as leaderUserUnitTitle
            )"""
        hql = hql + " FROM VPrepareCourse pc "
        where = " WHERE pc.prepareCourseGenerated=true "
        if ktype == "2":
            if k != None and k != '':
                newKey = k.replace("'", "''").replace("%", "[%]").replace(
                    "_", "[_]").replace("[", "[[]")
                where = where + " AND (pc.createUserNickName LIKE '%" + newKey + "%' OR pc.createUserName LIKE '%" + newKey + "%')"
            if course_BeginDate != None and course_BeginDate != '':
                where = where + " AND pc.startDate >= '" + course_BeginDate + "'"
            if course_EndDate != None and course_EndDate != '':
                where = where + " AND pc.startDate <= '" + course_EndDate + "'"
            if subjectId != None:
                where = where + " AND pc.metaSubjectId = " + str(subjectId)
            if gradeId != None:
                where = where + " AND (pc.gradeId >= " + str(
                    self.convertRoundMinNumber(
                        gradeId)) + " And pc.gradeId < " + str(
                            self.convertRoundMaxNumber(gradeId)) + ")"
        elif ktype == "3" or ktype == "4":
            if k != None and k != '':
                newKey = k.replace("'", "''").replace("%", "[%]").replace(
                    "_", "[_]").replace("[", "[[]")
                if ktype == "3":  #搜索主备人
                    where = where + " AND (pc.leaderUserName LIKE '%" + newKey + "%' OR pc.leaderUserNickName LIKE '%" + newKey + "%')"
                elif ktype == "4":  #搜索主备人所属机构
                    where = where + " AND pc.leaderUserUnitTitle LIKE '%" + newKey + "%'"
            if course_BeginDate != None and course_BeginDate != '':
                where = where + " AND pc.startDate >= '" + course_BeginDate + "'"
            if course_EndDate != None and course_EndDate != '':
                where = where + " AND pc.startDate <= '" + course_EndDate + "'"
            if subjectId != None:
                where = where + " AND pc.metaSubjectId = " + str(subjectId)
            if gradeId != None:
                where = where + " AND (pc.gradeId >= " + str(
                    self.convertRoundMinNumber(
                        gradeId)) + " And pc.gradeId < " + str(
                            self.convertRoundMaxNumber(gradeId)) + ")"
        else:
            if k != None and k != '':
                newKey = k.replace("'", "''").replace("%", "[%]").replace(
                    "_", "[_]").replace("[", "[[]")
                if ktype == "1":  #搜索标题
                    where = where + " AND pc.title LIKE '%" + newKey + "%'"
            if course_BeginDate != None and course_BeginDate != '':
                where = where + " AND pc.startDate >= '" + course_BeginDate + "'"
            if course_EndDate != None and course_EndDate != '':
                where = where + " AND pc.startDate <= '" + course_EndDate + "'"
            if subjectId != None:
                where = where + " AND pc.metaSubjectId = " + str(subjectId)
            if gradeId != None:
                where = where + " AND (pc.gradeId >= " + str(
                    self.convertRoundMinNumber(
                        gradeId)) + " And pc.gradeId < " + str(
                            self.convertRoundMaxNumber(gradeId)) + ")"

        hql = hql + where
        hql = hql + " ORDER BY pc.prepareCourseId DESC"
        qry = Command(hql)
        #Excel 行数最大是65535
        course_list = qry.open(65500)
        request.setAttribute("preparecourse_list", course_list)
        response.reset()
        response.setContentType("application/vnd.ms-excel")
        response.setHeader("Content-Type",
                           "application/vnd.ms-excel; charset=GB2312")
        ###response.setCharacterEncoding("GB2312")
        ###response.setLocale(Locale.SIMPLIFIED_CHINESE)
        response.addHeader("Content-Disposition",
                           "attachment;filename=Course.xls")
        return "/WEB-INF/ftl/course/course_excel.ftl"

    def preparecourse_list(self):
        pager = self.params.createPager()
        pager.itemName = u"备课"
        pager.itemUnit = u"个"
        pager.pageSize = 20
        qry = PrepareCourseQuery(
            """ pc.createUserId,pc.leaderId,pc.memberCount,pc.articleCount,pc.resourceCount,
                                    pc.status,pc.actionCount,pc.topicCount,pc.topicReplyCount,pc.viewCount,
                                    pc.title, pc.prepareCourseId, pc.createDate, pc.metaSubjectId, pc.gradeId,pc.recommendState
                                """)
        pager.totalRows = qry.count()
        course_list = qry.query_map(pager)

        sPrivateCount = 0
        sEditCount = 0
        privateCountList = []
        editCountList = []
        if course_list.size() > 0:
            for pc in course_list:
                pcId = pc['prepareCourseId']
                sPrivateCount = self.pc_svc.getPrepareCourseContentCount(pcId)
                #print " PrivateCount="+str(sPrivateCount)
                sEditCount = self.pc_svc.getPrepareCourseEditCount(pcId)
                #print " sEditCount="+str(sEditCount)
                privateCountList.append(sPrivateCount)
                editCountList.append(sEditCount)

        request.setAttribute("preparecourse_list", course_list)
        request.setAttribute("privateCountList", privateCountList)
        request.setAttribute("editCountList", editCountList)
        request.setAttribute("pager", pager)

    def preparecourse_search(self):
        pager = self.params.createPager()
        pager.itemName = u"备课"
        pager.itemUnit = u"个"
        pager.pageSize = 20

        k = self.params.getStringParam("k")  #查询关键字
        ktype = self.params.getStringParam("ktype")  #查询类型[关键字对应的类型]
        if ktype == None:
            ktype = "1"
        unit = self.params.getStringParam("unit")  #主备人所属机构
        course_BeginDate = self.params.getStringParam("course_BeginDate")
        subjectId = self.params.getIntParamZeroAsNull("subjectId")
        gradeId = self.params.getIntParamZeroAsNull("gradeId")
        if ktype == "2":
            qry = PrepareCourseQuery(
                """ pc.createUserId,pc.leaderId,pc.memberCount,pc.articleCount,pc.resourceCount,
                                    pc.status,pc.actionCount,pc.topicCount,pc.topicReplyCount,pc.viewCount,
                                    pc.title, pc.prepareCourseId, pc.createDate, pc.metaSubjectId, pc.gradeId,pc.recommendState,
                                    u.trueName
                                """)
        elif ktype == "3" or ktype == "4":
            qry = PrepareCourseQuery(
                """ pc.createUserId,pc.leaderId,pc.memberCount,pc.articleCount,pc.resourceCount,
                                    pc.status,pc.actionCount,pc.topicCount,pc.topicReplyCount,pc.viewCount,
                                    pc.title, pc.prepareCourseId, pc.createDate, pc.metaSubjectId, pc.gradeId,pc.recommendState,
                                    ul.trueName
                                """)
        else:
            qry = PrepareCourseQuery(
                """ pc.createUserId,pc.leaderId,pc.memberCount,pc.articleCount,pc.resourceCount,
                                    pc.status,pc.actionCount,pc.topicCount,pc.topicReplyCount,pc.viewCount,
                                    pc.title, pc.prepareCourseId, pc.createDate, pc.metaSubjectId, pc.gradeId,pc.recommendState
                                """)
        if self.bNumber(gradeId) == True:
            qry.containChild = True
        else:
            qry.containChild = False
        pager.totalRows = qry.count()
        course_list = qry.query_map(pager)
        sPrivateCount = 0
        sEditCount = 0
        privateCountList = []
        editCountList = []
        if course_list.size() > 0:
            for pc in course_list:
                pcId = pc['prepareCourseId']
                sPrivateCount = self.pc_svc.getPrepareCourseContentCount(pcId)
                #print " PrivateCount="+str(sPrivateCount)
                sEditCount = self.pc_svc.getPrepareCourseEditCount(pcId)
                #print " sEditCount="+str(sEditCount)
                privateCountList.append(sPrivateCount)
                editCountList.append(sEditCount)
        request.setAttribute("preparecourse_list", course_list)
        request.setAttribute("privateCountList", privateCountList)
        request.setAttribute("editCountList", editCountList)
        request.setAttribute("pager", pager)
        return "/WEB-INF/ftl/course/admin_course_list.ftl"
コード例 #15
0
class PhotoQuery(BaseQuery):
    ORDER_TYPE_ID_DESC = 0
    ORDER_TYPE_PHOTOID_DESC = 0  # default.
    ORDER_TYPE_CREATEDATE_DESC = 1
    ORDER_TYPE_VIEWCOUNT_DESC = 2
    ORDER_TYPE_COMMENTCOUNT = 3

    def __init__(self, selectFields):
        BaseQuery.__init__(self, selectFields)
        self.params = ParamUtil(request)
        self.cate_svc = __jitar__.categoryService
        # 要查询的图片所属用户, == null 表示不限制.
        self.userId = None
        # 是否审核通过, 缺省 = 0 表示审核通过的.
        self.auditState = 0
        # 默认显示没有删除的照片
        self.delState = False
        # 所属系统分类, 缺省 = null 表示不限制.
        self.sysCateId = None
        # 所属用户分类, 缺省 = null 表示不限制.
        self.userStapleId = None
        # 默认在所有地方显示照片,不局限于个人空间
        self.isPrivateShow = False
        self.unitId = None

        self.specialSubjectId = None
        self.unitPath = None
        self.sharedDepth = None
        self.rcmdDepth = None

        # 默认是精确匹配
        self.FuzzyMatch = False

        self.channelId = None
        self.channelCate = None

        # 简单实现按扩展名查询
        self.extName = None

        # 查询关键字.
        self.k = self.params.safeGetStringParam("k", None)
        # 查询字段. 0 标题  1简介  2用户
        self.f = self.params.safeGetStringParam("f", "0")
        request.setAttribute("f", self.f)
        request.setAttribute("k", self.k)

        # 排序方式, 0 - photoId DESC, 1 - createDate DESC, 2 - viewCount DESC, 3 - commentCount DESC
        self.orderType = 0
        self.params = ParamUtil(request)
        self.sysCateId = self.params.getIntParamZeroAsNull("categoryId")

    def initFromEntities(self, qctx):
        qctx.addEntity("Photo", "p", "")

    def resolveEntity(self, qctx, entity):
        if "u" == entity:
            qctx.addEntity("User", "u", "p.userId = u.userId")
        elif "stap" == entity:
            qctx.addJoinEntity("p", "p.staple", "stap", "LEFT JOIN")
        elif "sc" == entity:
            qctx.addJoinEntity("p", "p.sysCate", "sc", "LEFT JOIN")
        else:
            BaseQuery.resolveEntity(self, qctx, entity)

    # 提供 where 条件.
    def applyWhereCondition(self, qctx):
        if self.k != None and self.k != "":
            self._applyKeywordFilter(qctx)
        if self.userId != None:
            qctx.addAndWhere("p.userId = :userId")
            qctx.setInteger("userId", self.userId)
        if self.auditState != None:
            qctx.addAndWhere("p.auditState = :auditState")
            qctx.setInteger("auditState", self.auditState)
        if self.delState != None:
            qctx.addAndWhere("p.delState = :delState")
            qctx.setBoolean("delState", self.delState)
        if self.sysCateId != None:
            #只查询分类自己的
            #qctx.addAndWhere("p.sysCateId = :sysCateId")
            #qctx.setInteger("sysCateId", self.sysCateId)
            #查询自己和子孙分类
            list = self.cate_svc.getCategoryIds(self.sysCateId)
            cateIds = ""
            for c in list:
                if cateIds == "":
                    cateIds = cateIds + str(c)
                else:
                    cateIds = cateIds + "," + str(c)
            qctx.addAndWhere("p.sysCateId IN (" + cateIds + ")")

        if self.userStapleId != None:
            qctx.addAndWhere("p.userStaple = :userStapleId")
            qctx.setInteger("userStapleId", self.userStapleId)
        if self.specialSubjectId != None:
            qctx.addAndWhere("p.specialSubjectId = :specialSubjectId")
            qctx.setInteger("specialSubjectId", self.specialSubjectId)
        if self.isPrivateShow != None:
            qctx.addAndWhere("p.isPrivateShow = :isPrivateShow")
            qctx.setBoolean("isPrivateShow", self.isPrivateShow)
        if self.extName != None:
            qctx.addAndWhere(" p.href LIKE :extName")
            qctx.setString("extName", "%" + self.extName)
        if self.unitId != None:
            qctx.addAndWhere("p.unitId = :unitId")
            qctx.setInteger("unitId", self.unitId)

        if self.unitPath != None:
            qctx.addAndWhere("p.unitPath LIKE :unitPath")
            qctx.setString("unitPath", self.unitPath + "%")
        if self.sharedDepth != None:
            qctx.addAndWhere("p.sharedDepth LIKE :sharedDepth")
            qctx.setString("sharedDepth", "%" + self.sharedDepth + "%")
        if self.rcmdDepth != None:
            qctx.addAndWhere("p.rcmdDepth LIKE :rcmdDepth")
            qctx.setString("rcmdDepth", "%" + self.rcmdDepth + "%")

        if self.channelId != None:
            qctx.addAndWhere("p.channelId = :channelId")
            qctx.setInteger("channelId", self.channelId)

        if self.channelCate != None:
            if self.FuzzyMatch == False:
                #精确匹配
                qctx.addAndWhere("p.channelCate = :channelCate")
                qctx.setString("channelCate", self.channelCate)
            else:
                # 模糊匹配
                qctx.addAndWhere("p.channelCate LIKE :channelCate")
                qctx.setString("channelCate", "%" + self.channelCate + "%")

    def _applyKeywordFilter(self, qctx):
        newKey = self.k.replace("'", "''").replace("%", "[%]").replace(
            "_", "[_]").replace("[", "[[]")
        if self.f == "0":
            qctx.addAndWhere(
                "(p.title LIKE :likeKey) OR (p.tags LIKE :likeKey) OR (stap.title LIKE :likeKey) OR (p.addIp LIKE :likeKey)"
            )
            qctx.setString("likeKey", "%" + newKey + "%")
        elif self.f == "1":
            qctx.addAndWhere(" p.summary LIKE :likeKey")
            qctx.setString("likeKey", "%" + newKey + "%")
        elif self.f == "2":
            qctx.addAndWhere(
                "(p.userNickName LIKE :likeKey) OR (p.userTrueName LIKE :likeKey)"
            )
            qctx.setString("likeKey", "%" + newKey + "%")
        elif self.f == "3":
            qctx.addAndWhere("p.title LIKE :likeKey")
            qctx.setString("likeKey", "%" + newKey + "%")
        else:
            qctx.addAndWhere(
                "(p.title LIKE :likeKey) OR (p.tags LIKE :likeKey) OR (stap.title LIKE :likeKey) OR (p.addIp LIKE :likeKey)"
            )
            qctx.setString("likeKey", "%" + newKey + "%")

    # 提供排序 order 条件.
    def applyOrderCondition(self, qctx):
        # 排序方式, 0 - photoId DESC, 1 - createDate DESC, 2 - viewCount DESC, 3 - commentCount DESC
        if self.orderType == 0:
            qctx.addOrder("p.photoId DESC")
        elif self.orderType == 1:
            qctx.addOrder("p.createDate DESC")
        elif self.orderType == 2:
            qctx.addOrder("p.viewCount DESC")
        elif self.orderType == 3:
            qctx.addOrder("p.commentCount DESC")
コード例 #16
0
class evaluation_content_edit(ActionExecutor, SubjectMixiner):
    def __init__(self):
        self.params = ParamUtil(request)

    def execute(self):
        evaluationService = __spring__.getBean("evaluationService")
        evaluationPlanId = self.params.safeGetIntParam("evaluationPlanId")
        evaluationPlan = evaluationService.getEvaluationPlanById(
            evaluationPlanId)
        if evaluationPlan == None:
            self.addActionError(u"不能加载评课活动,无法进行评课。")
            return self.ERROR
        if evaluationPlan.enabled == False:
            self.addActionError(u"该评课活动没有启用,无法进行评课。")
            return self.ERROR
        #判断是否过期
        beginDate = evaluationPlan.startDate
        endDate = evaluationPlan.endDate
        nowDate = Date()
        if beginDate.compareTo(nowDate) > -1 or endDate.compareTo(nowDate) < 1:
            self.addActionError(u"该评课活动日期已过,无法进行评课。")
            return self.ERROR

        if request.getMethod() == "POST":
            fieldcount = self.params.safeGetIntValues("fieldcount")
            title = self.params.safeGetStringParam("titleName")
            teacherName = self.params.safeGetStringParam("teacherName")
            metaGradeId = self.params.getIntParamZeroAsNull("gradeId")
            metaSubjectId = self.params.getIntParamZeroAsNull("subjectId")

            if title == "" or teacherName == "":
                self.addActionError(u"请输入评课名称和授课人。")
                return self.ERROR

            content = ""
            for num in fieldcount:
                fname = self.params.safeGetStringParam("fieldname" + str(num))
                fconntent = self.params.safeGetStringParam("fieldcontent" +
                                                           str(num))
                if fname != "":
                    content += "{" + JSONObject.toString(fname,
                                                         fconntent) + "},"
            if content != "":
                if content.endswith(","):
                    content = content[0:len(content) - 1]
                content = "[" + content + "]"

            templateId = self.params.safeGetIntParam("templateId")
            evaluationContent = EvaluationContent()
            evaluationContent.setTitle(title)
            evaluationContent.setCourseTeacherName(teacherName)
            evaluationContent.setPublishUserId(self.loginUser.userId)
            evaluationContent.setPublishUserName(self.loginUser.trueName)
            evaluationContent.setMetaSubjectId(metaSubjectId)
            evaluationContent.setMetaGradeId(metaGradeId)
            evaluationContent.setEvaluationPlanId(evaluationPlanId)
            evaluationContent.setEvaluationTemplateId(templateId)
            evaluationContent.setPublishContent(content)
            evaluationService.saveOrUpdateEvaluationContent(evaluationContent)
            response.sendRedirect("evaluations.py")

        if self.params.existParam("templateId"):
            templateId = self.params.safeGetIntParam("templateId")
            template = evaluationService.getEvaluationTemplateById(templateId)
            evaluationPlan = evaluationService.getEvaluationPlanById(
                evaluationPlanId)
            if evaluationPlan == None:
                self.addActionError(u"不能加载评课活动,无法进行评课。")
                return self.ERROR
            if template == None:
                self.addActionError(u"不能加载评课模板,无法进行评课。")
                return self.ERROR
            self.putSubjectList()
            self.putGradeList()
            request.setAttribute("template", template)
            request.setAttribute("evaluationPlan", evaluationPlan)
            return "/WEB-INF/ftl/evaluation/evaluation_content_edit.ftl"

        else:
            qry = EvaluationTemplateQuery(
                "et.evaluationTemplateId, et.evaluationTemplateName")
            qry.enabled = True
            template_list = qry.query_map(qry.count())
            if len(template_list) < 1:
                self.addActionError(u"当前没有模板可供选择,无法进行评课。")
                return self.ERROR
            elif len(template_list) == 1:
                response.sendRedirect(
                    "evaluation_content_edit.py?evaluationPlanId=" +
                    str(evaluationPlanId) + "&templateId=" +
                    str(template_list[0]["evaluationTemplateId"]))
            else:
                request.setAttribute("template_list", template_list)
                request.setAttribute("evaluationPlanId", evaluationPlanId)
                return "/WEB-INF/ftl/evaluation/evaluation_content_edit_select_template.ftl"
コード例 #17
0
class EvaluationContentQuery(BaseQuery,SubjectMixiner):
    def __init__(self, selectFields):
        BaseQuery.__init__(self, selectFields)
        self.params = ParamUtil(request)
        self.evaluationPlanId = None
        self.publishUserId = None
        self.metaSubjectId = self.params.getIntParamZeroAsNull("subjectId")
        self.metaGradeId = self.params.getIntParamZeroAsNull("gradeId")
        self.orderType = 0
        self.gradelevel = self.params.getIntParamZeroAsNull("level")
        # 默认是精确匹配
        self.FuzzyMatch = True #模糊匹配
        
        request.setAttribute("subjectId",self.metaSubjectId)
        request.setAttribute("gradeId",self.metaGradeId)
        
    def initFromEntities(self, qctx):
        qctx.addEntity("EvaluationContent", "ec", "")
        
    def resolveEntity(self, qctx, entity):
        if "subj" == entity:
            qctx.addJoinEntity("ec", "ec.metaSubject", "subj", "LEFT JOIN")
        elif ("grad" == entity):
            qctx.addJoinEntity("ec", "ec.grade", "grad", "LEFT JOIN")
        ##if "u" == entity:
        #    qctx.addEntity("User", "u", "ev.userId = u.userId")
        else:
            BaseQuery.resolveEntity(self, qctx, entity) 
            
    def applyWhereCondition(self, qctx):
        if self.evaluationPlanId != None:
            qctx.addAndWhere("ec.evaluationPlanId = :evaluationPlanId")
            qctx.setInteger("evaluationPlanId", self.evaluationPlanId)
            
        if self.publishUserId != None:
            qctx.addAndWhere("ec.publishUserId = :publishUserId")
            qctx.setInteger("publishUserId", self.publishUserId)
            
        if self.metaSubjectId != None:
            qctx.addAndWhere("ec.metaSubjectId = :metaSubjectId")
            qctx.setInteger("metaSubjectId", self.metaSubjectId)
            
        if self.metaGradeId != None:
            if self.gradelevel != None:
                if self.gradelevel == 1:
                      qctx.addAndWhere("ec.metaGradeId = :gradeStartId")
                      qctx.setInteger("gradeStartId", self.metaGradeId)
                else:
                      if self.FuzzyMatch == False:
                            qctx.addAndWhere("ec.metaGradeId = :metaGradeId")
                            qctx.setInteger("metaGradeId", self.metaGradeId)
                      else:
                            qctx.addAndWhere("ec.metaGradeId >= :gradeStartId AND ec.metaGradeId < :gradeEndId")
                            qctx.setInteger("gradeStartId", self.calcGradeStartId(self.metaGradeId))
                            qctx.setInteger("gradeEndId", self.calcGradeEndId(self.metaGradeId))
            else:
                if self.FuzzyMatch == False:
                      qctx.addAndWhere("ec.metaGradeId = :metaGradeId")
                      qctx.setInteger("metaGradeId", self.metaGradeId)
                else:
                      qctx.addAndWhere("ec.metaGradeId >= :gradeStartId AND ec.metaGradeId < :gradeEndId")
                      qctx.setInteger("gradeStartId", self.calcGradeStartId(self.metaGradeId))
                      qctx.setInteger("gradeEndId", self.calcGradeEndId(self.metaGradeId))
            
    
    def applyOrderCondition(self, qctx):
        if self.orderType == 0:
            qctx.addOrder("ec.evaluationContentId DESC")
コード例 #18
0
ファイル: js_article.py プロジェクト: yxxcrtd/jitar2.0
class js_article:
    def execute(self):
        # 完整的调用参数:
        # js_article.py?top=4&count=4&type=0&cateid=13&author=1&date=1&groupId=42

        # 默认支持 subjectId,gradeId,参数带这些值,默认是支持的
        # 更多参数请参见 article_query的成员定义。

        self.params = ParamUtil(request)
        ShowCount = self.params.getIntParam("count")
        ShowTop = self.params.getIntParam("top")
        ShowType = self.params.getIntParam("type")
        ShowAuthor = self.params.getIntParamZeroAsNull("author")
        ShowDate = self.params.getIntParamZeroAsNull("date")

        unitId = self.params.getIntParamZeroAsNull("unitid")
        cateid = self.params.getIntParamZeroAsNull("cateid")
        groupId = self.params.getIntParamZeroAsNull("groupId")
        unitService = __spring__.getBean("unitService")
        if unitId == None:
            rootUnit = unitService.getRootUnit()
        else:
            rootUnit = unitService.getUnitById(unitId)

        if rootUnit == None:
            response.getWriter().println(u"document.write('没有根单位。')")
            return

        if ShowTop == None or ShowTop == 0:
            ShowTop = 10
        if ShowCount == None or ShowCount == 0:
            ShowCount = 10
        if ShowType == None:
            ShowType = 0

        if groupId != None and groupId != 0:
            qry = GroupArticleQuery(
                """ ga.articleId, ga.title, ga.createDate, ga.userId, ga.loginName, ga.userTrueName as trueName  """
            )
            qry.groupId = groupId
        else:
            qry = __PrivateArticleQuery(
                """ a.articleId, a.title, a.createDate, u.userId, u.loginName, u.trueName """
            )
            qry.unitId = unitId
            qry.sysCateId = cateid

            if ShowType == 1:
                #推荐文章
                #qry.rcmdState = True
                qry.custormAndWhereClause = "a.rcmdPathInfo Like '%/" + str(
                    rootUnit.unitId
                ) + "/%' and a.approvedPathInfo Like '%/" + str(
                    rootUnit.unitId) + "/%'"

            elif ShowType == 2:
                #名师文章
                qry.userIsFamous = 1
                qry.custormAndWhereClause = "a.approvedPathInfo Like '%/" + str(
                    rootUnit.unitId) + "/%'"
            elif ShowType == 3:
                #精华文章
                qry.bestState = True
                qry.custormAndWhereClause = "a.approvedPathInfo Like '%/" + str(
                    rootUnit.unitId) + "/%'"

        article_list = qry.query_map(ShowTop)
        request.setAttribute("article_list", article_list)
        request.setAttribute("ShowAuthor", ShowAuthor)
        request.setAttribute("ShowDate", ShowDate)
        request.setAttribute("ShowCount", ShowCount)
        response.contentType = "text/html; charset=utf-8"
        return "/WEB-INF/ftl/js_article.ftl"
コード例 #19
0
class AdminArticleEdit:
    categoryService = __spring__.getBean("categoryService")
    subjectService = __spring__.getBean("subjectService")
    specialSubjectService = __spring__.getBean("specialSubjectService")
    channelPageService = __spring__.getBean("channelPageService")
    userService = __spring__.getBean("userService")
    
    ErrorMessage = ""
    
    def edit_get(self, article):
        self.putGradeList()
        self.putSubjectList()
        self.putUserArticleCategory(article.userId)
        self.putSpecialSubjectCategory(article)
        article_categories = self.categoryService.getCategoryTree('default')
        request.setAttribute("article_categories", article_categories)
        request.setAttribute("article", article)
        # 加载专题和自定义频道等等
        specialSubjectArticle = self.specialSubjectService.getSpecialSubjectArticleByArticleId(article.objectUuid)
        if specialSubjectArticle == None:
            request.setAttribute("specialSubjectId", 0)
        else:
            request.setAttribute("specialSubjectId", specialSubjectArticle.specialSubjectId)
        
        
    def edit_post(self, article):        
        self.params = ParamUtil(request)
        articleTitle = self.params.safeGetStringParam("articleTitle")
        gradeId = self.params.getIntParamZeroAsNull("gradeId")
        subjectId = self.params.getIntParamZeroAsNull("subjectId")
        sysCate = self.params.getIntParamZeroAsNull("sysCate")
        userCate = self.params.getIntParamZeroAsNull("userCate")
        specialSubjectId = self.params.safeGetIntParam("specialSubjectId")
        articleTags = self.params.getStringParam("articleTags", None)
        articleAbstract = self.params.getStringParam("articleAbstract", None)
        articleContent = self.params.safeGetStringParam("articleContent")
        commentState = self.params.safeGetIntParam("commentState")
        hideState = self.params.safeGetIntParam("hideState")      
        if articleTitle == "" or articleContent == "":
            # 无法解决编码问题,暂时不返回错误信息了。
            # self.ErrorMessage = "文章标题不能为空。"
            return False
        
        article.setTitle(articleTitle)
        article.setArticleContent(articleContent)
        article.setArticleAbstract(articleAbstract)
        article.setArticleTags(articleTags)
        article.setSubjectId(subjectId)
        article.setGradeId(gradeId)
        article.setUserCateId(userCate)
        article.setSysCateId(sysCate)
        article.setCommentState(commentState)
        article.setHideState(hideState)
        articleService = __spring__.getBean("articleService")
        articleService.updateArticle(article)        
      
        specialSubjectArticle = self.specialSubjectService.getSpecialSubjectArticleByArticleId(article.objectUuid)
        if specialSubjectId == 0:
            if specialSubjectArticle != None:
                self.specialSubjectService.deleteSpecialSubjectArticle(specialSubjectArticle)
        else:                
            if specialSubjectArticle == None:
                specialSubjectArticle = SpecialSubjectArticle()
                specialSubjectArticle.articleId = article.articleId
                specialSubjectArticle.articleGuid = article.objectUuid
                specialSubjectArticle.specialSubjectId = specialSubjectId
                specialSubjectArticle.createDate = article.createDate
                specialSubjectArticle.userId = article.userId
                specialSubjectArticle.loginName = article.loginName
                specialSubjectArticle.userTrueName = article.userTrueName
                specialSubjectArticle.articleState = 1
                
            specialSubjectArticle.setTitle(articleTitle)
            self.specialSubjectService.saveOrUpdateSpecialSubjectArticle(specialSubjectArticle)
        specialSubjectArticle = None
        return True
    
    def putUserArticleCategory(self, userId):
        uc_itemType = CommonUtil.toUserArticleCategoryItemType(userId)
        usercate_tree = self.categoryService.getCategoryTree(uc_itemType)
        request.setAttribute("usercate_tree", usercate_tree)
        
    def putSpecialSubjectCategory(self, article):
        ss = self.specialSubjectService.getValidSpecialSubjectList()
        if ss != None:
            request.setAttribute("specialsubject_list", ss)
            specialSubjectArticle = self.specialSubjectService.getSpecialSubjectArticleByArticleId(article.objectUuid)
            if specialSubjectArticle != None:
                request.setAttribute("specialSubjectId", specialSubjectArticle.specialSubjectId)
            else:
                request.setAttribute("specialSubjectId", 0)
        
    def putSubjectList(self):
        subject_list = self.subjectService.getMetaSubjectList()
        request.setAttribute("subject_list", subject_list)
    def putGradeList(self):
        grade_list = self.subjectService.getGradeList()
        request.setAttribute("grade_list", grade_list);
コード例 #20
0
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)
コード例 #21
0
class site_subject_blogs(SubjectMixiner):
  def __init__(self):
    self.params = ParamUtil(request)
    self.subj_svc = __jitar__.subjectService
    
  def execute(self):
    #print "site_subject_blogs python 脚本正在执行"
    
    
    self.putSubject()
    
    # 工作室分类
    self.get_blog_cates()

    # 名师工作室
    self.get_channel_teacher()
    
    # 学科带头人工作室
    self.get_expert_list()
    
    # 工作室访问排行
    self.get_hot_list()
    
    # 高亮显示项目.
    self.setData("head_nav", "blogs")
    self.get_subject_comissioner()
    
    return "success"

  def _getCateSvc(self):
    return __jitar__.categoryService
  
  # 工作室分类.  
  def get_blog_cates(self): 
    blog_cates = self._getCateSvc().getCategoryTree("default")
    request.setAttribute("blog_cates", blog_cates)
 
  # 名师工作室.
  def get_channel_teacher(self):
    qry = UserQuery("""  u.loginName, u.userIcon, u.nickName, subj.subjectId """)
    qry.isFamous = True
    channel_teachers = qry.query_map(6)
    request.setAttribute("channel_teachers", channel_teachers)
  
    
  # 学科带头人工作室.
  def get_expert_list(self):
    qry = UserQuery(""" u.loginName, u.blogName, u.nickName, u.blogIntroduce, subj.subjectId """)
    qry.userTypeId = 3
    expert_list = qry.query_map(2)
    request.setAttribute("expert_list", expert_list)
    
    # 教研员工作室 - 未实现.
    
  # 工作室访问排行.
  def get_hot_list(self):
    qry = UserQuery(""" u.loginName, u.blogName, u.visitCount """)
    qry.orderType = 1
    hot_list = qry.query_map(10)
    request.setAttribute("hot_list", hot_list)
    
    
    # 主工作室查询数据.
    self.query_blog()
    

  # 得到学科教研员列表.
  def get_subject_comissioner(self):
    qry = UserQuery(""" u.loginName, u.nickName, u.userIcon, u.blogName, u.createDate, 
                        u.articleCount, u.resourceCount, u.blogIntroduce """)
    qry.subjectId = self.subject.subjectId
    qry.isComissioner = True
    comissioner_list = qry.query_map(6)
    request.setAttribute("comissioner_list", comissioner_list)
    

  # 根据条件查询工作室.
  def query_blog(self):
    qry = UserQuery(""" u.userId, u.loginName, u.nickName, u.createDate, u.blogName, u.blogIntroduce,
          u.userIcon, u.articleCount, u.resourceCount, u.commentCount, u.visitCount, u.photoCount,
          subj.subjectName, unit.unitName """)
    qry.subjectId = self.subject.subjectId
    qry.sysCateId = self.params.getIntParamZeroAsNull("categoryId")
    qry.k = self.params.getStringParam("k")
    
    pager = self.createPager()
    pager.totalRows = qry.count()
    blog_list = qry.query_map(pager)
    request.setAttribute("blog_list", blog_list)
    request.setAttribute("pager", pager)
    return
  
  def createPager(self):
    pager = self.params.createPager()
    pager.pageSize = 10
    pager.itemName = u"工作室"
    pager.itemUnit = u"个"
    return pager
コード例 #22
0
class manage_createPrepareCourse(SubjectMixiner, BaseAction, ActionResult):
    def __init__(self):
        self.params = ParamUtil(request)
        self.accessControlService = __spring__.getBean("accessControlService")
        self.pc_svc = __jitar__.getPrepareCourseService()
        self.user_svc = __jitar__.getUserService()
        self.group_svc = __jitar__.getGroupService()
        self.printer = ShowError()
        self.prepareCourse = None
        self.group = None

    def execute(self):
        if self.loginUser == None:
            backUrl = request.getAttribute('javax.servlet.forward.request_uri')
            if backUrl == None or backUrl == "": backUrl = request.requestURI
            response.sendRedirect(
                CommonUtil.getSiteUrl(request) + "login.jsp?redUrl=" +
                CommonUtil.urlUtf8Encode(
                    CommonUtil.getSiteServer(request) + backUrl))
            return
        """
        ********************** 注意:本文件只提供编辑 ****************************************        
        """
        self.prepareCourseId = self.params.safeGetIntParam("prepareCourseId")
        self.group = self.pc_svc.getGroupOfPrepareCourse(self.prepareCourseId)
        if self.group == None:
            actionErrors = [u"无法加载协作组信息。"]
            request.setAttribute("actionErrors", actionErrors)
            return self.ERROR

        # 判断当前用户是否是组内成员
        gm = self.group_svc.getGroupMemberByGroupIdAndUserId(
            self.group.groupId, self.loginUser.userId)
        accessControlService = __spring__.getBean("accessControlService")
        if gm == None:
            if accessControlService.isSystemAdmin(self.loginUser) == False:
                actionErrors = [u"做人要厚道,你不是本组的成员。"]
                request.setAttribute("actionErrors", actionErrors)
                return self.ERROR
        if self.prepareCourseId > 0:
            self.prepareCourse = self.pc_svc.getPrepareCourse(
                self.prepareCourseId)
            if self.prepareCourse != None:
                if self.prepareCourse.createUserId != self.loginUser.userId and self.prepareCourse.leaderId != self.loginUser.userId:
                    actionErrors = [u"你没有权限继续操作。"]
                    request.setAttribute("actionErrors", actionErrors)
                    return self.ERROR
        else:
            if accessControlService.isSystemAdmin(self.loginUser) == False:
                if gm.getStatus() != GroupMember.STATUS_NORMAL:
                    actionErrors = [u"你目前的成员状态不正常,无法继续操作。"]
                    request.setAttribute("actionErrors", actionErrors)
                    return self.ERROR

            if accessControlService.isSystemAdmin(self.loginUser) == False:
                if gm.groupRole < GroupMember.GROUP_ROLE_VICE_MANAGER:
                    actionErrors = [u"权限不足,无法继续操作。"]
                    request.setAttribute("actionErrors", actionErrors)
                    return self.ERROR

        request.setAttribute("loginUser", self.loginUser)

        if self.prepareCourseId > 0:
            self.prepareCourse = self.pc_svc.getPrepareCourse(
                self.prepareCourseId)
            if self.prepareCourse != None:
                request.setAttribute("prepareCourse", self.prepareCourse)
                request.setAttribute("group", self.group)
        else:
            self.printer.msg = u"此处不能创建新备课、"
            return self.printer.printError()

        if request.getMethod() == "POST":
            return self.saveOrUpdatePrepareCourse()
        else:
            return self.getPrepareCourse()

    def getPrepareCourse(self):

        self.get_subject_list()
        self.get_grade_list()

        request.setAttribute("head_nav", "cocourses")
        return "/WEB-INF/ftl/course/manage_createPrepareCourse.ftl"

    def saveOrUpdatePrepareCourse(self):
        if self.prepareCourse == None:
            self.prepareCourse = PrepareCourse()
        else:
            # 只有admin 和 主备人进行修改
            if not (self.accessControlService.isSystemAdmin(self.loginUser)
                    or self.loginUser.userId == self.prepareCourse.createUserId
                    or self.loginUser.userId == self.prepareCourse.leaderId):
                self.printer.msg = u"只有 admin 或者主备人才能进行修改。<br/><br/><a href='createPreCourse.py'>返回</a>"
                return self.printer.printError()

        pcTitle = self.params.safeGetStringParam("pcTitle")
        pcStartDate = self.params.safeGetStringParam("pcStartDate")
        pcEndDate = self.params.safeGetStringParam("pcEndDate")
        #pcGradeId = self.params.getIntParamZeroAsNull("pcGrade")
        #pcMetaSubjectId = self.params.getIntParamZeroAsNull("pcMetaSubject")
        pcDescription = self.params.safeGetStringParam("pcDescription")
        pcLeader = self.params.safeGetIntParam("pcLeader")
        pcTags = self.params.safeGetStringParam("pcTags")
        contentType = self.params.safeGetIntParam("contentType")

        if pcLeader == "":
            user_leader = self.loginUser
        else:
            user_leader = self.user_svc.getUserById(pcLeader)
            if user_leader == None:
                self.printer.msg = u"该用户不存在。<br/><br/><a href='manage_createPrepareCourse.py'>返回</a>"
                return self.printer.printError()
        pcStartDateTime = None
        if pcStartDate != None and pcStartDate != '':
            pcStartDateTime = SimpleDateFormat("yyyy-MM-dd").parse(pcStartDate)
        pcEndDateTime = SimpleDateFormat("yyyy-MM-dd").parse(pcEndDate)
        self.prepareCourse.setTitle(pcTitle)
        if pcStartDateTime != None:
            self.prepareCourse.setStartDate(pcStartDateTime)
        self.prepareCourse.setEndDate(pcEndDateTime)
        self.prepareCourse.setDescription(pcDescription)
        #self.prepareCourse.setMetaSubjectId(int(pcMetaSubjectId))
        #self.prepareCourse.setGradeId(int(pcGradeId))
        self.prepareCourse.setCreateUserId(self.loginUser.userId)
        self.prepareCourse.setCreateDate(Date())
        self.prepareCourse.setLeaderId(user_leader.userId)
        self.prepareCourse.setTags(pcTags)
        if self.prepareCourse.contentType == 0:
            self.prepareCourse.setContentType(contentType)

        if self.prepareCourse.prepareCourseId == None:
            self.prepareCourse.setLockedDate(Date())
            self.prepareCourse.setLockedUserId(0)
            self.prepareCourse.setPrepareCourseEditId(0)
            self.prepareCourse.setContentType(contentType)
            self.pc_svc.createPrepareCourse(self.prepareCourse)
        else:
            self.pc_svc.updatePrepareCourse(self.prepareCourse)
        return ActionResult.SUCCESS
        #下面暂时不用
        if self.prepareCourseId > 0:
            response.getWriter().write(
                u"您的 <span style='color:#f00'>" + pcTitle +
                u"</span> 修改成功.<a href='manage_createPrepareCourse.py?prepareCourseId="
                + str(self.prepareCourse.prepareCourseId) + u"'>返回</a>")
            return
        else:
            response.sendRedirect("manage_pc.py?prepareCourseId=" +
                                  str(self.prepareCourse.prepareCourseId))
            self.printer.msg = u"您的 <span style='color:#f00'>" + pcTitle + u"</span> 创建成功。请继续添加参与人员和创建备课的阶段过程。<br/><br/><a href='showPrepareCourse.py?prepareCourseId=" + str(
                self.prepareCourse.prepareCourseId) + u"'>返回</a>"
            return self.printer.printError()

    def get_subject_list(self):
        self.putSubjectList()

    def get_grade_list(self):
        request.setAttribute("gradeId",
                             self.params.getIntParamZeroAsNull("gradeId"))
        self.putGradeList()
コード例 #23
0
class admin_history_article(ActionExecutor, SubjectMixiner):
    def __init__(self):
        self.params = ParamUtil(request)

    def execute(self):
        if self.loginUser == None:
            return ActionResult.LOGIN

        accessControlService = __spring__.getBean("accessControlService")
        if False == accessControlService.isSystemContentAdmin(self.loginUser):
            self.addActionError(u"您不具有文章管理权限, 或者您的信息填写不完整, 或未经系统管理员审核.")
            return ActionResult.ERROR

        year = self.params.safeGetIntParam("backYear")
        if year == 0:
            self.addActionError(u"请选择一个年份。")
            return ActionResult.ERROR
        if request.getMethod() == "POST":
            articleService = __jitar__.articleService
            articleIdList = self.params.safeGetIntValues("articleId")
            cmd = self.params.getStringParam("cmd")
            if cmd == "": cmd = None
            if cmd == "crash":
                for id in articleIdList:
                    articleService.deleteArticleWithRelativeData(id, year)
            elif cmd == "audit":
                for id in articleIdList:
                    article = articleService.getArticle(id)
                    if article != None:
                        articleService.auditArticle(article)
            elif cmd == "unaudit":
                for id in articleIdList:
                    article = articleService.getArticle(id)
                    if article != None:
                        articleService.unauditArticle(article)

        su = self.params.getIntParamZeroAsNull("su")
        f = self.params.getStringParam("f", None)
        gradeId = self.params.getIntParamZeroAsNull("gradeId")
        sc = self.params.getIntParamZeroAsNull("sc")
        k = self.params.getStringParam("k")
        approved = self.params.getStringParam("approved", "")

        fieldName = None
        if f == "lname":
            fieldName = "LoginName"
        elif f == "uname":
            fieldName = "UserTrueName"
        else:
            fieldName = "Title"

        whereClause = ""
        if k != None and fieldName != None:
            k = k.replace("'", "")
            k = k.replace("%", "")
            k = k.replace(";", "")
            whereClause += "And " + fieldName + " LIKE '%" + k + "%'"
        if su != None:
            whereClause += " And subjectId = " + str(su)
        if gradeId != None:
            whereClause += " And gradeId = " + str(gradeId)
        if sc != None:
            whereClause += " And sysCateId = " + str(sc)
        if approved != "" and approved.isdigit():
            whereClause += " And AuditState = " + approved
        if whereClause != "" and len(whereClause) > 4:
            whereClause = whereClause[4:len(whereClause)]
        else:
            whereClause = ""

        pagingService = __spring__.getBean("pagingService")
        pagingQuery = PagingQuery()
        pagingQuery.keyName = "ArticleId"
        pagingQuery.fetchFieldsName = "*"
        pagingQuery.orderByFieldName = "ArticleId DESC"
        pagingQuery.spName = "findPagingArticle"
        pagingQuery.tableName = "HtmlArticle" + str(year)
        pagingQuery.whereClause = whereClause

        totalCount = self.params.safeGetIntParam("totalCount")
        pager = Pager()
        pager.setCurrentPage(self.params.safeGetIntParam("page", 1))
        pager.setPageSize(20)
        pager.setItemNameAndUnit(u"文章", u"篇")
        pager.setUrlPattern(self.params.generateUrlPattern())
        if totalCount == 0:
            pager.setTotalRows(pagingService.getRowsCount(pagingQuery))
        else:
            pager.setTotalRows(totalCount)

        article_list = pagingService.getPagingList(pagingQuery, pager)

        request.setAttribute("k", k)
        request.setAttribute("f", f)
        request.setAttribute("gradeId", gradeId)
        request.setAttribute("su", su)
        request.setAttribute("sc", sc)
        request.setAttribute("approved", approved)

        request.setAttribute("article_list", article_list)
        request.setAttribute("pager", pager)
        request.setAttribute("year", year)
        self.putSubjectList()
        self.putGradeList()
        self.putArticleCategoryTree()
        return "/WEB-INF/ftl/admin/admin_history_article.ftl"

    def putArticleCategoryTree(self):
        article_categories = __jitar__.categoryService.getCategoryTree(
            'default')
        request.setAttribute("article_categories", article_categories)
コード例 #24
0
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
コード例 #25
0
class evaluation_plan_edit(ActionResult, SubjectMixiner, EvaluationBase):
    def __init__(self):
        self.params = ParamUtil(request)

    def execute(self):
        if self.canManage() == False:
            self.addActionError(u"需要系统内容管理员进行管理。")
            return self.ERROR

        evaluationPlanId = self.params.safeGetIntParam("evaluationPlanId")
        today = Calendar.getInstance()
        request.setAttribute("currentYear", today.get(Calendar.YEAR))
        request.setAttribute("currentMonth", today.get(Calendar.MONTH))
        evaluationService = __spring__.getBean("evaluationService")
        evaluationPlan = evaluationService.getEvaluationPlanById(
            evaluationPlanId)
        if request.getMethod() == "POST":
            evaluationYear = self.params.safeGetIntParam("year")
            evaluationSemester = self.params.safeGetIntParam("semester")
            evaluationTimes = self.params.safeGetIntParam("times")
            startDate = self.params.safeGetStringParam("startDate")
            endDate = self.params.safeGetStringParam("endDate")
            enabled = self.params.safeGetIntParam("enabled")
            gradeId = self.params.getIntParamZeroAsNull("gradeId")
            subjectId = self.params.getIntParamZeroAsNull("subjectId")
            userCount = self.params.safeGetIntParam("userCount")
            startTime = self.params.safeGetIntParam("startTime")
            endTime = self.params.safeGetIntParam("endTime")
            # 规范数据
            if evaluationSemester != 0: evaluationSemester = 1
            if enabled == 0:
                enabled = False
            else:
                enabled = True

            if startTime < 0 or startTime > 23:
                self.addActionError(U"开始时间超过了范围。")
                return self.ERROR
            if endTime < 0 or endTime > 23:
                self.addActionError(U"结束时间超过了范围。")
                return self.ERROR
            if startTime < 10:
                st = "0" + str(startTime)
            else:
                st = str(startTime)

            if endTime < 10:
                et = "0" + str(endTime)
            else:
                et = str(endTime)

            try:
                sd = SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(startDate +
                                                                   " " + st +
                                                                   ":00:00")
            except:
                self.addActionError(U"输入的开始日期格式不正确,应当是: '年年年年-月月-日日' 格式")
                return self.ERROR
            try:
                ed = SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(endDate +
                                                                   " " + et +
                                                                   ":00:00")
            except:
                self.addActionError(U"输入的结束日期格式不正确,应当是: '年年年年-月月-日日' 格式")
                return self.ERROR

            if evaluationPlan == None:
                evaluationPlan = EvaluationPlan()
            evaluationPlan.setEvaluationYear(evaluationYear)
            evaluationPlan.setEvaluationSemester(evaluationSemester)
            evaluationPlan.setEvaluationTimes(evaluationTimes)
            evaluationPlan.setMetaSubjectId(subjectId)
            evaluationPlan.setMetaGradeId(gradeId)
            evaluationPlan.setStartDate(sd)
            evaluationPlan.setEndDate(ed)
            evaluationPlan.setUserCount(userCount)
            evaluationPlan.setEnabled(enabled)

            evaluationService.saveOrUpdateEvaluationPlan(evaluationPlan)
            return self.SUCCESS

        if evaluationPlan != None:
            request.setAttribute("evaluationPlan", evaluationPlan)
        self.putSubjectList()
        self.putGradeList()
        return "/WEB-INF/ftl/evaluation/evaluation_plan_edit.ftl"
コード例 #26
0
class cocourses(SubjectMixiner):
    def __init__(self):
        self.params = ParamUtil(request)
        self.cate_svc = __jitar__.categoryService
        self.sbj_svc = __jitar__.subjectService
        self.pc_svc = __jitar__.getPrepareCourseService()

    def execute(self):
        self.stage = self.params.safeGetStringParam("type")

        outHtml = cache.get("outHtml")
        if outHtml == None or outHtml == "":
            cache_key = "subject_list"
            subject_list = cache.get(cache_key)
            if subject_list == None:
                subject_list = self.sbj_svc.getMetaSubjectList()
                cache.put(cache_key, subject_list)
            outHtml = ""
            for s in subject_list:
                msid = s.getMsubjId()
                outHtml = outHtml + "d.add(" + str(
                    msid) + ",0,'" + s.getMsubjName(
                    ) + "','cocourses.py?subjectId=" + str(msid) + "');"
                cache_key = "gradeIdList" + str(msid)
                gradeIdList = cache.get(cache_key)
                if gradeIdList == None:
                    gradeIdList = self.sbj_svc.getMetaGradeListByMetaSubjectId(
                        msid)
                    cache.put(cache_key, gradeIdList)
                if gradeIdList != None:
                    for gid in gradeIdList:
                        outHtml = outHtml + "d.add(" + str(msid) + str(
                            gid.getGradeId()) + "," + str(
                                msid) + ",'" + gid.getGradeName(
                                ) + "','cocourses.py?subjectId=" + str(
                                    msid) + "&gradeId=" + str(
                                        gid.getGradeId()) + "&target=child');"
                        cache_key = "gradeLevelList" + str(gid.getGradeId())
                        gradeLevelList = cache.get(cache_key)
                        if gradeLevelList == None:
                            gradeLevelList = self.sbj_svc.getGradeLevelListByGradeId(
                                gid.getGradeId())
                            cache.put(cache_key, gradeLevelList)
                        for glevel in gradeLevelList:
                            outHtml = outHtml + "d.add(" + str(msid) + str(
                                gid.getGradeId()) + str(glevel.getGradeId(
                                )) + "," + str(msid) + str(gid.getGradeId(
                                )) + ",'" + glevel.getGradeName(
                                ) + "','cocourses.py?subjectId=" + str(
                                    msid) + "&gradeId=" + str(
                                        glevel.getGradeId()) + "');"

            cache.put("outHtml", outHtml)

        request.setAttribute("outHtml", outHtml)

        self.get_subject_list()
        self.get_grade_list()
        self.preparecourse_list()

        # 页面导航高亮'
        request.setAttribute("head_nav", "cocourses")
        return "/WEB-INF/ftl/site_courses.ftl"

    def preparecourse_list(self):

        pager = self.params.createPager()
        pager.itemName = u"备课"
        pager.itemUnit = u"个"
        pager.pageSize = 30
        qry = PrepareCourseQuery(
            """ pc.createUserId,pc.leaderId,pc.memberCount,pc.articleCount,pc.resourceCount,
                                    pc.status,pc.actionCount,pc.topicCount,pc.topicReplyCount,pc.viewCount,pc.startDate,pc.endDate,
                                    pc.title, pc.prepareCourseId, pc.createDate, pc.metaSubjectId, pc.gradeId,pc.recommendState,
                                    u.loginName,u.trueName
                                """)
        qry.status = 0
        if self.stage == "": self.stage = "running"
        qry.stage = self.stage

        if self.params.safeGetStringParam("target") == "child":
            qry.containChild = None
            request.setAttribute("target", "child")
        else:
            qry.containChild = True
        pager.totalRows = qry.count()
        course_list = qry.query_map(pager)
        sPrivateCount = 0
        sEditCount = 0
        privateCountList = []
        editCountList = []
        if course_list.size() > 0:
            for pc in course_list:
                pcId = pc['prepareCourseId']
                sPrivateCount = self.pc_svc.getPrepareCourseContentCount(pcId)
                sEditCount = self.pc_svc.getPrepareCourseEditCount(pcId)
                privateCountList.append(sPrivateCount)
                editCountList.append(sEditCount)
        request.setAttribute("privateCountList", privateCountList)
        request.setAttribute("editCountList", editCountList)
        request.setAttribute("course_list", course_list)
        request.setAttribute("pager", pager)
        request.setAttribute("type", self.stage)

    def get_grade_list(self):
        request.setAttribute("gradeId",
                             self.params.getIntParamZeroAsNull("gradeId"))
        self.putGradeList()

    def get_subject_list(self):
        self.putSubjectList()
コード例 #27
0
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)
コード例 #28
0
class admin_stat(BaseAdminAction, SubjectMixiner):
    user_svc = __jitar__.userService

    # 构造.
    def __init__(self):
        self.params = ParamUtil(request)
        self.accessControlService = __spring__.getBean("accessControlService")

    # 主执行入口.
    def execute(self):
        cmd = self.params.getStringParam("cmd")
        if cmd == None or cmd == "":
            cmd = "list"

        result = self.dispatcher(cmd)

        if not self.hasActionLinks():
            self.addDefaultReturnActionLink()
        return result

    # 根据'cmd'进行派发.
    def dispatcher(self, cmd):
        # 必须要求登录
        if self.loginUser == None:
            return ActionResult.LOGIN

        # 必须要求具有站点统计权限.
        if self.isValidUserManager() == False:
            self.addActionError(u"您不具有站点统计权限!")
            return ActionResult.ERROR

        if cmd == "list":
            return self.list()
        elif cmd == "stat":
            return self.stat()

        self.addActionError("未知命令: " + cmd)
        return ActionResult.ERROR

    # 列出所有与个人信息相关的统计信息
    def list(self):
        # 根据参数处理.
        type = self.params.safeGetStringParam("type")
        if type == None or type == "":
            type = ""
        request.setAttribute("type", type)
        request.setAttribute("typeName", self.typeToTitle(type))

        if type == "group":
            return self.get_group_list(type)
        else:
            return self.user_list(type)

    def user_list123(self):
        hql = """SELECT new Map(u.userId as userId, u.loginName as loginName, u.trueName as trueName)
         FROM User u
         ORDER BY u.userId """
        user_list = Command(hql).open(6)
        request.setAttribute("userList", user_list)
        return "/WEB-INF/ftl/admin/Admin_Stat_List_1.ftl"

    # 列出统计列表.
    def user_list(self, type):

        # 根据用户传递的参数执行过滤.
        pager = self.createPager()
        qry = AdminUserQuery(""" u.userId, u.loginName, u.trueName, u.blogName,
      u.subjectId, u.gradeId, u.unitId,
      subj.subjectName, grad.gradeName, unit.unitName, 
      u.visitCount, u.myArticleCount, u.otherArticleCount, u.recommendArticleCount, u.articleCommentCount, 
      u.resourceCount, u.recommendResourceCount, u.resourceCommentCount, u.resourceDownloadCount, 
      u.createGroupCount, u.jionGroupCount, u.photoCount, u.userStatus """)
        qry.userStatus = None
        qry.kk = self.params.getStringParam("k")
        qry.beginDate = self.params.getStringParam("beginDate")
        qry.endDate = self.params.getStringParam("endDate")
        qry.subjectId = self.params.getIntParamZeroAsNull("subjectId")
        qry.f = self.params.getStringParam("f")

        # 根据管理员等级设置过滤.
        self.applyPrivFilter(self.loginUser, qry)

        # 得到数据.
        pager.totalRows = qry.count()
        user_list = qry.query_map(pager)

        # 赋值
        request.setAttribute("pager", pager)
        request.setAttribute("userList", user_list)
        request.setAttribute("k", qry.kk)
        request.setAttribute("beginDate", qry.beginDate)
        request.setAttribute("endDate", qry.endDate)
        request.setAttribute("f", qry.f)
        request.setAttribute("subjectId", qry.subjectId)

        self.putSubjectList()
        self.putGradeList()
        self.putUnitList()

        return "/WEB-INF/ftl/admin/Admin_Stat_List.ftl"

    # 导出到 Excel
    def stat(self):
        request.setCharacterEncoding("GB2312")
        qry = AdminUserQuery(""" u.userId, u.loginName, u.trueName, u.blogName,
      u.subjectId, u.gradeId, u.unitId,
      subj.subjectName, grad.gradeName,  unit.unitName, 
      u.visitCount, u.myArticleCount, u.otherArticleCount, u.recommendArticleCount, u.articleCommentCount, 
      u.resourceCount, u.recommendResourceCount, u.resourceCommentCount, u.resourceDownloadCount, 
      u.createGroupCount, u.jionGroupCount, u.photoCount, u.userStatus """)
        qry.userStatus = None
        qry.kk = self.params.getStringParam("k")
        qry.subjectId = self.params.getIntParamZeroAsNull("subjectId")
        qry.f = self.params.getStringParam("f")
        user_list = qry.query_map(65535)
        request.setAttribute("user_list", user_list)
        response.reset()
        response.setContentType("application/vnd.ms-excel")
        response.setHeader("Content-Type",
                           "application/vnd.ms-excel; charset=GB2312")
        response.addHeader("Content-Disposition",
                           "attachment; filename=stat.xls")
        return "/WEB-INF/ftl/admin/Admin_Stat_Excel.ftl"

    # 得到机构列表
    def putUnitList(self):
        from cn.edustar.jitar.service import UnitQueryParam
        param = UnitQueryParam()
        unit_list = __jitar__.unitService.getUnitList(param, None)
        request.setAttribute("unit_list", unit_list)

    # 创建用户管理所用的缺省分页对象.
    def createPager(self):
        pager = self.params.createPager()
        pager.itemName = u"用户"
        pager.itemUnit = u"个"
        pager.pageSize = 20
        return pager

    # 得到指定标识的用户.
    def getUserById(self, userId):
        cmd = Command(""" FROM User u WHERE u.userId = :userId """)
        cmd.setInteger("userId", userId)
        user_list = cmd.open(1)
        if user_list == None or user_list.size() == 0:
            return None
        return user_list[0]

    # 从提交的参数中收集用户信息.
    # 注意: 包括 userId, loginName, 如果调用者不需要用户提交这两个参数, 则需自己覆盖它的值.
    def collectUserInfo(self):
        params = self.params
        userId = params.getIntParam("userId")
        if userId != 0:
            user = self.getUserById(userId)
            if user == None:
                self.addActionError(u"没有找到指定标识为 %d 的用户." % userId)
                return None
        else:
            user = User()
            user.userId = userId
            user.loginName = params.getStringParam("loginName")

        user.userIcon = params.getStringParam("userIcon", "images/default.gif")
        user.nickName = params.getStringParam("nickName")
        user.trueName = params.getStringParam("trueName")
        user.email = params.getStringParam("email")
        user.blogName = params.getStringParam("blogName")
        user.userTags = params.getStringParam("userTags")
        user.blogIntroduce = params.getStringParam("blogIntroduce")
        user.gender = params.getIntParam("gender")
        user.subjectId = params.getIntParamZeroAsNull("subjectId")
        user.gradeId = params.getIntParamZeroAsNull("gradeId")
        user.categoryId = params.getIntParamZeroAsNull("categoryId")
        user.unitId = params.getIntParamZeroAsNull("unitId")
        return user

    # 把工作室分类放到 request 中.
    def putUserCategories(self):
        user_categories = __jitar__.categoryService.getCategoryTree('blog')
        request.setAttribute("syscate_tree", user_categories)

    # 标准的批处理初始化, 将所选中的用户标识做为任务.
    def batcher_initer(self, batcher):
        if self.loginUser == None:
            batcher.result = ActionResult.LOGIN
            return False

        user_ids = self.params.getIdList("userId")
        if user_ids == None or user_ids.size() == 0:
            self.addActionError(u"没有选择要操作的用户.")
            batcher.result = ActionResult.ERROR
            return False

        batcher.taskList = user_ids
        return True

    # 标准的批处理结束.
    def batcher_finisher(self, batcher):
        self.addActionMessage(u"共对 %d 个用户执行了%s操作." %
                              (batcher.count, batcher.operate))
        batcher.result = ActionResult.SUCCESS
        return True

    # 检测是否有编辑指定用户信息的权限.
    def can_edit_user(self, u):
        # 必须登录.
        if self.loginUser == None:
            batcher.result = ActionResult.LOGIN
            return None

        # 可以自己编辑自己.
        if u.userId == self.loginUser.userId:
            return True

        # 禁止其它人对 'admin' 进行操作, 否则可能导致管理员不能使用.
        if self.accessControlService.isSystemAdmin(u):
            self.addActionError(u"不能对系统管理员 admin 执行编辑操作.")
            return False
        return True

    # 缺省的权限检测部分, 里面有权限业务.
    def default_check_right(self, u, batcher):
        # 必须登录.
        if self.loginUser == None:
            batcher.result = ActionResult.LOGIN
            return None

        # 必须有管理权限.
        accessControlService = __spring__.getBean("accessControlService")
        if accessControlService.getAllAccessControlByUser(
                self.loginUser) != None:
            self.addActionError(u"不具有用户管理权限")
            return False

        # 禁止其它人对 'admin' 进行操作, 否则可能导致管理员不能使用.self.accessControlService.isSystemAdmin(u)
        if self.accessControlService.isSystemAdmin(u):
            self.addActionError(u"不能对系统管理员(admin) 执行%s操作." % batcher.operate)
            return False
        elif u.loginName == self.loginUser.loginName:
            # 不能对自己执行管理操作.
            self.addActionError(u"不能对自己执行管理操作")
            return False

        return True

    # 构造并返回一个标准用户管理任务执行器.
    def createBatcher(self,
                      operate='执行操作',
                      check_logic=empty_func,
                      do_business=None):
        # 获取数据步骤, 得到要操作的用户.
        def get_data(userId, batcher):
            u = self.getUserById(userId)
            if u == None:
                self.addActionError(u"未能找到指定标识为 %d 的用户." % userId)
                return None
            batcher.data = u
            return u

        # 记录日志.
        def do_log(u, batcher):
            batcher.count += 1
            self.addActionMessage(u"对用户 %s 成功地执行了%s操作." %
                                  (u.toDisplayString(), batcher.operate))
            return

        batcher = BusinessBatcher(initer=self.batcher_initer,
                                  finisher=self.batcher_finisher)
        batcher.result = ActionResult.ERROR
        batcher.operate = operate
        batcher.get_data = get_data
        batcher.check_logic = check_logic
        batcher.check_right = self.default_check_right
        batcher.do_business = do_business
        batcher.do_log = do_log

        return batcher

    # 根据传递的'type'参数得到其显示文字.
    def typeToTitle(self, type):
        if type == "group":
            return u"站点群组统计"
        #elif type == "subject":
        #return "学科统计";
        else:
            return u"站点个人统计"
コード例 #29
0
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&amp;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()
コード例 #30
0
ファイル: subject_page.py プロジェクト: yxxcrtd/jitar2.0
class BaseSubject(JythonBaseAction):
    ERROR = "/WEB-INF/ftl/Error.ftl"
    ACCESS_DENIED = "/WEB-INF/ftl/Error.ftl"
    ACCESS_ERROR = "/WEB-INF/ftl/mengv1/access_error.ftl"
    SUCCESS = "/WEB-INF/ftl/success.ftl"
    LOGIN = "******"

    def __init__(self):
        self.params = ParamUtil(request)
        self.userIds = ""
        self.unitId = self.params.getIntParamZeroAsNull("unitId")
        self.metaGradeId = self.params.safeGetIntParam("gradeId")
        self.metaSubjectId = self.params.safeGetIntParam("subjectId")
        self.subjectId = self.params.safeGetIntParam("id")
        self.subjectService = __spring__.getBean("subjectService")
        self.subjectCode = request.getAttribute("subjectCode")
        self.accessControlService = __spring__.getBean("accessControlService")

        if self.unitId != None and self.unitId != 0:
            request.setAttribute("unitId", self.unitId)

        if self.subjectService == None:
            self.write("Cann't load subjectService !")
            return
        self.subject = None
        self.subject = self.subjectService.getSubjectByMetaData(
            self.metaSubjectId, self.metaGradeId)
        if self.subject == None:
            self.subject = self.subjectService.getSubjectById(self.subjectId)
        if self.subject == None:
            self.subject = self.subjectService.getSubjectByCode(
                self.subjectCode)

        if self.subject == None:
            # self.write("Object not be found !")
            self.write("Cann't load Subject Object !")
            return
        if self.isAdmin() == True or self.isContentAdmin(
        ) == True or self.isUserAdmin() == True:
            request.setAttribute("isAdmin", "")
        self.metaSubjectId = self.subject.metaSubject.msubjId
        self.metaGradeId = self.subject.metaGrade.gradeId
        self.subjectCode = self.subject.getSubjectCode()

        self.subjectRootUrl = request.getAttribute("SubjectRootUrl")
        if self.subjectRootUrl == None:
            configSubjectSiteRoot = request.getSession().getServletContext(
            ).getInitParameter("subjectUrlPattern")
            if configSubjectSiteRoot == None or configSubjectSiteRoot == "":
                self.subjectRootUrl = self.getCurrentSiteUrl(
                    request) + "k/" + self.subject.subjectCode + "/"
            else:
                configSubjectSiteRoot = String(configSubjectSiteRoot)
                self.subjectRootUrl = configSubjectSiteRoot.replaceAll(
                    "\\{subjectCode\\}", self.subject.subjectCode)
        request.setAttribute("SubjectRootUrl", self.subjectRootUrl)
        cache = __jitar__.cacheProvider.getCache('sitenav')
        cache_k = "subject_nav_" + str(self.subject.subjectId)
        subjectSiteNavList = cache.get(cache_k)
        if subjectSiteNavList == None:
            subjectSiteNavList = __spring__.getBean(
                "siteNavService").getAllSiteNav(False, 2,
                                                self.subject.subjectId)
            cache.put(cache_k, subjectSiteNavList)
        request.setAttribute("SubjectSiteNavList", subjectSiteNavList)

        #得到多学科用户
        qry2 = UserSubjectGradeQuery("usg.userId")
        qry2.subjectId = self.get_current_subjectId()
        qry2.gradeId = self.get_current_gradeId()
        qry2.FuzzyMatch = True  #匹配学段,包括年级
        usg_list = qry2.query_map(qry2.count())
        if usg_list != None and len(usg_list) > 0:
            for uu in usg_list:
                self.userIds += str(uu["userId"]) + ","
        if self.userIds != "" and self.userIds.endswith(","):
            self.userIds = self.userIds[0:len(self.userIds) - 1]

    def isAdmin(self):
        t = self.accessControlService.userIsSubjectAdmin(
            self.loginUser, self.subject)
        if t == True:
            request.setAttribute("isSystemAdmin", "1")
            request.setAttribute("isAdmin", "1")
        else:
            request.setAttribute("isSystemAdmin", "0")
        return t

    def isContentAdmin(self):
        t = self.accessControlService.userIsSubjectContentAdmin(
            self.loginUser, self.subject)
        if t == True:
            request.setAttribute("isContentAdmin", "1")
        else:
            request.setAttribute("isContentAdmin", "0")
        return t

    def isUserAdmin(self):
        t = self.accessControlService.userIsSubjectUserAdmin(
            self.loginUser, self.subject)
        if t == True:
            request.setAttribute("isUserAdmin", "1")
        else:
            request.setAttribute("isUserAdmin", "0")
        return t

    def clear_subject_cache(self):
        if self.subjectId != 0:
            cache = __jitar__.cacheProvider.getCache('subject')
            if cache == None:
                return
            cache_list = cache.getAllKeys()
            cache_key_head = "sbj" + str(self.subjectId)
            for c in cache_list:
                if c.split("_")[0] == cache_key_head:
                    cache.remove(c)

    def getCurrentSiteUrl(self, request):
        return CommonUtil.getSiteUrl(request)

    #名师工作室.
    def get_famous_list(self):
        minNum = CommonUtil.convertRoundMinNumber(self.get_current_gradeId())
        maxNum = CommonUtil.convertRoundMaxNumber(self.get_current_gradeId())
        strOrderBy = "UserId DESC"
        strWhereClause = "(UserStatus=0 And UserType LIKE '%/1/%' "
        strWhere1 = strWhereClause + " And GradeId >= " + str(
            minNum) + " And GradeId<" + str(maxNum) + " And SubjectId=" + str(
                self.get_current_subjectId())
        strWhere1 += ")"
        strWhere2 = ""

        if self.userIds != "":
            strWhere2 = " And UserId In(" + self.userIds + ")"

        if strWhere2 != "":
            strWhere2 = strWhereClause + strWhere2 + ")"
        if strWhere2 == "":
            strWhereClause = strWhere1
        else:
            strWhereClause = strWhere1 + " Or " + strWhere2
        pagingService = __spring__.getBean("pagingService")
        pagingQuery = PagingQuery()
        pagingQuery.keyName = "UserId"
        pagingQuery.fetchFieldsName = "*"
        pagingQuery.spName = "findPagingUser"
        pagingQuery.tableName = "Jitar_User"
        pagingQuery.whereClause = strWhereClause
        pagingQuery.orderByFieldName = strOrderBy
        pagingQuery.topCount = 6
        famous_list = pagingService.getPagingList(pagingQuery)
        return famous_list
        #request.setAttribute("famous_list", famous_list)

    # 学科带头人工作室.
    def get_expert_list(self):
        #qry = UserQuery("""  u.loginName, u.blogName, u.nickName,u.trueName, u.userIcon, u.blogIntroduce,u.articleCount, subj.subjectId """)
        #qry.isExpert = True
        #qry.FuzzyMatch = True
        #qry.metaSubjectId = self.get_current_subjectId()
        #qry.metaGradeId = self.get_current_gradeId()
        #expert_list = qry.query_map(3)

        minNum = CommonUtil.convertRoundMinNumber(self.get_current_gradeId())
        maxNum = CommonUtil.convertRoundMaxNumber(self.get_current_gradeId())
        strOrderBy = "UserId DESC"
        strWhereClause = "(UserStatus=0 And UserType LIKE '%/3/%' "
        strWhere1 = strWhereClause + " And GradeId >= " + str(
            minNum) + " And GradeId<" + str(maxNum) + " And SubjectId=" + str(
                self.get_current_subjectId())
        strWhere1 += ")"
        strWhere2 = ""

        if self.userIds != "":
            strWhere2 = " And UserId In(" + self.userIds + ")"

        if strWhere2 != "":
            strWhere2 = strWhereClause + strWhere2 + ")"
        if strWhere2 == "":
            strWhereClause = strWhere1
        else:
            strWhereClause = strWhere1 + " Or " + strWhere2
        pagingService = __spring__.getBean("pagingService")
        pagingQuery = PagingQuery()
        pagingQuery.keyName = "UserId"
        pagingQuery.fetchFieldsName = "*"
        pagingQuery.spName = "findPagingUser"
        pagingQuery.tableName = "Jitar_User"
        pagingQuery.whereClause = strWhereClause
        pagingQuery.orderByFieldName = strOrderBy
        pagingQuery.topCount = 3
        expert_list = pagingService.getPagingList(pagingQuery)
        return expert_list
        #request.setAttribute("expert_list", expert_list)

    # 工作室访问排行.
    def get_hot_list(self, topCount):
        minNum = CommonUtil.convertRoundMinNumber(self.get_current_gradeId())
        maxNum = CommonUtil.convertRoundMaxNumber(self.get_current_gradeId())
        strOrderBy = "VisitCount DESC"
        strWhereClause = "(UserStatus=0 "
        strWhere1 = strWhereClause + " And GradeId >= " + str(
            minNum) + " And GradeId<" + str(maxNum) + " And SubjectId=" + str(
                self.get_current_subjectId())
        strWhere1 += ")"
        strWhere2 = ""

        if self.userIds != "":
            strWhere2 = " And UserId In(" + self.userIds + ")"

        if strWhere2 != "":
            strWhere2 = strWhereClause + strWhere2 + ")"
        if strWhere2 == "":
            strWhereClause = strWhere1
        else:
            strWhereClause = strWhere1 + " Or " + strWhere2
        pagingService = __spring__.getBean("pagingService")
        pagingQuery = PagingQuery()
        pagingQuery.keyName = "UserId"
        pagingQuery.fetchFieldsName = "*"
        pagingQuery.spName = "findPagingUser"
        pagingQuery.tableName = "Jitar_User"
        pagingQuery.whereClause = strWhereClause
        pagingQuery.orderByFieldName = strOrderBy
        pagingQuery.topCount = topCount
        hot_list = pagingService.getPagingList(pagingQuery)
        return hot_list

    # 最新工作室排行.
    def get_new_list(self, topCount):
        minNum = CommonUtil.convertRoundMinNumber(self.get_current_gradeId())
        maxNum = CommonUtil.convertRoundMaxNumber(self.get_current_gradeId())
        strOrderBy = "UserId DESC"
        strWhereClause = "(UserStatus=0 "
        strWhere1 = strWhereClause + " And GradeId >= " + str(
            minNum) + " And GradeId<" + str(maxNum) + " And SubjectId=" + str(
                self.get_current_subjectId())
        strWhere1 += ")"
        strWhere2 = ""

        if self.userIds != "":
            strWhere2 = " And UserId In(" + self.userIds + ")"

        if strWhere2 != "":
            strWhere2 = strWhereClause + strWhere2 + ")"
        if strWhere2 == "":
            strWhereClause = strWhere1
        else:
            strWhereClause = strWhere1 + " Or " + strWhere2
        pagingService = __spring__.getBean("pagingService")
        pagingQuery = PagingQuery()
        pagingQuery.keyName = "UserId"
        pagingQuery.fetchFieldsName = "*"
        pagingQuery.spName = "findPagingUser"
        pagingQuery.tableName = "Jitar_User"
        pagingQuery.whereClause = strWhereClause
        pagingQuery.orderByFieldName = strOrderBy
        pagingQuery.topCount = topCount
        hot_list = pagingService.getPagingList(pagingQuery)
        return hot_list

    # 推荐工作室.
    def get_rcmd_list(self, topCount):
        minNum = CommonUtil.convertRoundMinNumber(self.get_current_gradeId())
        maxNum = CommonUtil.convertRoundMaxNumber(self.get_current_gradeId())
        strOrderBy = "UserId DESC"
        strWhereClause = "(UserStatus=0 And UserType LIKE '%/2/%' "
        strWhere1 = strWhereClause + " And GradeId >= " + str(
            minNum) + " And GradeId<" + str(maxNum) + " And SubjectId=" + str(
                self.get_current_subjectId())
        strWhere1 += ")"
        strWhere2 = ""

        if self.userIds != "":
            strWhere2 = " And UserId In(" + self.userIds + ")"

        if strWhere2 != "":
            strWhere2 = strWhereClause + strWhere2 + ")"
        if strWhere2 == "":
            strWhereClause = strWhere1
        else:
            strWhereClause = strWhere1 + " Or " + strWhere2
        pagingService = __spring__.getBean("pagingService")
        pagingQuery = PagingQuery()
        pagingQuery.keyName = "UserId"
        pagingQuery.fetchFieldsName = "*"
        pagingQuery.spName = "findPagingUser"
        pagingQuery.tableName = "Jitar_User"
        pagingQuery.whereClause = strWhereClause
        pagingQuery.orderByFieldName = strOrderBy
        pagingQuery.topCount = topCount
        hot_list = pagingService.getPagingList(pagingQuery)
        return hot_list

    # 得到学科教研员列表.
    def get_subject_comissioner(self):
        #qry = UserQuery(""" u.loginName, u.nickName, u.trueName,u.userIcon, u.blogName, u.createDate,
        #                    u.myArticleCount, u.otherArticleCount, u.resourceCount, u.blogIntroduce,u.articleCount """)
        #qry.setSubjectCondition(self.subject)
        #qry.isComissioner = True
        #qry.FuzzyMatch = True
        #qry.metaSubjectId = self.get_current_subjectId()
        #qry.metaGradeId = self.get_current_gradeId()
        #comissioner_list = qry.query_map(6)

        minNum = CommonUtil.convertRoundMinNumber(self.get_current_gradeId())
        maxNum = CommonUtil.convertRoundMaxNumber(self.get_current_gradeId())
        strOrderBy = "VisitCount DESC"
        strWhereClause = "(UserStatus=0 And UserType LIKE '%/4/%' "
        strWhere1 = strWhereClause + " And GradeId >= " + str(
            minNum) + " And GradeId<" + str(maxNum) + " And SubjectId=" + str(
                self.get_current_subjectId())
        strWhere1 += ")"
        strWhere2 = ""

        if self.userIds != "":
            strWhere2 = " And UserId In(" + self.userIds + ")"

        if strWhere2 != "":
            strWhere2 = strWhereClause + strWhere2 + ")"
        if strWhere2 == "":
            strWhereClause = strWhere1
        else:
            strWhereClause = strWhere1 + " Or " + strWhere2
        pagingService = __spring__.getBean("pagingService")
        pagingQuery = PagingQuery()
        pagingQuery.keyName = "UserId"
        pagingQuery.fetchFieldsName = "*"
        pagingQuery.spName = "findPagingUser"
        pagingQuery.tableName = "Jitar_User"
        pagingQuery.whereClause = strWhereClause
        pagingQuery.orderByFieldName = strOrderBy
        pagingQuery.topCount = 6
        comissioner_list = pagingService.getPagingList(pagingQuery)
        return comissioner_list
        #request.setAttribute("comissioner_list", comissioner_list)

    def get_current_subjectId(self):
        subjectId = self.subject.metaSubject.msubjId
        request.setAttribute("subjectId", subjectId)
        return subjectId

    def get_current_gradeId(self):
        gradeId = self.subject.metaGrade.gradeId
        request.setAttribute("gradeId", gradeId)
        return gradeId