tBKwtWS 6 năm trước cách đây
mục cha
commit
604448e3aa

+ 6 - 0
rotbot/common/queries.py

@@ -123,6 +123,12 @@ def create_or_get_and_update_last_event(self, table, event_type, channel_name=No
 def is_owner(self, hostmask):
     return self.db.one('SELECT id FROM rotbot_owner WHERE hostmask=%(hostmask)s', hostmask=hostmask)
 
+
+# Network
+def get_network_services(self)
+    return self.db.one('SELECT network_services FROM rotbot_network WHERE id=%(network_id)s')
+
+
 # Channel
 def get_channel_id(self, channel_name):
     return self.db.one('SELECT id FROM rotbot_channel WHERE network_id=%(network_id)s AND LOWER(name)=LOWER(%(channel_name)s)', network_id=self.network.id, channel_name=channel_name)

+ 1 - 0
rotbot/events/on_join.py

@@ -36,6 +36,7 @@ def process_event(self, connection, event):
 
     # Promotion conditions.
     promote = False
+    print(event.source)
     if queries.is_owner(self, event.source):  # Usermask in database.
         promote = True
     elif userstatus.is_owner(self, event.source.nick, self.network.home_channel):   # Owner of homechannel

+ 2 - 2
rotbot/events/on_privnotice.py

@@ -28,11 +28,11 @@ def process_event(self, connection, event):
             return
         elif event.arguments[0].endswith(' is not a registered nickname.') or event.arguments[0].startswith('Nick ') and event.arguments[0].endswith(' isn\'t registered.') or event.arguments[0] == 'Your nick isn\'t registered.': # Username from database is not registered.
             log.info('Registerring with NickServ.')
-            Inform.operators('Regisring %s%s%s with %sNickServ%s.' % (font.red, self.network.nickname, font.reset, font.red, font.reset))
+            Inform.operators(self, connection, 'Regisring %s%s%s with %sNickServ%s.' % (font.red, self.network.nickname, font.reset, font.red, font.reset))
             connection.privmsg('NickServ', 'register %s spamtBK@xs4all.nl' % (self.network.password)) # Register with NickServ.
             return
         elif event.arguments[0].startswith('Nickname ') and event.arguments[0].endswith(' registered.'):
-            Inform.home_channel(seld, connection, 'Registerred nickname %s%s%s with NickServ, adjusting settigns.' % font.red, self.network.nickname, font.reset)
+            Inform.home_channel(self, connection, 'Registerred nickname %s%s%s with NickServ, adjusting settigns.' % font.red, self.network.nickname, font.reset)
             connection.privmsg('NickServ', 'ACCESS LIST')
             connection.privmsg('NickServ', 'AJOIN ADD %s' % (self.network.home_channel, queries.get_channel_key(self, self.network.home_channel)))
             connection.privmsg('NickServ', 'SET AUTOOP ON')

+ 8 - 3
rotbot/events/on_welcome.py

@@ -4,9 +4,14 @@ def process_event(self, connection, event):
     log.info(event)    # Log event.
     self.db.run("UPDATE rotbot_host SET connection_succeeds = connection_succeeds + 1 WHERE id=%s", [self.network.id])
 
-    # Identify with NickServ.
-    if self.network.password:   # Password saved.
-        connection.privmsg("NickServ", "identify " + self.network.password) # Identify with NickServ.
+    # Identify with network services.
+    network_services = queries.get_network_services(self)
+    if network_services == 'm': # Modern network services (NickServ, ChanServ & MemoServ)
+        if self.network.password:   # Password saved.
+            connection.privmsg("NickServ", "identify " + self.network.password) # Identify with NickServ.
+    if network_services == 'x': # X bot.
+        if self.network.password:   # Password saved.
+            connection.privmsg('x@channels.abovenet.org', 'LOGIN %s %s' % (self.networkself.nickname, self.network.password))   # Identify with X.
 
     connection.mode(connection.get_nickname(), "+x")
 

+ 1 - 1
website/rotbot/forms.py

@@ -52,7 +52,7 @@ class HostForm(ModelForm):
 class OwnerForm(ModelForm):
     class Meta:
         model=Owner
-        fields='__all__'
+        exclude=['network',]
         labels={
             'hostmask': '<i class="fingerprint icon"></i>Owner hostmask',
         }

+ 151 - 38
website/rotbot/templates/rotbot/network_form.html

@@ -3,45 +3,91 @@
 {% block content %}
 
   <form class= "ui form" method="post" action="{% block formtag %}{% endblock formtag %}">
-  {% csrf_token %}
-  {{ form.non_field_errors }}
-  {% if error_message %}<p><strong>{{ error_message }}</strong></p>{% endif %}
-  <div class="two fields">
-    {% render_field form.name %}
-    {% render_field form.slug %}
-  </div>
-  {{ hostformset.management_form }}
-  {% for form in hostformset %}
-    {% render_form form %}
-  {% endfor %}
-  <div class="four fields">
-    {% render_field form.nickname %}
-    {% render_field form.password %}
-    {% render_field form.mail %}
-    {% render_field form.username %}
-  </div>
-  <div class="four fields">
-    {% render_field form.home_channel %}
-    {% render_field form.command_character %}
-    {% render_field form.help_character %}
-    {% render_field form.network_services %}
-    <script type="text/javascript">
-      $('.selection.dropdown')
-        .dropdown()
-      ;
-    </script>
-  </div>
-  {{ ownerformset.management_form }}
-  {% for ownerform in ownerformset %}
-    {% render_form ownerform %}
-  {% endfor %}
-  {% render_field form.enabled %}
-  <button class="ui right floated inverted positive button" type="submit" value="Submit"><i class="save icon"></i>Save</button>
+    {% csrf_token %}
+    {{ form.non_field_errors }}
+    {% if error_message %}<p><strong>{{ error_message }}</strong></p>{% endif %}
+    <div class="two fields">
+      {% render_field form.name %}
+      {% render_field form.slug %}
+    </div>
+    {{ hostformset.management_form }}
+    {% for hostform in hostformset %}
+      {{ hostform.non_field_errors }}
+      {% for field in hostform.hidden_fields %}{{ field }}{% endfor %}
+      {% render_form hostform %}
+    {% endfor %}
+    <div class="four fields">
+      {% render_field form.nickname %}
+      {% render_field form.password %}
+      {% render_field form.mail %}
+      {% render_field form.username %}
+    </div>
+    <div class="four fields">
+      {% render_field form.home_channel %}
+      {% render_field form.command_character %}
+      {% render_field form.help_character %}
+      {% render_field form.network_services %}
+      <script type="text/javascript">
+        $('.selection.dropdown')
+          .dropdown()
+        ;
+      </script>
+    </div>
+    {{ ownerformset.management_form }}
+    {% for ownerform in ownerformset %}
+      {% for field in ownerform.hidden_fields %}{{ field }}{% endfor %}
+      {% render_form ownerform %}
+    {% endfor %}
+    {% render_field form.enabled %}
+    <button class="ui right floated inverted positive button" type="submit" value="Submit"><i class="save icon"></i>Save</button>
   </form>
 {% endblock %}
 
 
   <form class= "ui form" method="post" action="{#% block formtag %}{% endblock formtag %#}">
+    {% csrf_token %}
+    {{ form.non_field_errors }}
+    {% if error_message %}<p><strong>{{ error_message }}</strong></p>{% endif %}
+    <div class="two fields">
+      {% render_field form.name %}
+      {% render_field form.slug %}
+    </div>
+    {{ hostformset.management_form }}
+    {% for hostform in hostformset %}
+      {{ hostform.non_field_errors }}
+      <div class="four fields">
+        {% render_field hostform.address %}
+        {% render_field hostform.port %}
+        {% render_field hostform.ssl %}
+        {% render_field hostform.DELETE %}
+      </div>
+    {% endfor %}
+    <div class="four fields">
+      {% render_field form.nickname %}
+      {% render_field form.password %}
+      {% render_field form.mail %}
+      {% render_field form.username %}
+    </div>
+    <div class="four fields">
+      {% render_field form.home_channel %}
+      {% render_field form.command_character %}
+      {% render_field form.help_character %}
+      {% render_field form.network_services %}
+      <script type="text/javascript">
+        $('.selection.dropdown')
+          .dropdown()
+        ;
+      </script>
+    </div>
+    {{ ownerformset.management_form }}
+    {% for ownerform in ownerformset %}
+      {% render_form ownerform %}
+    {% endfor %}
+    {% render_field form.enabled %}
+    <button class="ui right floated inverted positive button" type="submit" value="Submit"><i class="save icon"></i>Save</button>
+  </form>
+
+
   {% csrf_token %}
   {{ form.non_field_errors }}
   {% if error_message %}<p><strong>{{ error_message }}</strong></p>{% endif %}
@@ -66,8 +112,55 @@
     </div>
   </div>
   {{ hostformset.management_form }}
-  {% for form in hostformset %}
-    {% render_form form %}
+  {% for hostform in hostformset %}
+    {{ hostform.non_field_errors }}
+    {% for field in hostform.hidden_fields %}{{ field }}{% endfor %}
+    <div class="four fields">
+      <div class="required field{% if hostform.address.errors %} error{% endif %}">
+        <label for="{{ hostform.address.id_for_label }}">{{ hostform.address.label|safe }}</label>
+        {{ hostform.address }}
+        {% if hostform.address.errors %}
+          <div class="ui inverted red message">
+            {{ hostform.address.errors }}
+          </div>
+        {% endif %}
+      </div>
+      <div class="required field{% if hostform.port.errors %} error{% endif %}">
+        <label for="{{ hostform.port.id_for_label }}">{{ hostform.port.label|safe }}</label>
+        {{ hostform.port }}
+        {% if hostform.port.errors %}
+          <div class="ui inverted red message">
+            {{ hostform.port.errors }}
+          </div>
+        {% endif %}
+      </div>
+      <div class="field{% if hostform.ssl.errors %} error{% endif %}">
+        <div class="ui inverted toggle checkbox">
+          {{ hostform.ssl }}
+          <label for="{{ hostform.ssl.id_for_label }}">{{ hostform.ssl.label|safe }}</label>
+          {% if hostform.port.errors %}
+            <div class="ui inverted red message">
+              {{ hostform.port.errors }}
+            </div>
+          {% endif %}
+        </div>
+      </div>
+      <div class="field">
+        <div class="ui inverted checkbox">
+          {{ hostform.DELETE }}
+          {% if hostform.instance.pk %}
+            <label for="{{ hostform.DELETE.id_for_label }}">{{ hostform.DELETE.label }}</label>
+          {% else %}
+            <label for="{{ hostform.DELETE.id_for_label }}">Clear</label>
+          {% endif %}
+          {% if hostform.DELETE.errors %}
+            <div class="ui inverted red message">
+              {{ hostform.DELETE.errors }}
+            </div>
+          {% endif %}
+        </div>
+      </div>
+    </div>
   {% endfor %}
   <div class="four fields">
     <div class="required field{% if form.nickname.errors %} error{% endif %}">
@@ -144,7 +237,27 @@
   </div>
   {{ ownerformset.management_form }}
   {% for ownerform in ownerformset %}
-    {% render_form ownerform %}
+    {% for field in hostform.hidden_fields %}{{ field }}{% endfor %}
+    <div class="two fields">
+      <div class="field{% if ownerform.hostmask.errors %} error{% endif %}">
+        <label for="{{ ownerform.hostmask.id_for_label }}">{{ ownerform.hostmask.label|safe }}</label>
+        {{ ownerform.hostmask }}
+        {% if ownerform.hostmask.errors %}
+          <div class="ui inverted red message">
+            {{ ownerform.hostmask.errors }}
+          </div>
+        {% endif %}
+      </div>
+      <div class="field{% if ownerform.DELETE.errors %} error{% endif %}">
+        <label for="{{ ownerform.DELETE.id_for_label }}">{{ ownerform.DELETE.label|safe }}</label>
+        {{ ownerform.DELETE }}
+        {% if ownerform.DELETE.errors %}
+          <div class="ui inverted red message">
+            {{ ownerform.DELETE.errors }}
+          </div>
+        {% endif %}
+      </div>
+    </div>
   {% endfor %}
   <div class="ui inverted toggle checkbox{% if form.enabled.errors %} error{% endif %}">
     {{ form.enabled }}
@@ -157,4 +270,4 @@
   </div>
 
   <button class="ui right floated inverted positive button" type="submit" value="Submit"><i class="save icon"></i>Save</button>
-  </form>
+</form>

+ 3 - 2
website/rotbot/views/network.py

@@ -108,13 +108,12 @@ def network(request, network_slug):
 @permission_required('rotbot.change_network', raise_exception=True)
 def edit_network(request, network_slug):
     network = get_object_or_404(Network, slug=network_slug)
-    title = network.name
     HostFormSet = inlineformset_factory(Network, Host, form=HostForm)
     OwnerFormSet = inlineformset_factory(Network, Owner, form=OwnerForm)
     if request.method == 'POST':
         form = NetworkForm(request.POST, instance=network)
         hostformset = HostFormSet(request.POST, instance=network)
-        ownerformset = HostFormSet(request.POST, instance=network)
+        ownerformset = OwnerFormSet(request.POST, instance=network)
         if form.is_valid() and hostformset.is_valid() and ownerformset.is_valid():
             form.save()
             hostformset.save()
@@ -124,6 +123,8 @@ def edit_network(request, network_slug):
         form = NetworkForm(instance=network)
         hostformset = HostFormSet(instance=network)
         ownerformset = OwnerFormSet(instance=network)
+
+    title = network.name
     context = {
         'parent_title': 'Networks',
         'parent_url': reverse('rotbot:networks'),