SHARE
TWEET

Untitled

a guest Oct 4th, 2017 112 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. # -*- coding: utf-8 -*-
  2. from django.db import models
  3.  
  4. from datetime import datetime
  5.  
  6. import socket,time, math
  7.  
  8. from vas.supervisor.customer import consts
  9.  
  10. from django.db import connection
  11.  
  12.  
  13. #__ext_errors = None
  14.  
  15. __errcodes = { -1:u'Невідомо',
  16.                 0:u'OK',
  17.                 1:u'Внутрішня помилка черги',
  18.                 2:u'Помилка при відправленні',
  19.                 3:u'Неможливо відправити SMS',
  20.                 4:u'Маршрут відсутній',
  21.                 5:u'Таймаут',
  22.                 6:u'Чекає',
  23.                 7:u'Чекає повторної відправки',
  24.                 8:u'Знищено',
  25.                 9:u'Неможливо доставити вчасно',
  26.                10:u'Внутрішня помилка біллінгу',
  27.                11:u'DR для невідомого SMS',
  28.                12:u'Невірний агент',
  29.               100:u'Чекає',
  30.               101:u'Зчитується з черги',
  31.               102:u'Заплановано для доставки'}
  32.              
  33. __drstates = {  -2 : u'',
  34.                 -1 : u'n/a',
  35.                  0 : u'n/a',
  36.                 48 : u'Доставлено',
  37.                 49 : u'Не доставлено',
  38.                 50 : u'Невідомий статус',
  39.                 51 : u'Вийшов час',
  40.                 52 : u'Немає відповіді',
  41.                 53 : u'Відмінено',
  42.                 54 : u'Видалено',
  43.                 55 : u'Буферизовано',
  44.                 56 : u'Підтверджено користувачем',
  45.                 57 : u'Неможливо доставити',
  46.                 58 : u'Неможливо доставити',
  47.                 59 : u'Передано оператору',
  48.                 60 : u'Відмовлено оператором' }
  49.  
  50. __ext_errors = {  -1 : u'n/a',
  51.                    0 : u'n/a',
  52.                    1 : u'Невідомий абонент',
  53.                    5 : u'Невідомий абонент',
  54.                    6 : u'Абонент відсутній',
  55.                    7 : u'Несумісне обладнання',
  56.                    8 : u'Абонент відсутній',
  57.                    9 : u'Невідомий абонент',
  58.                   10 : u'Сервіс заблоковано',
  59.                   11 : u'Сервіс заблоковано',
  60.                   12 : u'Несумісне обладнання',
  61.                   13 : u'Сервіс заблоковано',
  62.                   27 : u'Абонент відсутній',
  63.                   28 : u'Несумісне обладнання',
  64.                   31 : u'Абонент зайнятий для SMS',
  65.                   32 : u'Помилка доставки SMS',
  66.                   42 : u'Абонент відсутній', # насправді - ні
  67.                   43 : u'Невідома помилка',
  68.                   45 : u'Абонент зайнятий для SMS',
  69.                 1029 : u'Абонент відсутній',
  70.                 4367 : u'Сервіс заблоковано',
  71.                 1041 : u'Помилковий статус',
  72.                 1042 : u'Абонент відсутній',
  73.                 1043 : u'Сервіс заблоковано',
  74.                 1044 : u'Несумісне обладнання',
  75.                 8219 : u'Абонент відсутній',
  76.                 4124 : u'Несумісне обладнання'
  77.                 }
  78.  
  79. def ext_errors(id):
  80.     global __ext_errors
  81.     if __ext_errors == None:
  82.         __ext_errors = {}
  83.         ee = ExtError.objects.all()
  84.         for err in ee:
  85.             __ext_errors[err.id] = (err.desc, err.customer_desc)
  86.     if id in __ext_errors:
  87.         return __ext_errors[id]
  88.     else:
  89.         return None
  90.  
  91. class User(models.Model):
  92.     name = models.CharField(max_length = 100)
  93.     login = models.CharField(max_length = 20)
  94.     password = models.CharField(max_length = 20)
  95.     enabled = models.BooleanField()
  96.     minick_account = models.IntegerField()
  97.    
  98.     def __str__(self):
  99.         return self.name
  100.      
  101.     class Meta:
  102.         db_table = 'users'
  103.  
  104. class UserSetting(models.Model):
  105.     user = models.ForeignKey(User, db_column = 'id_user')
  106.     name = models.CharField(max_length = 20)
  107.     value = models.CharField(max_length = 50, db_column = 'val')
  108.    
  109.     def __str__(self):
  110.         return self.user.name + "." + self.name
  111.    
  112.     def apply_settings(self, user, new_settings):
  113.         # clear all settings
  114.         UserSetting.objects.filter(user = user).delete()
  115.         for key in new_settings.keys():
  116.             us = UserSetting()
  117.             us.user = user
  118.             us.name = key
  119.             us.value = new_settings[key]
  120.             us.save()
  121.         return None
  122.    
  123.     def modify_setting(self, user, name, value):
  124.         UserSetting.objects.filter(user = user, name = name).delete()
  125.         us = UserSetting()
  126.         us.user = user
  127.         us.name = name
  128.         us.value = value
  129.         us.save()
  130.    
  131.     class Meta:
  132.         db_table = 'user_settings'
  133.        
  134. class UserSettings:
  135.     def __init__(self, user):
  136.         self.user = user
  137.         self.params = {}
  138.         settings = UserSetting.objects.filter(user = self.user)
  139.         for option in settings:
  140.             self.params[option.name] = option.value
  141.            
  142.     def contains(self, key):
  143.         return key in self.params
  144.            
  145.     def get(self, key):
  146.         if key in self.params:
  147.             return self.params[key]
  148.         else:
  149.             return None
  150.        
  151.     def getd(self, key, default):
  152.         if key in self.params:
  153.             return self.params[key]
  154.         else:
  155.             return default
  156.        
  157.     def __str__(self):
  158.         return str(self.params)
  159.            
  160.    
  161. class MinickAccount(models.Model):
  162.     user = models.ForeignKey(User, db_column = 'user_id')
  163.     minick_account = models.IntegerField(db_column = 'minick_account_id')
  164.     account_type = models.IntegerField(choices = ((0, "Bulk"), (1, "Notifications")))
  165.     comment = models.CharField(max_length = 45)
  166.    
  167.     def apply_accounts(self, user, new_accounts):
  168.         # clear all settings
  169.         MinickAccount.objects.filter(user = user).delete()
  170.         for key in new_accounts.keys():
  171.             us = MinickAccount()
  172.             us.user = user
  173.             us.account_type = key
  174.             us.minick_account = new_accounts[key][0]
  175.             us.comment = new_accounts[key][1]
  176.             us.save()
  177.    
  178.     def __str__(self):
  179.         return self.comment  + " (" + self.user.name + " - " + str(self.minick_account) + ")"
  180.    
  181.     class Meta:
  182.         db_table = 'minick_accounts'
  183.        
  184. class Message:
  185.     pass
  186.        
  187. class Job(models.Model):
  188.     name = models.CharField(max_length = 100)
  189.     user = models.ForeignKey(User, db_column = 'id_user')
  190.     plan_start = models.DateTimeField(db_column = 'planned_start_date')
  191.     actual_start = models.DateTimeField(db_column = 'actual_start_date')
  192.     rate = models.FloatField()
  193.     run_from = models.TimeField()
  194.     run_till = models.TimeField()
  195.     finished = models.DateTimeField(db_column = 'finished_date')
  196.     status = models.IntegerField()
  197.     deadline = models.IntegerField(db_column = 'deadline_hrs')
  198.     paused = models.BooleanField()
  199.     sms_template = models.CharField(max_length = 320)
  200.     originator_ton = models.IntegerField()
  201.     originator_npi = models.IntegerField()
  202.     originator = models.CharField(max_length = 45)
  203.     separator = models.CharField(max_length = 3)
  204.     reset_counter = models.IntegerField()
  205.     last_msg_date = models.DateTimeField()
  206.     validity_period = models.IntegerField()
  207.     phone = models.CharField(max_length = 20)
  208.     user_deleted = models.IntegerField()
  209.     who_ch_st = models.IntegerField()
  210.     who_paused = models.IntegerField()
  211.     who_del = models.IntegerField()
  212.     is_push = 0  
  213.     num_file_name = models.CharField(max_length = 50)
  214.     is_exporting = models.DateTimeField()
  215.     export_ready = models.IntegerField()
  216.    
  217.     def txt_status(self):
  218.         if self.status <= 0:
  219.             return "Не завантажено"
  220.         elif self.status == 1:
  221.             return "Завантажено"
  222.         elif self.status == 2:
  223.             return "Оброблюється"
  224.         elif self.status == 3:
  225.             return "Чекає DR"
  226.         elif self.status == 4:
  227.             return "Завершено"
  228.         elif self.status == 5:
  229.             return "Експортовано"
  230.         else:
  231.             return "Дивно"
  232.        
  233.     def txt_status2(self):
  234.         if self.paused:
  235.             return "Пауза"
  236.         if self.status <= 0:
  237.             return "Не завантажено"
  238.         elif self.status == 1:
  239.             return "Завантажено"
  240.         elif self.status == 2:
  241.             return "Оброблюється"
  242.         elif self.status == 3:
  243.             return "Чекає DR"
  244.         elif self.status == 4:
  245.             return "Завершено"
  246.         elif self.status == 5:
  247.             return "Експортовано"
  248.         else:
  249.             return "Дивно"
  250.        
  251.    
  252.     def get_msg_count(self):
  253.         return Message.objects.filter(job = self).count()
  254.        
  255.     def calc_msg_additional(self):
  256.         self.sent_only = Message.objects.filter(job = self).filter(status__in = [2]).count()
  257.         self.sent_failed = Message.objects.filter(job = self).filter(status__in = [1,3]).count()
  258.        
  259.     def calculate_msg_count(self):      
  260.         messages = Message.objects.filter(job = self)
  261.         #messages = Message.objects.raw("SELECT * FROM messages WHERE id_job=" + self.id)
  262.         noc_in_msgs = 0
  263.         for message in messages:
  264.             if consts.noc in message.dest:
  265.                 noc_in_msgs += 1
  266.         self.msg_count = self.get_msg_count()
  267.         if self.msg_count != 0 and noc_in_msgs:
  268.             self.msg_count = self.msg_count-noc_in_msgs
  269.         self.unsent_count = Message.objects.filter(job = self).filter(status = 0).count()
  270.         self.sent_count = Message.objects.filter(job = self).filter(status__in = [1,2,3,4,5]).count()
  271.         if self.sent_count != 0 and noc_in_msgs:
  272.             self.sent_count = self.sent_count-noc_in_msgs
  273.         self.dlvr_count = Message.objects.filter(job = self).filter(status = 4).count()
  274.         if self.dlvr_count != 0 and noc_in_msgs:
  275.             self.dlvr_count = self.dlvr_count-noc_in_msgs
  276.         #self.udlvr_count = Message.objects.filter(job = self).filter(status = 5).count()
  277.         self.udlvr_count = self.sent_count - self.dlvr_count
  278.        
  279.     def calculate_msg_count2(self):
  280.         cursor = connection.cursor().cursor
  281.         sql = "SELECT status, COUNT(id) FROM messages WHERE id_job=" +\
  282.             str(self.id) + " AND dest!='" + consts.noc + "' GROUP BY status;"
  283.         cursor.execute(sql)
  284.         rows = cursor.fetchall()
  285.         result = {}
  286.         for row in rows:
  287.             result[int(row[0])] = int(row[1])
  288.         self.msg_count = result.get(0, 0) + result.get(1, 0) + result.get(2, 0) +\
  289.             result.get(3, 0) + result.get(4, 0) + result.get(5, 0)
  290.         self.unsent_count = result.get(0, 0)
  291.         self.sent_count = result.get(1, 0) + result.get(2, 0) + result.get(3, 0) +\
  292.             result.get(4, 0) + result.get(5, 0)
  293.         self.dlvr_count = result.get(4, 0)
  294.         self.udlvr_count = self.sent_count - self.dlvr_count
  295.        
  296.        
  297.     def get_operator_distribution(self):
  298.         from django.db import connection
  299.         query = connection.cursor()
  300.         query.execute('select count(id), nwc from messages where id_job = ' + str(self.id) + \
  301.                       ' group by 2')
  302.         rows = query.fetchall()
  303.         result = {}
  304.         for row in rows:
  305.             result[row[1]] = row[0]
  306.            
  307.         return result
  308.  
  309.     def calc_sms_quan(self):
  310.         text = self.sms_template
  311.         if '{' not in text :
  312.             text_len = len(text)
  313.             isUcsFlag = False
  314.             if (isUcs(text)):
  315.                 isUcsFlag = True
  316.             sms_quan = 1
  317.             if (not isUcsFlag):
  318.                 text_len += getExtGsm(text)
  319.             if (isUcsFlag):
  320.                 if (text_len < 71):
  321.                     sms_quan = 1
  322.                 else:
  323.                     sms_quan = math.ceil(text_len/67.0)
  324.             else:
  325.                 if (text_len < 161):
  326.                     sms_quan = 1
  327.                 else:
  328.                     sms_quan = math.ceil(text_len/153.0)  
  329.             return int(sms_quan)
  330.         else:
  331.             return ''
  332.    
  333.     def separator_idx(self):
  334.         return {"\t":1, ",":2, ";":3}[self.separator]
  335.    
  336.     def editable(self):
  337.         return self.status <= 0
  338.    
  339.     def __str__(self):
  340.         return self.name
  341.                
  342.     class Meta:
  343.         db_table = 'jobs'
  344.        
  345. class Message(models.Model):
  346.     extra_id = models.CharField(max_length = 30)
  347.     orig = models.CharField(max_length = 20)
  348.     dest = models.CharField(max_length = 20)
  349.     text = models.CharField(max_length = 320)
  350.     status = models.IntegerField()
  351.     time_in = models.DateTimeField()
  352.     time_sent = models.DateTimeField(null = True, blank = True)
  353.     time_dr = models.DateTimeField(null = True, blank = True)
  354.     job = models.ForeignKey(Job, db_column = 'id_job')
  355.     error = models.IntegerField()
  356.     attempts = models.IntegerField()
  357.     sequence_number = models.IntegerField()
  358.     message_id = models.CharField(max_length = 45)
  359.     time_scheduled = models.DateTimeField(null = True, blank = True)
  360.     nwc = models.IntegerField(null = True, blank = True)
  361.     ext_error = models.IntegerField(null = True, blank = True)
  362.     id_text = models.IntegerField(null = True, blank = True)
  363.    
  364.     __nwc = {
  365.              
  366.              '38050': 25501,
  367.              '38066': 25501,
  368.              '38095': 25501,
  369.              '38099': 25501,
  370.              
  371.              '38068': 25502,
  372.              
  373.              '38067': 25503,
  374.              '38096': 25503,
  375.              '38097': 25503,
  376.              '38098': 25503,
  377.              
  378.              '38039': 25504,
  379.              
  380.              '38063': 25506,
  381.              '38093': 25506,
  382.              
  383.              '38091': 25507,
  384.              
  385.              '38092': 25521,
  386.              
  387.              '38094': 25522
  388.              }
  389.    
  390.     def find_nwc(self):
  391.         prefix = self.dest[:5]
  392.         if prefix in self.__nwc:
  393.             self.nwc = self.__nwc[prefix]
  394.         else:
  395.             self.nwc = 0
  396.    
  397.     #def __init__(self):
  398.     def clear(self):
  399.         #models.Model.__init__(self)
  400.         self.error = 0
  401.         self.attempts = 0
  402.         self.status = 0
  403.         self.time_scheduled = None
  404.         self.nwc = 0
  405.         self.sequence_number = 0
  406.         self.message_id = ''
  407.    
  408.     def txt_status(self):
  409.         if self.status == 0:
  410.             return 'Не відправлено'
  411.         elif self.status == 1:
  412.             return 'Відправлено, без submit_sm_resp'
  413.         elif self.status == 2:
  414.             return 'Відправлено'
  415.         elif self.status == 3:
  416.             return 'Помилка відправлення'
  417.         elif self.status == 4:
  418.             return 'Доставлено'
  419.         elif self.status == 5:
  420.             #return 'Недоставлено (' + self.txt_error() + ')'
  421.             return 'Недоставлено'
  422.        
  423.     def txt_status2(self):
  424.         if self.status == 0 or self.status == 1:
  425.             return 'Не відправлено'
  426.         elif self.status == 2:
  427.             return 'Відправлено'
  428.         elif self.status == 3:
  429.             return 'Помилка відправлення'
  430.         elif self.status == 4:
  431.             return 'Доставлено'
  432.         elif self.status == 5:
  433.             #return 'Недоставлено (' + self.txt_error() + ')'
  434.             return 'Недоставлено'
  435.            
  436.     def txt_error(self):
  437.         if self.error == -10:
  438.             return 'Таймаут'
  439.         elif self.error == -11:
  440.             return 'Invalid message'
  441.         elif self.error == -19:
  442.             return 'Enroute'
  443.         elif self.error == -20:
  444.             return 'Expired'
  445.         elif self.error == -21:
  446.             return 'Deleted'
  447.         elif self.error == -22:
  448.             return 'Undeliverable'
  449.         elif self.error == -23:
  450.             return 'Accepted'
  451.         elif self.error == -24:
  452.             return 'Unknown'
  453.         elif self.error == -25:
  454.             return 'Rejected'
  455.         else:
  456.             return 'Unknown (' + str(self.error) + ')'
  457.  
  458.     def txt_error2(self):
  459.         if self.error == -11 or self.ext_error == -11:
  460.             return 'Невірне повідомлення'
  461.         elif self.error == -19 or self.ext_error == -19:
  462.             return 'Доставляється'
  463.         elif self.error == -20 or self.ext_error == -20:
  464.             return 'Час вийшов'
  465.         elif self.error == -21 or self.ext_error == -21:
  466.             return 'Видалено'
  467.         elif self.error == -22 or self.ext_error == -22:
  468.             return 'Неможливо доставити'
  469.         elif self.error == -23 or self.ext_error == -23:
  470.             return 'Прийнято'
  471.         elif self.error == -24 or self.ext_error == -24:
  472.             return 'Невідомо'
  473.         elif self.error == -25 or self.ext_error == -25:
  474.             return 'Відкинуто'
  475.         elif self.error == 0:
  476.             return ''
  477.         elif self.error == -10:
  478.             return 'Внутрішня помилка'
  479.         elif self.error == 53:
  480.             return 'Відмінено'
  481.         else:
  482.             return 'Невідомо (' + str(self.error) + ')'
  483.        
  484.     def customer_ext_error(self):
  485.         s = ext_errors(self.ext_error)
  486.         if self.status == 2:
  487.             return u'Чекає DR'
  488.         elif self.status == 4:
  489.             return u'Доставлено'
  490.         elif self.status == 3 or self.status == 5:
  491.             return u'Недоставлено'
  492.         elif s:
  493.             return s;
  494.         else:
  495.             return u''
  496.         #elif self.error == -20:
  497.         #    return u'Абонент відсутній'
  498.         #if s == None:
  499.         #    return u'Невідомо'
  500.         #else:
  501.         #    return s
  502.        
  503.     def compiled_text_simple(self):
  504.         if self.job.sms_template != '':
  505.             msg = self.job.sms_template
  506.             if self.text != None and self.text != '':
  507.                 msg = msg + ' (' + self.text + ')'
  508.             return msg
  509.         else:
  510.             return self.text
  511.        
  512.     def compiled_text(self):
  513.         if self.job.sms_template != '':
  514.             msg = self.job.sms_template
  515.             if self.text != None and self.text != '':
  516.                 params = self.text.split(self.job.separator)
  517.                 for i in range(len(params)):
  518.                     msg = msg.replace('{' + str(i) + '}', params[i])
  519.             return msg
  520.         else:
  521.             return self.text
  522.    
  523.     def calc_sms_quan(self):
  524.         text = self.compiled_text()
  525.         text_len = len(text)
  526.         isUcsFlag = False
  527.         if (isUcs(text)):
  528.             isUcsFlag = True
  529.         sms_quan = 1
  530.         if (not isUcsFlag):
  531.             text_len += getExtGsm(text)
  532.         if (isUcsFlag):
  533.             if (text_len < 71):
  534.                 sms_quan = 1
  535.             else:
  536.                 sms_quan = math.ceil(text_len/67.0)
  537.         else:
  538.             if (text_len < 161):
  539.                 sms_quan = 1
  540.             else:
  541.                 sms_quan = math.ceil(text_len/153.0)  
  542.         return int(sms_quan)
  543.        
  544.        
  545.     def __str__(self):
  546.         return self.orig + '>' + self.dest
  547.            
  548.     class Meta:
  549.         db_table = 'messages'
  550.  
  551. def getExtGsm(text):
  552.     q = 0
  553.     for i in text:
  554.         for j in consts.extGsm:
  555.             if i == j:
  556.                 q += 1
  557.     return q
  558.  
  559. def getExtGsmChar(char):
  560.     if char in consts.extGsm:
  561.         return True
  562.     else:
  563.         return False
  564.    
  565. def isUcs(text):
  566.     try:
  567.         y = text.encode('latin1')
  568.         return False
  569.     except Exception:
  570.         return True
  571.    
  572. class ParameterDef(models.Model):
  573.     param_name = models.CharField(max_length = 45)
  574.     description = models.CharField(max_length = 145)
  575.     mandatory = models.BooleanField()
  576.     allowed_values = models.CharField(max_length = 75)
  577.      
  578.     value = ''
  579.      
  580.     class Meta:
  581.         db_table = 'parameters'
  582.  
  583. class AccountType(models.Model):
  584.     act_type = models.IntegerField()
  585.     description = models.CharField(max_length = 50)
  586.    
  587.     value = ''
  588.     com_value = ''
  589.    
  590.     class Meta:
  591.         db_table = 'account_types'
  592.  
  593. class Logging(models.Model):
  594.     from django.contrib.auth.models import User
  595.  
  596.     action = models.CharField(max_length = 90)
  597.     action_time = models.DateTimeField(default = datetime.now())
  598.     user = models.ForeignKey(User)
  599.    
  600. def log_action(user, info):
  601.     log = Logging(action = info, user = user)
  602.     log.save()      
  603.    
  604. class Operator(models.Model):
  605.     nwc = models.IntegerField(primary_key = True)
  606.     operator = models.CharField(max_length = 45, db_column='opname')
  607.     active = models.BooleanField()
  608.    
  609.     class Meta:
  610.         db_table = 'nwc'
  611.        
  612. class ExtError(models.Model):
  613.     ext_error_val = models.IntegerField()
  614.     desc = models.CharField(max_length = 45, db_column = 'ext_error_desc')
  615.     customer_desc = models.CharField(max_length = 45)
  616.    
  617.     class Meta:
  618.         db_table = 'ext_error'
  619.  
  620. class Script(models.Model):
  621.     name = models.CharField(max_length = 50)
  622.     ctrl_server = models.CharField(max_length = 20)
  623.     ctrl_port = models.IntegerField()
  624.     script_server = models.CharField(max_length = 20)
  625.     script_port = models.IntegerField()
  626.     script_path = models.CharField(max_length = 150)
  627.    
  628.     WEIRD_STATE = -1
  629.     NOT_STARTED = 0
  630.     RUNNING = 1
  631.    
  632.     status = "N/A"
  633.     istatus = WEIRD_STATE
  634.     connected = False
  635.    
  636.     def send_command(self, command, wait = 0.1):
  637.         print "Sending ", command
  638.         self.socket.send(command + "\n")
  639.         print "Receiving"
  640.         try:
  641.             time.sleep(wait)
  642.             result = self.socket.recv(1024).strip()
  643.             print "Received: ", result
  644.             return result
  645.         except Exception,ex:
  646.             print "error", ex
  647.            
  648.     def parse_status(self, status):
  649.         st = status.lower()
  650.         if status == "n/a":
  651.             return self.WEIRD_STATE
  652.         elif status == "not started":
  653.             return self.NOT_STARTED
  654.         elif status == "stopped":
  655.             return self.WEIRD_STATE
  656.         elif status == "sleeping" or status == "running":
  657.             return self.RUNNING
  658.         else:
  659.             return self.WEIRD_STATE
  660.    
  661.     def init_connection(self):
  662.         self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  663.         try:
  664.             self.socket.connect((self.ctrl_server, self.ctrl_port))
  665.             #self.socket.settimeout(15)
  666.             self.socket.setblocking(1)
  667.             result = self.send_command(":service " + str(self.id))
  668.             if result == "OK":
  669.                 result = self.send_command(":connect")
  670.                 if result.strip() == "OK":
  671.                     self.connected = True
  672.                     self.status = "N/A"
  673.                 else:
  674.                     print "Cannot connect, possible not started"
  675.                     self.connected = False;
  676.                     self.status = "not started"
  677.                 self.istatus = self.parse_status(self.status)
  678.         except Exception, err:
  679.             print "Failure: ", err
  680.             self.connected = False
  681.             self.socket = None
  682.             self.status = 'N/A'
  683.             self.istatus = self.WEIRD_STATE
  684.         print "status: ", self.status, "istatus: ", self.istatus
  685.            
  686.     def get_status(self):
  687.         self.init_connection()
  688.         self.check_status()
  689.         self.close_connection()
  690.         return self.status
  691.            
  692.     def check_status(self):
  693.         if self.connected:
  694.             self.status = self.send_command("status", 0.5)
  695.         else:
  696.             self.status = "N/A"
  697.         print "Recieved script status: ", self.status
  698.         self.istatus = self.parse_status(self.status)
  699.                
  700.     def close_connection(self):
  701.         if self.socket != None:
  702.             try:
  703.                 self.send_command(":quit")
  704.             except:
  705.                 print "Cannot close"
  706.                
  707.     def start(self):
  708.         if self.connected:
  709.             self.send_command(":start", 20)
  710.        
  711.     def stop(self):
  712.         if self.connected:
  713.             self.send_command("shutdown", 0.5)
  714.            
  715.     def restart(self):
  716.         if self.connected:
  717.             self.send_command("restart", 0.5)
  718.            
  719. class BlackList(models.Model):
  720.     user = models.ForeignKey(User, db_column = 'id_user')
  721.     alphaname = models.CharField(max_length = 20, db_column = 'alphaname')
  722.     list = models.CharField(max_length = 10000, db_column = 'list')
  723.    
  724.     def aply_new_list(self, list_dict):
  725.         list = ''
  726.         for item in list_dict:
  727.             list += item + ";"
  728.         list = list[:-2]
  729.         print list
  730.        
  731.    
  732.     #def __str__(self):
  733.         #return self.user.name + "." + self.name
  734.    
  735.     class Meta:
  736.         db_table = 'black_list'
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top