Changeset 112
- Timestamp:
- 04/28/08 22:02:25 (7 months ago)
- Files:
-
- trunk/tracforums/models/category.py (modified) (2 diffs)
- trunk/tracforums/models/forum.py (modified) (1 diff)
- trunk/tracforums/models/main.py (modified) (2 diffs)
- trunk/tracforums/models/message.py (modified) (1 diff)
- trunk/tracforums/models/topic.py (modified) (1 diff)
- trunk/tracforums/orm.py (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/tracforums/models/category.py
r111 r112 8 8 9 9 class CategoryModel(ORMSchema( 10 tablename = Tablenames.category,11 orderby = [("rank","asc")],12 columns = {13 "id": ORMKey(type="int", auto_increment = True),14 "projectid": ORMColumn(type="varchar",size=32,force_insert = True),15 "description": ORMColumn(type="text"),16 "rank": ORMColumn(type='int', auto_increment = True),17 18 # aliases19 "categoryid": ORMAlias(sql='id'),20 "descriptionhtml": ORMAlias(21 name="description",22 type="wiki"23 ),24 })):25 10 tablename = Tablenames.category, 11 orderby = [("rank","asc")], 12 columns = { 13 "id": ORMKey(type="int", auto_increment = True), 14 "projectid": ORMColumn(type="varchar",size=32,force_insert = True), 15 "description": ORMColumn(type="text"), 16 "rank": ORMColumn(type='int', auto_increment = True), 17 18 # aliases 19 "categoryid": ORMAlias(sql='id'), 20 "descriptionhtml": ORMAlias( 21 name="description", 22 type="wiki" 23 ), 24 })): 25 26 26 def demoteRank(self): 27 27 # increase rank value to lower it's priority in the list … … 47 47 self.rank = ranks[idx-1] 48 48 49 50 def deleteMany(self,query): 51 categoryIds = query.get("id") 52 53 if categoryIds == None: 54 categoryIds = self.getBase().getColumnValues("id",query) 55 if len(categoryIds) == 0: return 56 57 from tracforums.models.forum import ForumModel 58 ForumModel(self.db,self).deleteMany({"categoryid":categoryIds}) 59 60 self.getBase().deleteMany(self,query) 61 62 def delete(self,data={}): 63 from tracforums.models.forum import ForumModel 64 ForumModel(self.db,self).deleteMany({"categoryid":self.id}) 65 66 self.getBase().delete(self,data) 67 68 49 69 50 70 CategoryModelWithForums = ORMSchema( trunk/tracforums/models/forum.py
r111 r112 197 197 self.updateMany({"rank":ranks[idx-1]},{"rank":self.rank}) 198 198 self.rank = ranks[idx-1] 199 200 def deleteMany(self,query): 201 forumIds = query.get("id",query.get("forumid")) 202 203 print 'forumIds',forumIds,query 204 205 if forumIds == None: 206 forumIds = self.getBase().getColumnValues(self,"id",query) 207 if len(forumIds) == 0: return 208 209 from tracforums.models.topic import TopicModel 210 TopicModel(self.db,self).deleteMany({"forumid":forumIds}) 211 212 from tracforums.models.watch import ForumWatchModel 213 ForumWatchModel(self.db,self).deleteMany({"forumid":forumIds}) 214 215 self.getBase().deleteMany(self,query) 216 217 def delete(self,data={}): 218 from tracforums.models.topic import TopicModel 219 TopicModel(self.db,self).deleteMany({"forumid":self.id}) 220 221 from tracforums.models.watch import ForumWatchModel 222 ForumWatchModel(self.db,self).deleteMany({"forumid":self.id}) 223 224 self.getBase().delete(self,data) 199 225 200 226 trunk/tracforums/models/main.py
r109 r112 81 81 82 82 from tracforums.models.forum import ForumModel 83 from tracforums.models.topic import TopicModel 84 from tracforums.models.message import MessageModel 83 85 from tracforums.models.category import CategoryModel 84 86 … … 157 159 if len(selectedForums) > 0: 158 160 ForumModel(self.db,self).deleteMany({"id":selectedForums,"projectid":self.getProjectId()}) 161 159 162 if len(selectedCategories) > 0: 160 CategoryModel(self.db,self).deleteMany({"id":selectedCategories,"projectid":self.getProjectId()}) 163 CategoryModel(self.db,self).deleteMany({"id":selectedCategories,"projectid":self.getProjectId()}) 161 164 162 165 elif action == "coalesceForums": trunk/tracforums/models/message.py
r111 r112 106 106 elif self.formatContext.getAuthname() == self.author: return True 107 107 else: return self.formatContext.getAuthname() in self.topic.forum.moderators 108 108 109 109 110 110 111 class MessageModelWithProfile(ORMSchema( trunk/tracforums/models/topic.py
r111 r112 148 148 notifyTopicChanged(self.db,self.formatContext,self) 149 149 self.save(data) 150 150 151 def deleteMany(self,query): 152 topicIds = query.get("id",query.get("topicid")) 153 154 if topicIds == None: 155 topicIds = self.getBase().getColumnValues(self,"id",query) 156 if len(topicIds) == 0: return 157 158 from tracforums.models.message import MessageModel 159 MessageModel(self.db,self).deleteMany({"topicid":topicIds}) 160 161 from tracforums.models.watch import TopicWatchModel 162 TopicWatchModel(self.db,self).deleteMany({"topicid":topicIds}) 163 164 self.getBase().deleteMany(self,query) 165 166 def delete(self,data={}): 167 from tracforums.models.message import MessageModel 168 MessageModel(self.db,self).deleteMany({"topicid":self.id}) 169 170 from tracforums.models.watch import TopicWatchModel 171 TopicWatchModel(self.db,self).deleteMany({"topicid":self.id}) 172 173 self.getBase().delete(self,data) 151 174 152 175 ProjectCorrelatedTopicModel = ORMSchema( trunk/tracforums/orm.py
r111 r112 80 80 for i in range(0,len(part)): 81 81 keyname = prefix + parentKey + str(i) 82 termValues[keyname] = val[i]82 termValues[keyname] = part[i] 83 83 listterms.append(parentKey + " = %(" + keyname + ")s") 84 84 85 termSQL += "(" + " or ".join(listterms) + ")" 85 86 … … 656 657 if len(querySql) > 0: querySql = " where " + querySql 657 658 658 selectSQL = None 659 col = self.schema.columns[columnName] 660 if isinstance(col,ORMAlias): 661 selectSQL = "select (" + col.sql + ") as " + columnName + " from " + self.schema.tablename 662 elif isinstance(col,ORMRelation): 663 #TODO: support 664 pass 665 elif isinstance(col,ORMJoin): 666 #TODO: support 667 #selectSQL = "select * from (" col.left ") as " + col.joinType + 668 # " join select * from (" col.right ") as asdfj on " 669 pass 670 elif isinstance(col,ORMColumn): 671 selectSQL = "select " + columnName + " from " + self.schema.tablename 672 673 if selectSQL: 674 ###print "\ngetColumnValues",selectSQL + querySql + self.schema.orderbySQL 675 cursor.execute(selectSQL + querySql + self.schema.orderbySQL,queryData) 659 selectColumns = [] 660 relevantColumns = [] 661 relevantColumns.append(columnName) 662 663 # get the column names from the query 664 for key in query: 665 if not key in relevantColumns: 666 relevantColumns.append(key) 667 668 # gather up the columns and aliases 669 for key in relevantColumns: 670 col = self.schema.columns[key] 671 if isinstance(col,ORMAlias): 672 selectColumns.append("(" + col.sql + ") as " + key) 673 elif isinstance(col,ORMRelation): 674 #TODO: support 675 pass 676 elif isinstance(col,ORMJoin): 677 #TODO: support 678 #selectSQL = "select * from (" col.left ") as " + col.joinType + 679 # " join select * from (" col.right ") as asdfj on " 680 pass 681 elif isinstance(col,ORMColumn): 682 selectColumns.append(columnName) 683 684 # generate the SQL and execute 685 if len(selectColumns) > 0: 686 selectSQL = "select " + ", ".join(selectColumns) + " from " + self.schema.tablename 676 687 677 688 if limit > 0: 678 rows = cursor.fetchmany(limit) 679 else: 680 rows = cursor.fetchall() 681 689 selectSQL += " limit " + str(limit) 690 691 #print "\ngetColumnValues",selectSQL + querySql,queryData 692 cursor.execute(selectSQL + querySql,queryData) 693 rows = cursor.fetchall() 694 #print rows 682 695 return map(lambda x:x[0],rows) 683 696 return [] … … 698 711 cursor.execute("update " + self.schema.tablename + updateSql + querySql,queryData) 699 712 700 def deleteMany(self,query ):713 def deleteMany(self,query,debug=False): 701 714 cursor = self.db.cursor() 702 715 (querySql,queryData) = getSqlTerm(self.db,query) 703 716 querySql = " where " + querySql 704 717 705 #print self.schema.deleteSQL + querySql,queryData718 if debug: print self.schema.deleteSQL + querySql,queryData 706 719 707 720 cursor.execute(self.schema.deleteSQL + querySql,queryData) … … 729 742 val = self.get(name) 730 743 if val != None: 731 selectValues.append(name + " = %(" + name + ")s") 744 selectValues.append(name + " = %(" + name + ")s") 732 745 733 746 if debug: print("selectValues:",self,selectValues,self.schema.columnNames)
