瀏覽代碼

capitalisation of channel and usernames created duplicate records.

tBKwtWS 7 年之前
父節點
當前提交
13ff7142d6

+ 5 - 5
.eric6project/pyRot.e6t

@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE Tasks SYSTEM "Tasks-6.0.dtd">
 <!-- eric6 tasks file for project pyRot -->
-<!-- Saved: 2018-02-02, 23:50:46 -->
+<!-- Saved: 2018-02-03, 02:36:35 -->
 <Tasks version="6.0">
   <ProjectScanFilter></ProjectScanFilter>
   <Task priority="1" completed="False" type="2" uid="{234d5c0b-8641-48f6-bd8a-fb56ea9754d7}">
@@ -13,19 +13,19 @@
       <Linenumber>8</Linenumber>
     </Resource>
   </Task>
-  <Task priority="1" completed="False" type="2" uid="{f49fd638-f195-451e-98cf-4d5255d9cb24}">
+  <Task priority="1" completed="False" type="2" uid="{de1813c1-6822-4c7b-9c9a-b31c633a7d6c}">
     <Summary>WARNING: keep the secret key used in production secret!</Summary>
     <Description></Description>
-    <Created>2018-02-02, 23:50:43</Created>
+    <Created>2018-02-03, 02:36:32</Created>
     <Resource>
       <Filename>webgui/webgui/settings.py</Filename>
       <Linenumber>22</Linenumber>
     </Resource>
   </Task>
-  <Task priority="1" completed="False" type="2" uid="{a02f047d-a650-4727-b5c3-98d3df53797d}">
+  <Task priority="1" completed="False" type="2" uid="{77ca5d93-d0c3-4c81-956a-9eec93882aba}">
     <Summary>WARNING: don't run with debug turned on in production!</Summary>
     <Description></Description>
-    <Created>2018-02-02, 23:50:43</Created>
+    <Created>2018-02-03, 02:36:32</Created>
     <Resource>
       <Filename>webgui/webgui/settings.py</Filename>
       <Linenumber>25</Linenumber>

+ 1 - 1
irc/common/queries.py

@@ -1,3 +1,3 @@
 def create_ifnot_onrecord(self, user):
-    if not self.db.one("SELECT id FROM users WHERE name='" + user + "' AND network='" + self.network + "'"):    # User not on record.
+    if not self.db.one("SELECT id FROM users WHERE LOWER(name)=LOWER('" + user + "') AND network='" + self.network + "'"):    # User not on record.
         self.db.run("INSERT INTO users (name, network) VALUES ('" + user + "', '" + self.network + "')")   # Create record.

+ 2 - 2
irc/events/common.py

@@ -107,6 +107,6 @@ class MessageStatistics():
     def update(self, event, type):
         type = type + "s"
         queries.create_ifnot_onrecord(self, event.source.nick)
-        if not self.db.one("SELECT id FROM messages WHERE channel='" + event.target + "' AND channel_network='" + self.network + "' AND \"user\"='" + event.source.nick + "' AND user_network='" + self.network + "'"):    # Not on record.
+        if not self.db.one("SELECT id FROM messages WHERE LOWER(channel)=LOWER('" + event.target + "') AND channel_network='" + self.network + "' AND LOWER(\"user\")=LOWER('" + event.source.nick + "') AND user_network='" + self.network + "'"):    # Not on record.
             self.db.run("INSERT INTO messages (channel, channel_network, \"user\", user_network) VALUES ('" + event.target + "', '" + self.network + "', '" + event.source.nick + "', '" + self.network + "')")   # Create record.
-        self.db.run("UPDATE messages SET " + type + "=" + type + "+1, " + type + "_words=" + type + "_words+" + str(len(event.arguments[0].split())) + ", " + type + "_characters=" + type + "_characters+" + str(len(event.arguments[0])) + " WHERE channel='" + event.target + "' AND channel_network='" + self.network + "' AND \"user\"='" + event.source.nick + "' AND user_network='" + self.network + "'")   # Increment record.
+        self.db.run("UPDATE messages SET " + type + "=" + type + "+1, " + type + "_words=" + type + "_words+" + str(len(event.arguments[0].split())) + ", " + type + "_characters=" + type + "_characters+" + str(len(event.arguments[0])) + " WHERE LOWER(channel)=LOWER('" + event.target + "') AND channel_network='" + self.network + "' AND LOWER(\"user\")=LOWER('" + event.source.nick + "') AND user_network='" + self.network + "'")   # Increment record.

+ 4 - 4
irc/events/on_join.py

@@ -18,13 +18,13 @@ def process_event(self, connection, event):
     Lastact.update(self, event.source.nick, "join", channel=event.target)
     
     # Add join event to database for statistics.
-    if not self.db.one("SELECT id FROM channels WHERE name='" + event.target + "' AND network='" + self.network + "'"): # Channel does not exist in database.
+    if not self.db.one("SELECT id FROM channels WHERE LOWER(name)=LOWER('" + event.target + "') AND network='" + self.network + "'"): # Channel does not exist in database.
         self.db.run("INSERT INTO channels (name, network) VALUES ('" + event.target + "', '" + self.network + "')")
-    if not self.db.one("SELECT id FROM users WHERE name='" + event.source.nick + "' AND network='" + self.network + "'"):   # User does not exist in database.
+    if not self.db.one("SELECT id FROM users WHERE lower(name)=LOWER('" + event.source.nick + "') AND network='" + self.network + "'"):   # User does not exist in database.
         self.db.run("INSERT INTO users (name, network) VALUES ('" + event.source.nick + "', '" + self.network + "')")
-    if not self.db.one("SELECT id FROM joins WHERE channel='" + event.target + "' AND channel_network='" + self.network + "' AND \"user\"='" + event.source.nick + "' AND user_network='" + self.network + "'"):    # No record yet
+    if not self.db.one("SELECT id FROM joins WHERE LOWER(channel)=LOWER('" + event.target + "') AND channel_network='" + self.network + "' AND LOWER(\"user\")=LOWER('" + event.source.nick + "') AND user_network='" + self.network + "'"):    # No record yet
         self.db.run("INSERT INTO joins (channel, channel_network, \"user\", user_network, joins) VALUES ('" + event.target + "', '" + self.network + "', '" + event.source.nick + "', '" + self.network + "', 0)")
-    self.db.run("UPDATE joins SET joins = joins + 1 WHERE channel='" + event.target + "' AND channel_network='" + self.network + "' AND \"user\"='" + event.source.nick + "' AND user_network='" + self.network + "'")
+    self.db.run("UPDATE joins SET joins = joins + 1 WHERE LOWER(channel)=LOWER('" + event.target + "') AND channel_network='" + self.network + "' AND LOWER(\"user\")=LOWER('" + event.source.nick + "') AND user_network='" + self.network + "'")
     
     if event.source.nick == connection.get_nickname():  # The bot joined a channel.
         connection.who(self.homechannel)    # Get whoreplies for users of homechannel.

+ 0 - 0
webgui/stats/templates/stats/index.html


+ 1 - 0
webgui/stats/urls.py

@@ -4,4 +4,5 @@ from . import views
 
 urlpatterns = [
     path('', views.index, name='index'),
+    path('<int:foo_id>/', views.foo, name='foo'),
 ]

+ 3 - 0
webgui/stats/views.py

@@ -5,3 +5,6 @@ from django.http import HttpResponse
 
 def index(request):
     return HttpResponse("Hello, world. You're at the polls index.")
+
+def foo(request, foo_id):
+    return HttpResponse("You're looking at question %s." % foo_id)

+ 1 - 1
webgui/webgui/settings.py

@@ -77,7 +77,7 @@ DATABASES = {
     'default': {
         'ENGINE': 'django.db.backends.postgresql',
         'NAME': 'pyRotsite',
-        'USER': 'pyRotSite',
+        'USER': 'pyRotsite',
         'PASSWORD': '4h8q(.',
         'HOST': '127.0.0.1',
         'PORT': '5432',