@@ -86,7 +90,7 @@
@@ -100,7 +104,7 @@
diff --git a/user.py b/user.py
index 08fd505..96d88b8 100644
--- a/user.py
+++ b/user.py
@@ -27,7 +27,7 @@ class User(object):
@property
def enabled(self):
- db.execute("SELECT enabled FROM user WHERE user_id=?;", (self.uid, ))
+ db.execute("SELECT enabled FROM user WHERE id=?;", (self.uid, ))
return bool(db.cur.fetchone()[0])
@enabled.setter
@@ -59,16 +59,35 @@ class User(object):
def is_appropriate(self, report):
db.execute("SELECT pattern FROM triggerpatterns WHERE user_id=?;",
(self.uid, ))
- for pattern, in db.cur.fetchall():
+ patterns = db.cur.fetchone()
+ for pattern in patterns.splitlines():
if pattern.search(report.text) is not None:
break
else:
# no pattern matched
return False
+ default_badwords = """
+bastard
+bitch
+whore
+hitler
+slut
+hure
+jude
+schwuchtel
+fag
+faggot
+nigger
+neger
+schlitz
+ """
db.execute("SELECT word FROM badwords WHERE user_id=?;",
(self.uid, ))
- badwords = [word.lower() for word, in db.cur.fetchall()]
- for word in report.text.lower().split():
+ badwords = db.cur.fetchone()
+ for word in report.text.lower().splitlines():
+ if word in badwords:
+ return False
+ for word in default_badwords.splitlines():
if word in badwords:
return False
return True
@@ -129,8 +148,22 @@ class User(object):
db.execute("UPDATE seen_mail SET mail_date = ? WHERE user_id = ?;",
(mail_date, self.uid))
- def get_trigger_words(self, table):
- db.execute("SELECT words FROM ? WHERE user_id = ?;", (table, self.uid,))
+ def set_trigger_words(self, patterns):
+ db.execute("UPDATE triggerpatterns SET patterns = ? WHERE user_id = ?;",
+ (patterns, self.uid))
+
+ def get_trigger_words(self):
+ db.execute("SELECT patterns FROM triggerpatterns WHERE user_id = ?;",
+ (self.uid,))
+ return db.cur.fetchone()[0]
+
+ def set_badwords(self, words):
+ db.execute("UPDATE badwords SET words = ? WHERE user_id = ?;",
+ (words, self.uid))
+
+ def get_badwords(self):
+ db.execute("SELECT words FROM badwords WHERE user_id = ?;",
+ (self.uid,))
return db.cur.fetchone()[0]
def state(self):
@@ -142,7 +175,12 @@ class User(object):
# - logged in with twitter?
# - logged in with mastodon?
# - enabled?
- return dict(foo='bar')
+ citydict = db.user_facing_properties(self.get_city())
+ return dict(city=citydict['city'],
+ markdown=citydict['markdown'],
+ triggerwords=self.get_trigger_words(),
+ badwords=self.get_badwords(),
+ enabled=self.enabled)
def save_request_token(self, token):
db.execute("INSERT INTO twitter_request_tokens(user_id, request_token, request_token_secret) VALUES(?, ?, ?);",
@@ -191,99 +229,99 @@ class User(object):
db.commit()
def get_city(self):
- db.execute("SELECT city FROM user WHERE id == ?;", (self.uid, ))
+ db.execute("SELECT city FROM cities WHERE user_id == ?;", (self.uid, ))
return db.cur.fetchone()[0]
def set_city(self, city):
- masto_link = "masto.social/@" + city # get masto_link
- twit_link = "twitter.com/" + city # get twit_link
+ masto_link = "example.mastodon.social/@" + city # get masto_link
+ twit_link = "example.twitter.com/" + city # get twit_link
mailinglist = city + "@" + config['web']['host']
markdown = """
- = Wie funktioniert Ticketfrei? =
-
- Willst du mithelfen, Ticketkontrolleure zu überwachen?
- Willst du einen Fahrscheinfreien ÖPNV erkämpfen?
-
- == Ist es gerade sicher, schwarz zu fahren? ==
-
- Schau einfach auf das Profil unseres Bots: """ + twit_link + """
-
- Hat jemand vor kurzem etwas über Kontrolleur*innen gepostet?
- * Wenn ja, dann kauf dir vllt lieber ein Ticket. In Nürnberg
- haben wir die Erfahrung gemacht, dass Kontis normalerweile
- ungefähr ne Woche aktiv sind, ein paar Stunden am Tag. Wenn es
- also in den letzten Stunden einen Bericht gab, pass lieber
- auf.
- * Wenn nicht, ist es wahrscheinlich kein Problem :)
-
- Wir können natürlich nicht garantieren, dass es sicher ist,
- also pass trotzdem auf, wer auf dem Bahnsteig steht.
- Aber je mehr Leute mitmachen, desto eher kannst du dir sicher
- sein, dass wir sie finden, bevor sie uns finden.
-
- Also, wenn du weniger Glück hast, und der erste bist, der einen
- Kontrolleur sieht:
-
- == Was mache ich, wenn ich Kontis sehe? ==
-
- Ganz einfach, du schreibst es den anderen. Das geht entweder
-
-
-
- * Oder per Mail an """ + mailinglist + """, wenn ihr kein
- Social Media benutzen wollt.
-
- Schreibe einfach einen Toot oder einen Tweet, der den Bot
- mentioned, und gib an
- * Wo du die Kontis gesehen hast
- * Welche Linie sie benutzen und in welche Richtung sie fahren.
-
- Zum Beispiel so:
-
- [[https://github.com/b3yond/ticketfrei/blob/master/guides/tooting_screenshot.png|Screenshot of writing a toot]]
-
- [[https://github.com/b3yond/ticketfrei/blob/master/guides/toot_screenshot.png|A toot ready to be boosted]]
-
- Der Bot wird die Nachricht dann weiterverbreiten, auch zu den
- anderen Netzwerken.
- Dann können andere Leute das lesen und sicher vor Kontis sein.
-
- Danke, dass du mithilfst, öffentlichen Verkehr für alle
- sicherzustellen!
-
- == Kann ich darauf vertrauen, was random stranger from the
- Internet mir da erzählen? ==
-
- Aber natürlich! Wir haben Katzenbilder!
-
- [[https://lorempixel.com/550/300/cats|Katzenbilder...]]
-
- Glaubt besser nicht, wenn jemand postet, dass die Luft da und
- da gerade rein ist.
- Das ist vielleicht sogar gut gemeint - aber klar könnte die
- VAG sich hinsetzen und einfach lauter Falschmeldungen posten.
-
- Aber Falschmeldungen darüber, dass gerade Kontis i-wo unterwegs
- sind?
- Das macht keinen Sinn.
- Im schlimmsten Fall kauft jmd mal eine Fahrkarte mehr - aber
- kann sonst immer schwarz fahren.
-
- Also ja - es macht Sinn, uns zu vertrauen, wenn wir sagen, wo
- gerade Kontis sind.
-
- == Was ist Mastodon und warum sollte ich es benutzen? ==
-
- Mastodon ist ein dezentrales soziales Netzwerk - so wie
- Twitter, nur ohne Monopol und Zentralismus.
- Ihr könnt Kurznachrichten (Toots) über alles mögliche
- schreiben, und euch mit anderen austauschen.
-
- Mastodon ist Open Source, Privatsphäre-freundlich und relativ
- sicher vor Zensur.
-
- Um Mastodon zu benutzen, besucht diese Seite:
- https://joinmastodon.org/
+# Wie funktioniert Ticketfrei?
+
+Willst du mithelfen, Ticketkontrolleure zu überwachen?
+Willst du einen Fahrscheinfreien ÖPNV erkämpfen?
+
+## Ist es gerade sicher, schwarz zu fahren?
+
+Schau einfach auf das Profil unseres Bots: """ + twit_link + """
+
+Hat jemand vor kurzem etwas über Kontrolleur*innen gepostet?
+* Wenn ja, dann kauf dir vllt lieber ein Ticket. In Nürnberg
+ haben wir die Erfahrung gemacht, dass Kontis normalerweile
+ ungefähr ne Woche aktiv sind, ein paar Stunden am Tag. Wenn es
+ also in den letzten Stunden einen Bericht gab, pass lieber
+ auf.
+* Wenn nicht, ist es wahrscheinlich kein Problem :)
+
+Wir können natürlich nicht garantieren, dass es sicher ist,
+also pass trotzdem auf, wer auf dem Bahnsteig steht.
+Aber je mehr Leute mitmachen, desto eher kannst du dir sicher
+sein, dass wir sie finden, bevor sie uns finden.
+
+Also, wenn du weniger Glück hast, und der erste bist, der einen
+Kontrolleur sieht:
+
+## Was mache ich, wenn ich Kontis sehe?
+
+Ganz einfach, du schreibst es den anderen. Das geht entweder
+
+
+
+* Oder per Mail an """ + mailinglist + """, wenn ihr kein
+ Social Media benutzen wollt.
+
+Schreibe einfach einen Toot oder einen Tweet, der den Bot
+mentioned, und gib an
+* Wo du die Kontis gesehen hast
+* Welche Linie sie benutzen und in welche Richtung sie fahren.
+
+Zum Beispiel so:
+
+[[https://github.com/b3yond/ticketfrei/blob/master/guides/tooting_screenshot.png|Screenshot of writing a toot]]
+
+[[https://github.com/b3yond/ticketfrei/blob/master/guides/toot_screenshot.png|A toot ready to be boosted]]
+
+Der Bot wird die Nachricht dann weiterverbreiten, auch zu den
+anderen Netzwerken.
+Dann können andere Leute das lesen und sicher vor Kontis sein.
+
+Danke, dass du mithilfst, öffentlichen Verkehr für alle
+sicherzustellen!
+
+## Kann ich darauf vertrauen, was random stranger from the
+Internet mir da erzählen?
+
+Aber natürlich! Wir haben Katzenbilder!
+
+[[https://lorempixel.com/550/300/cats|Katzenbilder...]]
+
+Glaubt besser nicht, wenn jemand postet, dass die Luft da und
+da gerade rein ist.
+Das ist vielleicht sogar gut gemeint - aber klar könnte die
+VAG sich hinsetzen und einfach lauter Falschmeldungen posten.
+
+Aber Falschmeldungen darüber, dass gerade Kontis i-wo unterwegs
+sind?
+Das macht keinen Sinn.
+Im schlimmsten Fall kauft jmd mal eine Fahrkarte mehr - aber
+kann sonst immer schwarz fahren.
+
+Also ja - es macht Sinn, uns zu vertrauen, wenn wir sagen, wo
+gerade Kontis sind.
+
+## Was ist Mastodon und warum sollte ich es benutzen?
+
+Mastodon ist ein dezentrales soziales Netzwerk - so wie
+Twitter, nur ohne Monopol und Zentralismus.
+Ihr könnt Kurznachrichten (Toots) über alles mögliche
+schreiben, und euch mit anderen austauschen.
+
+Mastodon ist Open Source, Privatsphäre-freundlich und relativ
+sicher vor Zensur.
+
+Um Mastodon zu benutzen, besucht diese Seite:
+https://joinmastodon.org/
"""
db.execute("""INSERT INTO cities(user_id, city, markdown, masto_link,
twit_link) VALUES(?,?,?,?,?)""",