Browse Source

Auto reformat code

devel
bashmak 8 years ago
parent
commit
7c29eca01e
  1. 1
      abonapp/admin.py
  2. 1
      abonapp/forms.py
  3. 74
      abonapp/migrations/0001_initial.py
  4. 5
      abonapp/models.py
  5. 2
      abonapp/pay_systems.py
  6. 1
      accounts_app/admin.py
  7. 1
      accounts_app/forms.py
  8. 27
      accounts_app/migrations/0001_initial.py
  9. 2
      accounts_app/models.py
  10. 2
      accounts_app/templatetags/acc_tags.py
  11. 1
      accounts_app/urls.py
  12. 1
      agent/__init__.py
  13. 1
      agent/monitoring_agent.py
  14. 1
      agent/netflow/netflow_handler.py
  15. 3
      agent/structs.py
  16. 11
      chatbot/migrations/0001_initial.py
  17. 1
      chatbot/models.py
  18. 6
      chatbot/telebot.py
  19. 2
      clientsideapp/models.py
  20. 2
      clientsideapp/urls.py
  21. 1
      devapp/admin.py
  22. 2
      devapp/apps.py
  23. 9
      devapp/base_intr.py
  24. 27
      devapp/migrations/0001_initial.py
  25. 1
      devapp/tests.py
  26. 1
      dhcp_lever.py
  27. 3
      dialing.py
  28. 9
      dialing_app/migrations/0001_initial.py
  29. 2
      dialing_app/urls.py
  30. 1
      djing/__init__.py
  31. 1
      djing/fields.py
  32. 1
      djing/formfields.py
  33. 4
      djing/global_base_views.py
  34. 6
      djing/settings.py
  35. 1
      group_app/migrations/0001_initial.py
  36. 4
      mapapp/migrations/0001_initial.py
  37. 2
      mapapp/templates/maps/dot.html
  38. 2
      mapapp/urls.py
  39. 1
      messaging/sms/base.py
  40. 1
      messaging/sms/deliver.py
  41. 1
      messaging/sms/gsm0338.py
  42. 1
      messaging/sms/pdu.py
  43. 3
      messaging/sms/udh.py
  44. 8
      migrate_to_0.2.py
  45. 1
      msg_app/admin.py
  46. 9
      msg_app/forms.py
  47. 33
      msg_app/migrations/0001_initial.py
  48. 4
      msg_app/models.py
  49. 2
      msg_app/urls.py
  50. 1
      photo_app/admin.py
  51. 1
      photo_app/migrations/0001_initial.py
  52. 1
      photo_app/urls.py
  53. 4
      queue_mngr.py
  54. 2
      searchapp/apps.py
  55. 2
      searchapp/models.py
  56. 1
      searchapp/urls.py
  57. 1
      statistics/fields.py
  58. 4
      statistics/migrations/0001_initial.py
  59. 4
      statistics/models.py
  60. 2
      statistics/urls.py
  61. 2
      systemd_units/webdav_backup.py
  62. 1
      tariff_app/admin.py
  63. 9
      tariff_app/migrations/0001_initial.py
  64. 1
      tariff_app/models.py
  65. 1
      taskapp/admin.py
  66. 1
      taskapp/forms.py
  67. 44
      taskapp/migrations/0001_initial.py
  68. 7
      taskapp/models.py
  69. 5
      taskapp/urls.py

1
abonapp/admin.py

@ -2,7 +2,6 @@ from django.contrib import admin
from . import models from . import models
admin.site.register(models.Abon) admin.site.register(models.Abon)
admin.site.register(models.InvoiceForPayment) admin.site.register(models.InvoiceForPayment)
admin.site.register(models.AbonLog) admin.site.register(models.AbonLog)

1
abonapp/forms.py

@ -8,7 +8,6 @@ from string import digits, ascii_lowercase
from . import models from . import models
from django.conf import settings from django.conf import settings
TELEPHONE_REGEXP = getattr(settings, 'TELEPHONE_REGEXP', r'^\+[7,8,9,3]\d{10,11}$') TELEPHONE_REGEXP = getattr(settings, 'TELEPHONE_REGEXP', r'^\+[7,8,9,3]\d{10,11}$')

74
abonapp/migrations/0001_initial.py

@ -12,7 +12,6 @@ import re
class Migration(migrations.Migration): class Migration(migrations.Migration):
initial = True initial = True
dependencies = [ dependencies = [
@ -27,20 +26,26 @@ class Migration(migrations.Migration):
migrations.CreateModel( migrations.CreateModel(
name='Abon', name='Abon',
fields=[ fields=[
('baseaccount_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='accounts_app.BaseAccount')),
('baseaccount_ptr',
models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True,
primary_key=True, serialize=False, to='accounts_app.BaseAccount')),
('ballance', models.FloatField(default=0.0)), ('ballance', models.FloatField(default=0.0)),
('ip_address', mydefs.MyGenericIPAddressField(blank=True, max_length=8, null=True, protocol='ipv4')), ('ip_address', mydefs.MyGenericIPAddressField(blank=True, max_length=8, null=True, protocol='ipv4')),
('description', models.TextField(blank=True, null=True, verbose_name='Comment')), ('description', models.TextField(blank=True, null=True, verbose_name='Comment')),
('house', models.CharField(blank=True, max_length=12, null=True, verbose_name='House')), ('house', models.CharField(blank=True, max_length=12, null=True, verbose_name='House')),
('is_dynamic_ip', models.BooleanField(default=False)), ('is_dynamic_ip', models.BooleanField(default=False)),
('markers', bitfield.models.BitField((('icon_donkey', 'Donkey'), ('icon_fire', 'Fire'), ('icon_ok', 'Ok'), ('icon_king', 'King'), ('icon_tv', 'TV'), ('icon_smile', 'Smile'), ('icon_dollar', 'Dollar'), ('icon_service', 'Service'), ('icon_mrk', 'Marker')), default=0)),
('markers', bitfield.models.BitField((('icon_donkey', 'Donkey'), ('icon_fire', 'Fire'),
('icon_ok', 'Ok'), ('icon_king', 'King'), ('icon_tv', 'TV'),
('icon_smile', 'Smile'), ('icon_dollar', 'Dollar'),
('icon_service', 'Service'), ('icon_mrk', 'Marker')), default=0)),
], ],
options={ options={
'verbose_name': 'Abon', 'verbose_name': 'Abon',
'verbose_name_plural': 'Abons', 'verbose_name_plural': 'Abons',
'db_table': 'abonent', 'db_table': 'abonent',
'ordering': ['fio'], 'ordering': ['fio'],
'permissions': (('can_buy_tariff', 'Buy service perm'), ('can_view_passport', 'Can view passport'), ('can_add_ballance', 'fill account'), ('can_ping', 'Can ping')),
'permissions': (('can_buy_tariff', 'Buy service perm'), ('can_view_passport', 'Can view passport'),
('can_add_ballance', 'fill account'), ('can_ping', 'Can ping')),
}, },
bases=('accounts_app.baseaccount',), bases=('accounts_app.baseaccount',),
), ),
@ -78,7 +83,8 @@ class Migration(migrations.Migration):
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('time_start', models.DateTimeField(blank=True, default=None, null=True)), ('time_start', models.DateTimeField(blank=True, default=None, null=True)),
('deadline', models.DateTimeField(blank=True, default=None, null=True)), ('deadline', models.DateTimeField(blank=True, default=None, null=True)),
('tariff', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='linkto_tariff', to='tariff_app.Tariff')),
('tariff', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='linkto_tariff',
to='tariff_app.Tariff')),
], ],
options={ options={
'verbose_name': 'Abon service', 'verbose_name': 'Abon service',
@ -92,7 +98,8 @@ class Migration(migrations.Migration):
name='AdditionalTelephone', name='AdditionalTelephone',
fields=[ fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('telephone', models.CharField(max_length=16, validators=[django.core.validators.RegexValidator('^\\+[7,8,9,3]\\d{10,11}$')], verbose_name='Telephone')),
('telephone', models.CharField(max_length=16, validators=[
django.core.validators.RegexValidator('^\\+[7,8,9,3]\\d{10,11}$')], verbose_name='Telephone')),
('owner_name', models.CharField(max_length=127)), ('owner_name', models.CharField(max_length=127)),
], ],
options={ options={
@ -122,7 +129,8 @@ class Migration(migrations.Migration):
('pay_id', models.CharField(max_length=36, primary_key=True, serialize=False, unique=True)), ('pay_id', models.CharField(max_length=36, primary_key=True, serialize=False, unique=True)),
('date_add', models.DateTimeField(auto_now_add=True)), ('date_add', models.DateTimeField(auto_now_add=True)),
('summ', models.FloatField(default=0.0)), ('summ', models.FloatField(default=0.0)),
('trade_point', models.CharField(blank=True, default=None, max_length=20, null=True, verbose_name='Trade point')),
('trade_point',
models.CharField(blank=True, default=None, max_length=20, null=True, verbose_name='Trade point')),
('receipt_num', models.BigIntegerField(default=0, verbose_name='Receipt number')), ('receipt_num', models.BigIntegerField(default=0, verbose_name='Receipt number')),
], ],
options={ options={
@ -135,7 +143,9 @@ class Migration(migrations.Migration):
fields=[ fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('title', models.CharField(default='no title', max_length=16)), ('title', models.CharField(default='no title', max_length=16)),
('field_type', models.CharField(choices=[('int', 'Digital field'), ('str', 'Text field'), ('dbl', 'Floating field'), ('ipa', 'Ip Address')], default='str', max_length=3)),
('field_type', models.CharField(
choices=[('int', 'Digital field'), ('str', 'Text field'), ('dbl', 'Floating field'),
('ipa', 'Ip Address')], default='str', max_length=3)),
('data', models.CharField(blank=True, max_length=64, null=True)), ('data', models.CharField(blank=True, max_length=64, null=True)),
], ],
options={ options={
@ -164,8 +174,12 @@ class Migration(migrations.Migration):
name='PassportInfo', name='PassportInfo',
fields=[ fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('series', models.CharField(max_length=4, validators=[django.core.validators.RegexValidator(re.compile('^-?\\d+\\Z', 32), code='invalid', message='Enter a valid integer.')])),
('number', models.CharField(max_length=6, validators=[django.core.validators.RegexValidator(re.compile('^-?\\d+\\Z', 32), code='invalid', message='Enter a valid integer.')])),
('series', models.CharField(max_length=4, validators=[
django.core.validators.RegexValidator(re.compile('^-?\\d+\\Z', 32), code='invalid',
message='Enter a valid integer.')])),
('number', models.CharField(max_length=6, validators=[
django.core.validators.RegexValidator(re.compile('^-?\\d+\\Z', 32), code='invalid',
message='Enter a valid integer.')])),
('distributor', models.CharField(max_length=64)), ('distributor', models.CharField(max_length=64)),
('date_of_acceptance', models.DateField()), ('date_of_acceptance', models.DateField()),
], ],
@ -189,7 +203,9 @@ class Migration(migrations.Migration):
migrations.CreateModel( migrations.CreateModel(
name='AbonRawPassword', name='AbonRawPassword',
fields=[ fields=[
('account', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, primary_key=True, serialize=False, to='abonapp.Abon')),
('account',
models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, primary_key=True, serialize=False,
to='abonapp.Abon')),
('passw_text', models.CharField(max_length=64)), ('passw_text', models.CharField(max_length=64)),
], ],
options={ options={
@ -199,17 +215,20 @@ class Migration(migrations.Migration):
migrations.AddField( migrations.AddField(
model_name='periodicpayforid', model_name='periodicpayforid',
name='account', name='account',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='abonapp.Abon', verbose_name='Account'),
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='abonapp.Abon',
verbose_name='Account'),
), ),
migrations.AddField( migrations.AddField(
model_name='periodicpayforid', model_name='periodicpayforid',
name='periodic_pay', name='periodic_pay',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='tariff_app.PeriodicPay', verbose_name='Periodic pay'),
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='tariff_app.PeriodicPay',
verbose_name='Periodic pay'),
), ),
migrations.AddField( migrations.AddField(
model_name='passportinfo', model_name='passportinfo',
name='abon', name='abon',
field=models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='abonapp.Abon'),
field=models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL,
to='abonapp.Abon'),
), ),
migrations.AddField( migrations.AddField(
model_name='invoiceforpayment', model_name='invoiceforpayment',
@ -219,17 +238,20 @@ class Migration(migrations.Migration):
migrations.AddField( migrations.AddField(
model_name='invoiceforpayment', model_name='invoiceforpayment',
name='author', name='author',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL),
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL,
related_name='+', to=settings.AUTH_USER_MODEL),
), ),
migrations.AddField( migrations.AddField(
model_name='alltimepaylog', model_name='alltimepaylog',
name='abon', name='abon',
field=models.ForeignKey(blank=True, default=None, null=True, on_delete=django.db.models.deletion.SET_DEFAULT, to='abonapp.Abon'),
field=models.ForeignKey(blank=True, default=None, null=True,
on_delete=django.db.models.deletion.SET_DEFAULT, to='abonapp.Abon'),
), ),
migrations.AddField( migrations.AddField(
model_name='additionaltelephone', model_name='additionaltelephone',
name='abon', name='abon',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='additional_telephones', to='abonapp.Abon'),
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='additional_telephones',
to='abonapp.Abon'),
), ),
migrations.AddField( migrations.AddField(
model_name='abonlog', model_name='abonlog',
@ -239,22 +261,26 @@ class Migration(migrations.Migration):
migrations.AddField( migrations.AddField(
model_name='abonlog', model_name='abonlog',
name='author', name='author',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='+', to=settings.AUTH_USER_MODEL),
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE,
related_name='+', to=settings.AUTH_USER_MODEL),
), ),
migrations.AddField( migrations.AddField(
model_name='abon', model_name='abon',
name='current_tariff', name='current_tariff',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='abonapp.AbonTariff'),
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL,
to='abonapp.AbonTariff'),
), ),
migrations.AddField( migrations.AddField(
model_name='abon', model_name='abon',
name='dev_port', name='dev_port',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='devapp.Port'),
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL,
to='devapp.Port'),
), ),
migrations.AddField( migrations.AddField(
model_name='abon', model_name='abon',
name='device', name='device',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='devapp.Device'),
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL,
to='devapp.Device'),
), ),
migrations.AddField( migrations.AddField(
model_name='abon', model_name='abon',
@ -264,11 +290,13 @@ class Migration(migrations.Migration):
migrations.AddField( migrations.AddField(
model_name='abon', model_name='abon',
name='group', name='group',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='group_app.Group', verbose_name='User group'),
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL,
to='group_app.Group', verbose_name='User group'),
), ),
migrations.AddField( migrations.AddField(
model_name='abon', model_name='abon',
name='street', name='street',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='abonapp.AbonStreet', verbose_name='Street'),
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL,
to='abonapp.AbonStreet', verbose_name='Street'),
), ),
] ]

5
abonapp/models.py

@ -19,7 +19,6 @@ from djing import IP_ADDR_REGEX
from tariff_app.models import Tariff, PeriodicPay from tariff_app.models import Tariff, PeriodicPay
from bitfield import BitField from bitfield import BitField
TELEPHONE_REGEXP = getattr(settings, 'TELEPHONE_REGEXP', r'^\+[7,8,9,3]\d{10,11}$') TELEPHONE_REGEXP = getattr(settings, 'TELEPHONE_REGEXP', r'^\+[7,8,9,3]\d{10,11}$')
@ -129,7 +128,6 @@ class ExtraFieldsModel(models.Model):
class AbonManager(MyUserManager): class AbonManager(MyUserManager):
def get_queryset(self): def get_queryset(self):
return super(MyUserManager, self).get_queryset().filter(is_admin=False) return super(MyUserManager, self).get_queryset().filter(is_admin=False)
@ -273,7 +271,8 @@ class Abon(BaseAccount):
def save(self, *args, **kwargs): def save(self, *args, **kwargs):
# check if ip address already busy # check if ip address already busy
if self.ip_address is not None and Abon.objects.filter(ip_address=self.ip_address).exclude(pk=self.pk).count() > 0:
if self.ip_address is not None and Abon.objects.filter(ip_address=self.ip_address).exclude(
pk=self.pk).count() > 0:
self.is_bad_ip = True self.is_bad_ip = True
raise LogicError(_('Ip address already exist')) raise LogicError(_('Ip address already exist'))
super(Abon, self).save(*args, **kwargs) super(Abon, self).save(*args, **kwargs)

2
abonapp/pay_systems.py

@ -5,13 +5,11 @@ from .models import Abon, AllTimePayLog
from django.db import DatabaseError from django.db import DatabaseError
from django.conf import settings from django.conf import settings
SECRET = getattr(settings, 'PAY_SECRET') SECRET = getattr(settings, 'PAY_SECRET')
SERV_ID = getattr(settings, 'PAY_SERV_ID') SERV_ID = getattr(settings, 'PAY_SERV_ID')
def allpay(request): def allpay(request):
def bad_ret(err_id, err_description=None): def bad_ret(err_id, err_description=None):
current_date = timezone.now() current_date = timezone.now()
res = [ res = [

1
accounts_app/admin.py

@ -2,5 +2,4 @@ from django.contrib import admin
from .models import UserProfile from .models import UserProfile
admin.site.register(UserProfile) admin.site.register(UserProfile)

1
accounts_app/forms.py

@ -4,7 +4,6 @@ from guardian.shortcuts import assign_perm, remove_perm
class MyUserObjectPermissionsForm(UserObjectPermissionsForm): class MyUserObjectPermissionsForm(UserObjectPermissionsForm):
def save_obj_perms(self): def save_obj_perms(self):
""" """
Saves selected object permissions by creating new ones and removing Saves selected object permissions by creating new ones and removing

27
accounts_app/migrations/0001_initial.py

@ -8,7 +8,6 @@ import django.db.models.deletion
class Migration(migrations.Migration): class Migration(migrations.Migration):
initial = True initial = True
dependencies = [ dependencies = [
@ -24,13 +23,16 @@ class Migration(migrations.Migration):
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('password', models.CharField(max_length=128, verbose_name='password')), ('password', models.CharField(max_length=128, verbose_name='password')),
('last_login', models.DateTimeField(blank=True, null=True, verbose_name='last login')), ('last_login', models.DateTimeField(blank=True, null=True, verbose_name='last login')),
('is_superuser', models.BooleanField(default=False, help_text='Designates that this user has all permissions without explicitly assigning them.', verbose_name='superuser status')),
('is_superuser', models.BooleanField(default=False,
help_text='Designates that this user has all permissions without explicitly assigning them.',
verbose_name='superuser status')),
('username', models.CharField(max_length=127, unique=True, verbose_name='profile username')), ('username', models.CharField(max_length=127, unique=True, verbose_name='profile username')),
('fio', models.CharField(max_length=256, verbose_name='fio')), ('fio', models.CharField(max_length=256, verbose_name='fio')),
('birth_day', models.DateField(auto_now_add=True, verbose_name='birth day')), ('birth_day', models.DateField(auto_now_add=True, verbose_name='birth day')),
('is_active', models.BooleanField(default=True, verbose_name='Is active')), ('is_active', models.BooleanField(default=True, verbose_name='Is active')),
('is_admin', models.BooleanField(default=False)), ('is_admin', models.BooleanField(default=False)),
('telephone', models.CharField(max_length=16, validators=[django.core.validators.RegexValidator('^\\+[7,8,9,3]\\d{10,11}$')], verbose_name='Telephone')),
('telephone', models.CharField(max_length=16, validators=[
django.core.validators.RegexValidator('^\\+[7,8,9,3]\\d{10,11}$')], verbose_name='Telephone')),
], ],
options={ options={
'db_table': 'base_accounts', 'db_table': 'base_accounts',
@ -39,10 +41,14 @@ class Migration(migrations.Migration):
migrations.CreateModel( migrations.CreateModel(
name='UserProfile', name='UserProfile',
fields=[ fields=[
('baseaccount_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='accounts_app.BaseAccount')),
('baseaccount_ptr',
models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True,
primary_key=True, serialize=False, to='accounts_app.BaseAccount')),
('email', models.EmailField(default='admin@example.ru', max_length=254)), ('email', models.EmailField(default='admin@example.ru', max_length=254)),
('avatar', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='photo_app.Photo')),
('responsibility_groups', models.ManyToManyField(blank=True, to='group_app.Group', verbose_name='Responsibility groups')),
('avatar', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL,
to='photo_app.Photo')),
('responsibility_groups',
models.ManyToManyField(blank=True, to='group_app.Group', verbose_name='Responsibility groups')),
], ],
options={ options={
'verbose_name': 'Staff account profile', 'verbose_name': 'Staff account profile',
@ -55,11 +61,16 @@ class Migration(migrations.Migration):
migrations.AddField( migrations.AddField(
model_name='baseaccount', model_name='baseaccount',
name='groups', name='groups',
field=models.ManyToManyField(blank=True, help_text='The groups this user belongs to. A user will get all permissions granted to each of their groups.', related_name='user_set', related_query_name='user', to='auth.Group', verbose_name='groups'),
field=models.ManyToManyField(blank=True,
help_text='The groups this user belongs to. A user will get all permissions granted to each of their groups.',
related_name='user_set', related_query_name='user', to='auth.Group',
verbose_name='groups'),
), ),
migrations.AddField( migrations.AddField(
model_name='baseaccount', model_name='baseaccount',
name='user_permissions', name='user_permissions',
field=models.ManyToManyField(blank=True, help_text='Specific permissions for this user.', related_name='user_set', related_query_name='user', to='auth.Permission', verbose_name='user permissions'),
field=models.ManyToManyField(blank=True, help_text='Specific permissions for this user.',
related_name='user_set', related_query_name='user', to='auth.Permission',
verbose_name='user permissions'),
), ),
] ]

2
accounts_app/models.py

@ -8,7 +8,6 @@ from django.conf import settings
from photo_app.models import Photo from photo_app.models import Photo
from group_app.models import Group from group_app.models import Group
DEFAULT_PICTURE = getattr(settings, 'DEFAULT_PICTURE', '/static/img/user_ava.gif') DEFAULT_PICTURE = getattr(settings, 'DEFAULT_PICTURE', '/static/img/user_ava.gif')
TELEPHONE_REGEXP = getattr(settings, 'TELEPHONE_REGEXP', r'^\+[7,8,9,3]\d{10,11}$') TELEPHONE_REGEXP = getattr(settings, 'TELEPHONE_REGEXP', r'^\+[7,8,9,3]\d{10,11}$')
@ -90,7 +89,6 @@ class BaseAccount(AbstractBaseUser, PermissionsMixin):
class UserProfileManager(MyUserManager): class UserProfileManager(MyUserManager):
def get_profiles_by_group(self, group_id): def get_profiles_by_group(self, group_id):
return self.filter(responsibility_groups__id__in=[group_id], is_admin=True, is_active=True) return self.filter(responsibility_groups__id__in=[group_id], is_admin=True, is_active=True)

2
accounts_app/templatetags/acc_tags.py

@ -2,8 +2,8 @@ from django import template
from django.db.models import Model from django.db.models import Model
from django.apps import apps from django.apps import apps
from six import string_types, class_types from six import string_types, class_types
register = template.Library()
register = template.Library()
@register.simple_tag @register.simple_tag

1
accounts_app/urls.py

@ -2,7 +2,6 @@ from django.conf.urls import url
from . import views from . import views
app_name = 'account_app' app_name = 'account_app'
urlpatterns = [ urlpatterns = [

1
agent/__init__.py

@ -3,7 +3,6 @@ from .mod_mikrotik import MikrotikTransmitter
from .core import NasFailedResult, NasNetworkError from .core import NasFailedResult, NasNetworkError
from .structs import TariffStruct, AbonStruct from .structs import TariffStruct, AbonStruct
# Transmitter мы будем импортировать в других местах # Transmitter мы будем импортировать в других местах
# Тут надо указать какой у нас будет NAS # Тут надо указать какой у нас будет NAS
# т.е. какой класс будет управлять доступом в интернет # т.е. какой класс будет управлять доступом в интернет

1
agent/monitoring_agent.py

@ -8,7 +8,6 @@ API_AUTH_SECRET = 'your api key'
SERVER_DOMAIN = 'http://localhost:8000' SERVER_DOMAIN = 'http://localhost:8000'
IP_REGEXP = r'^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.' \ IP_REGEXP = r'^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.' \
r'(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.' \ r'(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.' \
r'(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.' \ r'(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.' \

1
agent/netflow/netflow_handler.py

@ -4,7 +4,6 @@ import sys
import os import os
from importlib import import_module from importlib import import_module
if __name__ == '__main__': if __name__ == '__main__':
if len(sys.argv) < 2: if len(sys.argv) < 2:
print("File name of netflow required") print("File name of netflow required")

3
agent/structs.py

@ -19,7 +19,6 @@ class BaseStruct(object, metaclass=ABCMeta):
class IpStruct(BaseStruct): class IpStruct(BaseStruct):
def __init__(self, ip): def __init__(self, ip):
if type(ip) is int: if type(ip) is int:
self.__ip = ip self.__ip = ip
@ -55,7 +54,6 @@ class IpStruct(BaseStruct):
# Как обслуживается абонент # Как обслуживается абонент
class TariffStruct(BaseStruct): class TariffStruct(BaseStruct):
def __init__(self, tariff_id=0, speedIn=None, speedOut=None): def __init__(self, tariff_id=0, speedIn=None, speedOut=None):
self.tid = int(tariff_id) self.tid = int(tariff_id)
self.speedIn = float(speedIn if speedIn is not None else 0.001) self.speedIn = float(speedIn if speedIn is not None else 0.001)
@ -92,7 +90,6 @@ class TariffStruct(BaseStruct):
# Абонент из базы # Абонент из базы
class AbonStruct(BaseStruct): class AbonStruct(BaseStruct):
def __init__(self, uid=0, ip=None, tariff=None, is_active=True): def __init__(self, uid=0, ip=None, tariff=None, is_active=True):
self.uid = int(uid or 0) self.uid = int(uid or 0)
self.ip = IpStruct(ip) self.ip = IpStruct(ip)

11
chatbot/migrations/0001_initial.py

@ -8,7 +8,6 @@ import django.db.models.deletion
class Migration(migrations.Migration): class Migration(migrations.Migration):
initial = True initial = True
dependencies = [ dependencies = [
@ -35,9 +34,12 @@ class Migration(migrations.Migration):
fields=[ fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('message', models.CharField(max_length=255, verbose_name='Message')), ('message', models.CharField(max_length=255, verbose_name='Message')),
('status', models.CharField(choices=[('n', 'New'), ('r', 'Read')], default='n', max_length=1, verbose_name='Status of message')),
('status', models.CharField(choices=[('n', 'New'), ('r', 'Read')], default='n', max_length=1,
verbose_name='Status of message')),
('tag', models.CharField(default='none', max_length=6, verbose_name='App tag')), ('tag', models.CharField(default='none', max_length=6, verbose_name='App tag')),
('target_employee', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Target employee')),
('target_employee',
models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL,
verbose_name='Target employee')),
], ],
options={ options={
'verbose_name': 'Message queue', 'verbose_name': 'Message queue',
@ -50,7 +52,8 @@ class Migration(migrations.Migration):
fields=[ fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('chat_id', models.PositiveIntegerField(default=0, verbose_name='Telegram chat id')), ('chat_id', models.PositiveIntegerField(default=0, verbose_name='Telegram chat id')),
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Employee')),
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL,
verbose_name='Employee')),
], ],
options={ options={
'verbose_name': 'Telegram bot', 'verbose_name': 'Telegram bot',

1
chatbot/models.py

@ -37,7 +37,6 @@ class MessageHistory(models.Model):
class MessageQueueManager(models.Manager): class MessageQueueManager(models.Manager):
def pop(self, user, tag='none'): def pop(self, user, tag='none'):
msgs = self.filter(target_employee=user, status='n', tag=tag)[:1].only('message').values('id', 'message') msgs = self.filter(target_employee=user, status='n', tag=tag)[:1].only('message').values('id', 'message')
if len(msgs) > 0: if len(msgs) > 0:

6
chatbot/telebot.py

@ -102,10 +102,12 @@ class DjingTelebot(helper.ChatHandler):
chat_id=self._chat_id chat_id=self._chat_id
) )
except UserProfile.DoesNotExist: except UserProfile.DoesNotExist:
self._question(_("You are not found in the database, check that it correctly pointed out its LOGIN. Try again"),
self._question(
_("You are not found in the database, check that it correctly pointed out its LOGIN. Try again"),
self.question_name) self.question_name)
return return
self._sent_reply(_("Yes, it's nice to meet %(username)s, I will notify you about events in billing. Successful work ;)")
self._sent_reply(
_("Yes, it's nice to meet %(username)s, I will notify you about events in billing. Successful work ;)")
% {'username': profile.get_full_name()}) % {'username': profile.get_full_name()})
# заканчивается время диалога # заканчивается время диалога

2
clientsideapp/models.py

@ -1,3 +1 @@
# Create your models here. # Create your models here.

2
clientsideapp/urls.py

@ -2,10 +2,8 @@
from django.conf.urls import url from django.conf.urls import url
from . import views from . import views
app_name = 'clientsideapp' app_name = 'clientsideapp'
urlpatterns = [ urlpatterns = [
url(r'^$', views.home, name='home'), url(r'^$', views.home, name='home'),
url(r'^pays$', views.pays, name='pays'), url(r'^pays$', views.pays, name='pays'),

1
devapp/admin.py

@ -2,6 +2,5 @@ from django.contrib import admin
from . import models from . import models
admin.site.register(models.Device) admin.site.register(models.Device)
admin.site.register(models.Port) admin.site.register(models.Port)

2
devapp/apps.py

@ -1,5 +1,3 @@
from django.apps import AppConfig from django.apps import AppConfig

9
devapp/base_intr.py

@ -1,10 +1,10 @@
from abc import ABCMeta, abstractmethod from abc import ABCMeta, abstractmethod
from datetime import timedelta from datetime import timedelta
from django.utils.translation import gettext
from typing import Union, Iterable, AnyStr, Generator from typing import Union, Iterable, AnyStr, Generator
from easysnmp import Session from easysnmp import Session
ListOrError = Union[ ListOrError = Union[
Iterable, Iterable,
Union[Exception, Iterable] Union[Exception, Iterable]
@ -16,7 +16,6 @@ class DeviceImplementationError(Exception):
class DevBase(object, metaclass=ABCMeta): class DevBase(object, metaclass=ABCMeta):
def __init__(self, dev_instance=None): def __init__(self, dev_instance=None):
self.db_instance = dev_instance self.db_instance = dev_instance
@ -78,10 +77,12 @@ class BasePort(object, metaclass=ABCMeta):
class SNMPBaseWorker(object, metaclass=ABCMeta): class SNMPBaseWorker(object, metaclass=ABCMeta):
ses = None ses = None
def __init__(self, ip, community='public', ver=2):
def __init__(self, ip: str, community='public', ver=2):
if ip is None:
raise DeviceImplementationError(gettext('Ip address is required'))
self.ses = Session(hostname=ip, community=community, version=ver) self.ses = Session(hostname=ip, community=community, version=ver)
def set_int_value(self, oid, value):
def set_int_value(self, oid: str, value):
return self.ses.set(oid, value, 'i') return self.ses.set(oid, value, 'i')
def get_list(self, oid) -> Generator: def get_list(self, oid) -> Generator:

27
devapp/migrations/0001_initial.py

@ -9,7 +9,6 @@ import mydefs
class Migration(migrations.Migration): class Migration(migrations.Migration):
initial = True initial = True
dependencies = [ dependencies = [
@ -21,16 +20,25 @@ class Migration(migrations.Migration):
name='Device', name='Device',
fields=[ fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('ip_address', mydefs.MyGenericIPAddressField(max_length=8, protocol='ipv4', verbose_name='Ip address')),
('mac_addr', djing.fields.MACAddressField(blank=True, integer=True, null=True, unique=True, verbose_name='Mac address')),
(
'ip_address', mydefs.MyGenericIPAddressField(max_length=8, protocol='ipv4', verbose_name='Ip address')),
('mac_addr', djing.fields.MACAddressField(blank=True, integer=True, null=True, unique=True,
verbose_name='Mac address')),
('comment', models.CharField(max_length=256, verbose_name='Comment')), ('comment', models.CharField(max_length=256, verbose_name='Comment')),
('devtype', models.CharField(choices=[('Dl', 'DLink switch'), ('Pn', 'PON OLT'), ('On', 'PON ONU'), ('Ex', 'Eltex switch')], default='Dl', max_length=2, verbose_name='Device type')),
('devtype', models.CharField(
choices=[('Dl', 'DLink switch'), ('Pn', 'PON OLT'), ('On', 'PON ONU'), ('Ex', 'Eltex switch')],
default='Dl', max_length=2, verbose_name='Device type')),
('man_passw', models.CharField(blank=True, max_length=16, null=True, verbose_name='SNMP password')), ('man_passw', models.CharField(blank=True, max_length=16, null=True, verbose_name='SNMP password')),
('snmp_item_num', models.PositiveSmallIntegerField(blank=True, default=0, verbose_name='SNMP Number')), ('snmp_item_num', models.PositiveSmallIntegerField(blank=True, default=0, verbose_name='SNMP Number')),
('status', models.CharField(choices=[('und', 'Undefined'), ('up', 'Up'), ('unr', 'Unreachable'), ('dwn', 'Down')], default='und', max_length=3, verbose_name='Status')),
('is_noticeable', models.BooleanField(default=False, verbose_name='Send notify when monitoring state changed')),
('group', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='group_app.Group', verbose_name='Device group')),
('parent_dev', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='devapp.Device', verbose_name='Parent device')),
('status',
models.CharField(choices=[('und', 'Undefined'), ('up', 'Up'), ('unr', 'Unreachable'), ('dwn', 'Down')],
default='und', max_length=3, verbose_name='Status')),
('is_noticeable',
models.BooleanField(default=False, verbose_name='Send notify when monitoring state changed')),
('group', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL,
to='group_app.Group', verbose_name='Device group')),
('parent_dev', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL,
to='devapp.Device', verbose_name='Parent device')),
], ],
options={ options={
'verbose_name': 'Device', 'verbose_name': 'Device',
@ -46,7 +54,8 @@ class Migration(migrations.Migration):
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('num', models.PositiveSmallIntegerField(default=0, verbose_name='Number')), ('num', models.PositiveSmallIntegerField(default=0, verbose_name='Number')),
('descr', models.CharField(blank=True, max_length=60, null=True, verbose_name='Description')), ('descr', models.CharField(blank=True, max_length=60, null=True, verbose_name='Description')),
('device', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='devapp.Device', verbose_name='Device')),
('device', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='devapp.Device',
verbose_name='Device')),
], ],
options={ options={
'verbose_name': 'Port', 'verbose_name': 'Port',

1
devapp/tests.py

@ -3,7 +3,6 @@ from . import dev_types
class DevTest(TestCase): class DevTest(TestCase):
def setUp(self): def setUp(self):
pass pass

1
dhcp_lever.py

@ -7,6 +7,7 @@ def die(text):
print(text) print(text)
exit(1) exit(1)
''' '''
obj = { obj = {
'client_ip': ip2int('127.0.0.1'), 'client_ip': ip2int('127.0.0.1'),

3
dialing.py

@ -2,6 +2,7 @@
import os, signal import os, signal
from pid.decorator import pidfile from pid.decorator import pidfile
import django import django
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "djing.settings") os.environ.setdefault("DJANGO_SETTINGS_MODULE", "djing.settings")
django.setup() django.setup()
from messaging.sms import SmsSubmit, SmsDeliver from messaging.sms import SmsSubmit, SmsDeliver
@ -11,14 +12,12 @@ from time import sleep
from dialing_app.models import SMSModel, SMSOut from dialing_app.models import SMSModel, SMSOut
from django.conf import settings from django.conf import settings
ASTERISK_MANAGER_AUTH = getattr(settings, 'ASTERISK_MANAGER_AUTH', { ASTERISK_MANAGER_AUTH = getattr(settings, 'ASTERISK_MANAGER_AUTH', {
'username': 'admin', 'username': 'admin',
'password': 'admin', 'password': 'admin',
'host': '127.0.0.1' 'host': '127.0.0.1'
}) })
outbox_messages = False outbox_messages = False

9
dialing_app/migrations/0001_initial.py

@ -6,7 +6,6 @@ from django.db import migrations, models
class Migration(migrations.Migration): class Migration(migrations.Migration):
initial = True initial = True
dependencies = [ dependencies = [
@ -30,7 +29,9 @@ class Migration(migrations.Migration):
('start', models.DateTimeField(blank=True, default=None, null=True)), ('start', models.DateTimeField(blank=True, default=None, null=True)),
('answer', models.DateTimeField(blank=True, default=None, null=True)), ('answer', models.DateTimeField(blank=True, default=None, null=True)),
('end', models.DateTimeField(blank=True, default=None, null=True)), ('end', models.DateTimeField(blank=True, default=None, null=True)),
('disposition', models.CharField(choices=[('NO ANSWER', 'No answer'), ('FAILED', 'Failed'), ('BUSY', 'Busy'), ('ANSWERED', 'Answered'), ('UNKNOWN', 'Unknown')], default='', max_length=45)),
('disposition', models.CharField(
choices=[('NO ANSWER', 'No answer'), ('FAILED', 'Failed'), ('BUSY', 'Busy'),
('ANSWERED', 'Answered'), ('UNKNOWN', 'Unknown')], default='', max_length=45)),
('amaflags', models.IntegerField(default=0)), ('amaflags', models.IntegerField(default=0)),
('accountcode', models.CharField(default='', max_length=20)), ('accountcode', models.CharField(default='', max_length=20)),
('userfield', models.CharField(default='', max_length=255)), ('userfield', models.CharField(default='', max_length=255)),
@ -66,7 +67,9 @@ class Migration(migrations.Migration):
('when', models.DateTimeField(auto_now_add=True, verbose_name='When')), ('when', models.DateTimeField(auto_now_add=True, verbose_name='When')),
('dst', models.CharField(max_length=16, verbose_name='Telephone')), ('dst', models.CharField(max_length=16, verbose_name='Telephone')),
('text', models.CharField(max_length=255, verbose_name='Text')), ('text', models.CharField(max_length=255, verbose_name='Text')),
('status', models.CharField(choices=[('nw', 'New'), ('st', 'Sent'), ('fd', 'Failed')], default='nw', max_length=2, verbose_name='Status')),
('status',
models.CharField(choices=[('nw', 'New'), ('st', 'Sent'), ('fd', 'Failed')], default='nw', max_length=2,
verbose_name='Status')),
], ],
options={ options={
'verbose_name': 'Out SMS', 'verbose_name': 'Out SMS',

2
dialing_app/urls.py

@ -1,10 +1,8 @@
from django.conf.urls import url from django.conf.urls import url
from . import views from . import views
app_name = 'dialing_app' app_name = 'dialing_app'
urlpatterns = [ urlpatterns = [
url(r'^$', views.LastCallsListView.as_view(), name='home'), url(r'^$', views.LastCallsListView.as_view(), name='home'),
url(r'^filter$', views.DialsFilterListView.as_view(), name='vfilter'), url(r'^filter$', views.DialsFilterListView.as_view(), name='vfilter'),

1
djing/__init__.py

@ -1,7 +1,6 @@
import importlib import importlib
from netaddr import mac_unix, mac_eui48 from netaddr import mac_unix, mac_eui48
MAC_ADDR_REGEX = r'^([0-9A-Fa-f]{1,2}[:-]){5}([0-9A-Fa-f]{1,2})$' MAC_ADDR_REGEX = r'^([0-9A-Fa-f]{1,2}[:-]){5}([0-9A-Fa-f]{1,2})$'
IP_ADDR_REGEX = r'^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.' \ IP_ADDR_REGEX = r'^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.' \

1
djing/fields.py

@ -103,6 +103,7 @@ class MACAddressField(models.Field):
try: try:
from south.modelsinspector import add_introspection_rules from south.modelsinspector import add_introspection_rules
add_introspection_rules([], ["^macaddress\.fields\.MACAddressField"]) add_introspection_rules([], ["^macaddress\.fields\.MACAddressField"])
except ImportError: except ImportError:
pass pass

1
djing/formfields.py

@ -7,7 +7,6 @@ from django.utils.translation import gettext_lazy as _
from netaddr import EUI, AddrFormatError from netaddr import EUI, AddrFormatError
from . import MAC_ADDR_REGEX from . import MAC_ADDR_REGEX
mac_address_validator = RegexValidator( mac_address_validator = RegexValidator(
_lazy_re_compile(MAC_ADDR_REGEX), _lazy_re_compile(MAC_ADDR_REGEX),
message=_('Enter a valid integer.'), message=_('Enter a valid integer.'),

4
djing/global_base_views.py

@ -23,7 +23,6 @@ class RedirectWhenError(Exception):
class HashAuthView(View): class HashAuthView(View):
@staticmethod @staticmethod
def calc_hash(data): def calc_hash(data):
if type(data) is str: if type(data) is str:
@ -60,7 +59,6 @@ class HashAuthView(View):
class AllowedSubnetMixin(object): class AllowedSubnetMixin(object):
def dispatch(self, request, *args, **kwargs): def dispatch(self, request, *args, **kwargs):
""" """
Check if user ip in allowed subnet. Check if user ip in allowed subnet.
@ -80,6 +78,7 @@ class OrderingMixin(object):
@dir - direction of ordering. down or up. @dir - direction of ordering. down or up.
@order_by - ordering field name @order_by - ordering field name
""" """
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
context = super(OrderingMixin, self).get_context_data(**kwargs) context = super(OrderingMixin, self).get_context_data(**kwargs)
context['order_by'] = self.request.GET.get('order_by') context['order_by'] = self.request.GET.get('order_by')
@ -104,7 +103,6 @@ class OrderingMixin(object):
class RedirectWhenErrorMixin(object): class RedirectWhenErrorMixin(object):
def get(self, request, *args, **kwargs): def get(self, request, *args, **kwargs):
try: try:
return super(RedirectWhenErrorMixin, self).get(request, *args, **kwargs) return super(RedirectWhenErrorMixin, self).get(request, *args, **kwargs)

6
djing/settings.py

@ -1,13 +1,11 @@
# -*- coding: utf-8 -* # -*- coding: utf-8 -*
import os import os
try: try:
from . import local_settings from . import local_settings
except ImportError: except ImportError:
raise ImportError("You must create config file local_settings.py from template") raise ImportError("You must create config file local_settings.py from template")
# Build paths inside the project like this: os.path.join(BASE_DIR, ...) # Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
from django.urls import reverse_lazy from django.urls import reverse_lazy
@ -95,13 +93,11 @@ TEMPLATES = [
WSGI_APPLICATION = 'djing.wsgi.application' WSGI_APPLICATION = 'djing.wsgi.application'
# Database # Database
# https://docs.djangoproject.com/en/1.11/ref/settings/#databases # https://docs.djangoproject.com/en/1.11/ref/settings/#databases
DATABASES = local_settings.DATABASES DATABASES = local_settings.DATABASES
# Password validation # Password validation
# https://docs.djangoproject.com/en/1.11/ref/settings/#auth-password-validators # https://docs.djangoproject.com/en/1.11/ref/settings/#auth-password-validators
@ -145,7 +141,6 @@ FILE_UPLOAD_MAX_MEMORY_SIZE = 4096000
# time to session live, 1 day # time to session live, 1 day
SESSION_COOKIE_AGE = 60 * 60 * 24 SESSION_COOKIE_AGE = 60 * 60 * 24
# Static files (CSS, JavaScript, Images) # Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.9/howto/static-files/ # https://docs.djangoproject.com/en/1.9/howto/static-files/
@ -153,7 +148,6 @@ STATIC_URL = '/static/'
if DEBUG: if DEBUG:
STATICFILES_DIRS = (os.path.join(BASE_DIR, "static"),) STATICFILES_DIRS = (os.path.join(BASE_DIR, "static"),)
# Example output: 16 september 2018 # Example output: 16 september 2018
DATE_FORMAT = 'd E Y' DATE_FORMAT = 'd E Y'

1
group_app/migrations/0001_initial.py

@ -6,7 +6,6 @@ from django.db import migrations, models
class Migration(migrations.Migration): class Migration(migrations.Migration):
initial = True initial = True
dependencies = [ dependencies = [

4
mapapp/migrations/0001_initial.py

@ -6,7 +6,6 @@ from django.db import migrations, models
class Migration(migrations.Migration): class Migration(migrations.Migration):
initial = True initial = True
dependencies = [ dependencies = [
@ -21,7 +20,8 @@ class Migration(migrations.Migration):
('title', models.CharField(max_length=127, verbose_name='Map point title')), ('title', models.CharField(max_length=127, verbose_name='Map point title')),
('latitude', models.FloatField(verbose_name='Latitude')), ('latitude', models.FloatField(verbose_name='Latitude')),
('longitude', models.FloatField(verbose_name='Longitude')), ('longitude', models.FloatField(verbose_name='Longitude')),
('attachment', models.FileField(blank=True, null=True, upload_to='map_attachments/%Y_%m_%d', verbose_name='Attachment')),
('attachment', models.FileField(blank=True, null=True, upload_to='map_attachments/%Y_%m_%d',
verbose_name='Attachment')),
('devices', models.ManyToManyField(db_table='dot_device', to='devapp.Device', verbose_name='Devices')), ('devices', models.ManyToManyField(db_table='dot_device', to='devapp.Device', verbose_name='Devices')),
], ],
options={ options={

2
mapapp/templates/maps/dot.html

@ -73,7 +73,7 @@
<a href="{% url 'devapp:view' 0 dev.pk %}">{{ dev.comment }}</a> <a href="{% url 'devapp:view' 0 dev.pk %}">{{ dev.comment }}</a>
{% endif %} {% endif %}
</td> </td>
<td>{{ dev.ip_address }}</td>
<td>{{ dev.ip_address|default:'-' }}</td>
<td>{{ dev.get_comment_display }}</td> <td>{{ dev.get_comment_display }}</td>
<td> <td>
{% if dev.group %} {% if dev.group %}

2
mapapp/urls.py

@ -2,10 +2,8 @@ from django.conf.urls import url
from . import views from . import views
app_name = 'mapapp' app_name = 'mapapp'
urlpatterns = [ urlpatterns = [
url(r'^$', views.home, name='home'), url(r'^$', views.home, name='home'),
url(r'^options$', views.OptionsListView.as_view(), name='options'), url(r'^options$', views.OptionsListView.as_view(), name='options'),

1
messaging/sms/base.py

@ -2,7 +2,6 @@
class SmsBase(object): class SmsBase(object):
def __init__(self): def __init__(self):
self.udh = None self.udh = None
self.number = None self.number = None

1
messaging/sms/deliver.py

@ -261,4 +261,3 @@ class SmsDeliver(SmsBase):
'dt': dt, 'dt': dt,
'status': _status 'status': _status
} }

1
messaging/sms/gsm0338.py

@ -275,6 +275,7 @@ def getregentry(encoding):
encode=encode, encode=encode,
decode=decode) decode=decode)
# Codec registration # Codec registration
codecs.register(getregentry) codecs.register(getregentry)

1
messaging/sms/pdu.py

@ -2,7 +2,6 @@
class Pdu(object): class Pdu(object):
def __init__(self, pdu, len_smsc, cnt=1, seq=1): def __init__(self, pdu, len_smsc, cnt=1, seq=1):
self.pdu = pdu.upper() self.pdu = pdu.upper()
self.length = len(pdu) / 2 - len_smsc self.length = len(pdu) / 2 - len_smsc

3
messaging/sms/udh.py

@ -2,7 +2,6 @@
class PortAddress(object): class PortAddress(object):
def __init__(self, dest_port, orig_port, eight_bits): def __init__(self, dest_port, orig_port, eight_bits):
self.dest_port = dest_port self.dest_port = dest_port
self.orig_port = orig_port self.orig_port = orig_port
@ -14,7 +13,6 @@ class PortAddress(object):
class ConcatReference(object): class ConcatReference(object):
def __init__(self, ref, cnt, seq, eight_bits): def __init__(self, ref, cnt, seq, eight_bits):
self.ref = ref self.ref = ref
self.cnt = cnt self.cnt = cnt
@ -27,7 +25,6 @@ class ConcatReference(object):
class UserDataHeader(object): class UserDataHeader(object):
def __init__(self): def __init__(self):
self.concat = None self.concat = None
self.ports = None self.ports = None

8
migrate_to_0.2.py

@ -6,13 +6,11 @@ import shutil
from json import dump from json import dump
import django import django
''' '''
Some permissions is not migrates, all admins is superuser Some permissions is not migrates, all admins is superuser
after migrate. after migrate.
''' '''
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "djing.settings") os.environ.setdefault("DJANGO_SETTINGS_MODULE", "djing.settings")
from django.db.models import fields as django_fields from django.db.models import fields as django_fields
@ -29,14 +27,16 @@ def get_fixture_from_unchanget_model(model_name: str, model_class):
def get_fields(obj): def get_fields(obj):
fields = dict() fields = dict()
for field in obj._meta.get_fields(): for field in obj._meta.get_fields():
if isinstance(field, (django_fields.reverse_related.ManyToOneRel, django_fields.reverse_related.ManyToManyRel)):
if isinstance(field,
(django_fields.reverse_related.ManyToOneRel, django_fields.reverse_related.ManyToManyRel)):
continue continue
field_val = getattr(obj, field.name) field_val = getattr(obj, field.name)
if field_val is None: if field_val is None:
continue continue
if isinstance(field, django_fields.related.ManyToManyField): if isinstance(field, django_fields.related.ManyToManyField):
fields[field.name] = [f.pk for f in field_val.all()] fields[field.name] = [f.pk for f in field_val.all()]
elif isinstance(field, (django_fields.related.ForeignKey, django.contrib.contenttypes.fields.GenericForeignKey)):
elif isinstance(field,
(django_fields.related.ForeignKey, django.contrib.contenttypes.fields.GenericForeignKey)):
fields[field.name] = field_val.pk fields[field.name] = field_val.pk
elif isinstance(field, django_fields.FloatField): elif isinstance(field, django_fields.FloatField):
fields[field.name] = float(field_val) fields[field.name] = float(field_val)

1
msg_app/admin.py

@ -3,4 +3,3 @@ from . import models
admin.site.register(models.Message) admin.site.register(models.Message)
admin.site.register(models.Conversation) admin.site.register(models.Conversation)

9
msg_app/forms.py

@ -5,15 +5,16 @@ from accounts_app.models import UserProfile
class ConversationForm(forms.ModelForm): class ConversationForm(forms.ModelForm):
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
super(ConversationForm, self).__init__(*args, **kwargs) super(ConversationForm, self).__init__(*args, **kwargs)
user_profile_queryset = UserProfile.objects.filter(is_admin=True) user_profile_queryset = UserProfile.objects.filter(is_admin=True)
if user_profile_queryset is not None: if user_profile_queryset is not None:
self.fields['participants'].choices = [(up.pk, up.get_full_name()) for up in user_profile_queryset] self.fields['participants'].choices = [(up.pk, up.get_full_name()) for up in user_profile_queryset]
title = forms.CharField(max_length=32, required=False, widget=forms.TextInput(attrs={'class': 'form-control', 'maxlength': '32'}))
participants = forms.MultipleChoiceField(required=False, widget=forms.SelectMultiple(attrs={'class': 'form-control'}))
title = forms.CharField(max_length=32, required=False,
widget=forms.TextInput(attrs={'class': 'form-control', 'maxlength': '32'}))
participants = forms.MultipleChoiceField(required=False,
widget=forms.SelectMultiple(attrs={'class': 'form-control'}))
class Meta: class Meta:
model = Conversation model = Conversation
@ -36,7 +37,6 @@ class ConversationForm(forms.ModelForm):
class MessageForm(forms.ModelForm): class MessageForm(forms.ModelForm):
class Meta: class Meta:
model = Message model = Message
exclude = ['sent_at', 'author', 'conversation', 'account_status'] exclude = ['sent_at', 'author', 'conversation', 'account_status']
@ -57,7 +57,6 @@ class MessageForm(forms.ModelForm):
) )
return msg return msg
def save(self, commit=True): def save(self, commit=True):
# You must use MessageForm.create() for save the form # You must use MessageForm.create() for save the form
raise NotImplementedError raise NotImplementedError

33
msg_app/migrations/0001_initial.py

@ -8,7 +8,6 @@ import django.db.models.deletion
class Migration(migrations.Migration): class Migration(migrations.Migration):
initial = True initial = True
dependencies = [ dependencies = [
@ -35,10 +34,16 @@ class Migration(migrations.Migration):
name='ConversationMembership', name='ConversationMembership',
fields=[ fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('status', models.CharField(choices=[('adm', 'Admin'), ('gst', 'Guest'), ('ban', 'Banned user'), ('inv', 'Inviter')], default='gst', max_length=3)),
('account', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='memberships', to=settings.AUTH_USER_MODEL)),
('conversation', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='msg_app.Conversation')),
('who_invite_that_user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='self_conversations', to=settings.AUTH_USER_MODEL)),
('status', models.CharField(
choices=[('adm', 'Admin'), ('gst', 'Guest'), ('ban', 'Banned user'), ('inv', 'Inviter')],
default='gst', max_length=3)),
('account', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='memberships',
to=settings.AUTH_USER_MODEL)),
('conversation',
models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='msg_app.Conversation')),
('who_invite_that_user',
models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE,
related_name='self_conversations', to=settings.AUTH_USER_MODEL)),
], ],
options={ options={
'verbose_name': 'Conversation membership', 'verbose_name': 'Conversation membership',
@ -66,9 +71,12 @@ class Migration(migrations.Migration):
name='MessageStatus', name='MessageStatus',
fields=[ fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('state', models.CharField(choices=[('new', 'New'), ('old', 'Seen'), ('del', 'Deleted')], default='new', max_length=3)),
('msg', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='msg_statuses', to='msg_app.Message')),
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='usr_msg_status', to=settings.AUTH_USER_MODEL)),
('state', models.CharField(choices=[('new', 'New'), ('old', 'Seen'), ('del', 'Deleted')], default='new',
max_length=3)),
('msg', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='msg_statuses',
to='msg_app.Message')),
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='usr_msg_status',
to=settings.AUTH_USER_MODEL)),
], ],
options={ options={
'verbose_name': 'Message status', 'verbose_name': 'Message status',
@ -84,17 +92,20 @@ class Migration(migrations.Migration):
migrations.AddField( migrations.AddField(
model_name='message', model_name='message',
name='author', name='author',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='messages', to=settings.AUTH_USER_MODEL),
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='messages',
to=settings.AUTH_USER_MODEL),
), ),
migrations.AddField( migrations.AddField(
model_name='message', model_name='message',
name='conversation', name='conversation',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='msg_app.Conversation', verbose_name='Conversation'),
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='msg_app.Conversation',
verbose_name='Conversation'),
), ),
migrations.AddField( migrations.AddField(
model_name='conversation', model_name='conversation',
name='participants', name='participants',
field=models.ManyToManyField(related_name='conversations', through='msg_app.ConversationMembership', to=settings.AUTH_USER_MODEL),
field=models.ManyToManyField(related_name='conversations', through='msg_app.ConversationMembership',
to=settings.AUTH_USER_MODEL),
), ),
migrations.AlterUniqueTogether( migrations.AlterUniqueTogether(
name='messagestatus', name='messagestatus',

4
msg_app/models.py

@ -82,7 +82,8 @@ class ConversationMembership(models.Model):
('inv', _('Inviter')) ('inv', _('Inviter'))
) )
status = models.CharField(max_length=3, choices=PARTICIPANT_STATUS, default='gst') status = models.CharField(max_length=3, choices=PARTICIPANT_STATUS, default='gst')
who_invite_that_user = models.ForeignKey(UserProfile, models.CASCADE, null=True, blank=True, related_name='self_conversations')
who_invite_that_user = models.ForeignKey(UserProfile, models.CASCADE, null=True, blank=True,
related_name='self_conversations')
def __str__(self): def __str__(self):
return "%s < %s" % (self.conversation, self.account) return "%s < %s" % (self.conversation, self.account)
@ -103,7 +104,6 @@ def id_to_userprofile(acc):
class ConversationManager(models.Manager): class ConversationManager(models.Manager):
def create_conversation(self, author, other_participants, title=None): def create_conversation(self, author, other_participants, title=None):
other_participants = [id_to_userprofile(acc) for acc in other_participants] other_participants = [id_to_userprofile(acc) for acc in other_participants]
if not title: if not title:

2
msg_app/urls.py

@ -1,10 +1,8 @@
from django.conf.urls import url from django.conf.urls import url
from . import views from . import views
app_name = 'msg_app' app_name = 'msg_app'
urlpatterns = [ urlpatterns = [
url(r'^$', views.ConversationsListView.as_view(), name='home'), url(r'^$', views.ConversationsListView.as_view(), name='home'),
url(r'^new$', views.new_conversation, name='new_conversation'), url(r'^new$', views.new_conversation, name='new_conversation'),

1
photo_app/admin.py

@ -2,5 +2,4 @@ from django.contrib import admin
from . import models from . import models
admin.site.register(models.Photo) admin.site.register(models.Photo)

1
photo_app/migrations/0001_initial.py

@ -6,7 +6,6 @@ from django.db import migrations, models
class Migration(migrations.Migration): class Migration(migrations.Migration):
initial = True initial = True
dependencies = [ dependencies = [

1
photo_app/urls.py

@ -5,7 +5,6 @@ urlpatterns = [
# url(r'^(?P<id>\d+)$', 'photo_albums', name='media_home_link_by_id'), # url(r'^(?P<id>\d+)$', 'photo_albums', name='media_home_link_by_id'),
# url(r'^album(?P<id>\d+)$', 'photos', name='media_photos_link'), # url(r'^album(?P<id>\d+)$', 'photos', name='media_photos_link'),
# url(r'^newalbum/$', 'add_album', name='add_media_album_link'), # url(r'^newalbum/$', 'add_album', name='add_media_album_link'),
# url(r'^newphoto/$', 'add_photo_to_album', name='add_media_photo_link') # url(r'^newphoto/$', 'add_photo_to_album', name='add_media_photo_link')
] ]

4
queue_mngr.py

@ -4,10 +4,10 @@ from pickle import loads
from pid.decorator import pidfile from pid.decorator import pidfile
import socket import socket
import django import django
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "djing.settings") os.environ.setdefault("DJANGO_SETTINGS_MODULE", "djing.settings")
from mydefs import LogicError from mydefs import LogicError
''' '''
obj = { obj = {
'client_ip': ip2int('127.0.0.1'), 'client_ip': ip2int('127.0.0.1'),
@ -57,5 +57,5 @@ if __name__ == '__main__':
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "djing.settings") os.environ.setdefault("DJANGO_SETTINGS_MODULE", "djing.settings")
django.setup() django.setup()
from agent.commands.dhcp import dhcp_commit, dhcp_expiry, dhcp_release from agent.commands.dhcp import dhcp_commit, dhcp_expiry, dhcp_release
serve()
serve()

2
searchapp/apps.py

@ -1,5 +1,3 @@
from django.apps import AppConfig from django.apps import AppConfig

2
searchapp/models.py

@ -1,3 +1 @@
# Create your models here. # Create your models here.

1
searchapp/urls.py

@ -2,7 +2,6 @@ from django.conf.urls import url
from . import views from . import views
app_name = 'searchapp' app_name = 'searchapp'
urlpatterns = [ urlpatterns = [

1
statistics/fields.py

@ -8,7 +8,6 @@ import django.db.models as models
class UnixDateTimeField(models.DateTimeField): class UnixDateTimeField(models.DateTimeField):
# TODO(niklas9): # TODO(niklas9):
# * should we take care of transforming between time zones in any way here ? # * should we take care of transforming between time zones in any way here ?
# * get default datetime format from settings ? # * get default datetime format from settings ?

4
statistics/migrations/0001_initial.py

@ -8,7 +8,6 @@ import statistics.fields
class Migration(migrations.Migration): class Migration(migrations.Migration):
initial = True initial = True
dependencies = [ dependencies = [
@ -19,7 +18,8 @@ class Migration(migrations.Migration):
name='StatCache', name='StatCache',
fields=[ fields=[
('last_time', statistics.fields.UnixDateTimeField()), ('last_time', statistics.fields.UnixDateTimeField()),
('ip', mydefs.MyGenericIPAddressField(max_length=8, primary_key=True, protocol='ipv4', serialize=False)),
(
'ip', mydefs.MyGenericIPAddressField(max_length=8, primary_key=True, protocol='ipv4', serialize=False)),
('octets', models.PositiveIntegerField(default=0)), ('octets', models.PositiveIntegerField(default=0)),
('packets', models.PositiveIntegerField(default=0)), ('packets', models.PositiveIntegerField(default=0)),
], ],

4
statistics/models.py

@ -14,7 +14,6 @@ def get_dates():
class StatManager(models.Manager): class StatManager(models.Manager):
def chart(self, username, count_of_parts=12, want_date=date.today()): def chart(self, username, count_of_parts=12, want_date=date.today()):
def byte_to_mbit(x): def byte_to_mbit(x):
return ((x / 60) * 8) / 2 ** 20 return ((x / 60) * 8) / 2 ** 20
@ -52,7 +51,6 @@ class StatManager(models.Manager):
return return
class StatElem(models.Model): class StatElem(models.Model):
cur_time = UnixDateTimeField(primary_key=True) cur_time = UnixDateTimeField(primary_key=True)
uname = models.CharField(max_length=127, blank=True, null=True, default=None) uname = models.CharField(max_length=127, blank=True, null=True, default=None)
@ -107,11 +105,11 @@ class StatElem(models.Model):
def getModel(want_date=now()): def getModel(want_date=now()):
class DynamicStatElem(StatElem): class DynamicStatElem(StatElem):
class Meta: class Meta:
db_table = 'flowstat_%s' % want_date.strftime("%d%m%Y") db_table = 'flowstat_%s' % want_date.strftime("%d%m%Y")
abstract = False abstract = False
return DynamicStatElem return DynamicStatElem

2
statistics/urls.py

@ -2,10 +2,8 @@ from django.conf.urls import url
from . import views from . import views
app_name = 'statistics' app_name = 'statistics'
urlpatterns = [ urlpatterns = [
url(r'^$', views.home, name='home'), url(r'^$', views.home, name='home'),
] ]

2
systemd_units/webdav_backup.py

@ -3,7 +3,6 @@ from sys import argv
from datetime import datetime, timedelta from datetime import datetime, timedelta
import webdav.client as wc import webdav.client as wc
options = { options = {
'webdav_hostname': "https://webdav.yandex.ru/", 'webdav_hostname': "https://webdav.yandex.ru/",
'webdav_login': "YANDEX USERNAME", 'webdav_login': "YANDEX USERNAME",
@ -32,4 +31,3 @@ if __name__ == '__main__':
client.upload_sync(remote_path="ISBackups/%s" % reqfile, local_path="/var/backups/%s" % reqfile) client.upload_sync(remote_path="ISBackups/%s" % reqfile, local_path="/var/backups/%s" % reqfile)
except wc.WebDavException as we: except wc.WebDavException as we:
print(we, type(we)) print(we, type(we))

1
tariff_app/admin.py

@ -2,5 +2,4 @@ from django.contrib import admin
from . import models from . import models
admin.site.register(models.Tariff) admin.site.register(models.Tariff)

9
tariff_app/migrations/0001_initial.py

@ -7,7 +7,6 @@ import jsonfield.fields
class Migration(migrations.Migration): class Migration(migrations.Migration):
initial = True initial = True
dependencies = [ dependencies = [
@ -21,7 +20,9 @@ class Migration(migrations.Migration):
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=64, verbose_name='Periodic pay name')), ('name', models.CharField(max_length=64, verbose_name='Periodic pay name')),
('when_add', models.DateTimeField(auto_now_add=True, verbose_name='When pay created')), ('when_add', models.DateTimeField(auto_now_add=True, verbose_name='When pay created')),
('calc_type', models.CharField(choices=[('df', 'Default periodic pay'), ('cs', 'Custom periodic pay')], default='df', max_length=2, verbose_name='Script type for calculations')),
('calc_type',
models.CharField(choices=[('df', 'Default periodic pay'), ('cs', 'Custom periodic pay')], default='df',
max_length=2, verbose_name='Script type for calculations')),
('amount', models.FloatField(verbose_name='Total amount')), ('amount', models.FloatField(verbose_name='Total amount')),
('extra_info', jsonfield.fields.JSONField()), ('extra_info', jsonfield.fields.JSONField()),
], ],
@ -42,7 +43,9 @@ class Migration(migrations.Migration):
('speedIn', models.FloatField(default=0.0, verbose_name='Speed In')), ('speedIn', models.FloatField(default=0.0, verbose_name='Speed In')),
('speedOut', models.FloatField(default=0.0, verbose_name='Speed Out')), ('speedOut', models.FloatField(default=0.0, verbose_name='Speed Out')),
('amount', models.FloatField(default=0.0, verbose_name='Price')), ('amount', models.FloatField(default=0.0, verbose_name='Price')),
('calc_type', models.CharField(choices=[('Df', 'Base calculate functionality'), ('Dp', 'IS'), ('Cp', 'Private service')], default='Df', max_length=2, verbose_name='Script')),
('calc_type', models.CharField(
choices=[('Df', 'Base calculate functionality'), ('Dp', 'IS'), ('Cp', 'Private service')],
default='Df', max_length=2, verbose_name='Script')),
('is_admin', models.BooleanField(default=False, verbose_name='Tech service')), ('is_admin', models.BooleanField(default=False, verbose_name='Tech service')),
('groups', models.ManyToManyField(blank=True, to='group_app.Group')), ('groups', models.ManyToManyField(blank=True, to='group_app.Group')),
], ],

1
tariff_app/models.py

@ -10,7 +10,6 @@ from jsonfield import JSONField
class TariffManager(models.Manager): class TariffManager(models.Manager):
def get_tariffs_by_group(self, group_id): def get_tariffs_by_group(self, group_id):
return self.filter(groups__id__in=[group_id]) return self.filter(groups__id__in=[group_id])

1
taskapp/admin.py

@ -2,6 +2,5 @@ from django.contrib import admin
from . import models from . import models
admin.site.register(models.Task) admin.site.register(models.Task)
admin.site.register(models.ChangeLog) admin.site.register(models.ChangeLog)

1
taskapp/forms.py

@ -44,7 +44,6 @@ class TaskFrm(forms.ModelForm):
class ExtraCommentForm(forms.ModelForm): class ExtraCommentForm(forms.ModelForm):
def make_save(self, author, task: Task): def make_save(self, author, task: Task):
comment = super(ExtraCommentForm, self).save(commit=False) comment = super(ExtraCommentForm, self).save(commit=False)
comment.author = author comment.author = author

44
taskapp/migrations/0001_initial.py

@ -9,7 +9,6 @@ import taskapp.models
class Migration(migrations.Migration): class Migration(migrations.Migration):
initial = True initial = True
dependencies = [ dependencies = [
@ -22,7 +21,9 @@ class Migration(migrations.Migration):
name='ChangeLog', name='ChangeLog',
fields=[ fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('act_type', models.CharField(choices=[('e', 'Change task'), ('c', 'Create task'), ('d', 'Delete task'), ('f', 'Completing tasks'), ('b', 'The task failed')], max_length=1)),
('act_type', models.CharField(choices=[('e', 'Change task'), ('c', 'Create task'), ('d', 'Delete task'),
('f', 'Completing tasks'), ('b', 'The task failed')],
max_length=1)),
('when', models.DateTimeField(auto_now_add=True)), ('when', models.DateTimeField(auto_now_add=True)),
], ],
), ),
@ -32,7 +33,8 @@ class Migration(migrations.Migration):
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('text', models.TextField(verbose_name='Text of comment')), ('text', models.TextField(verbose_name='Text of comment')),
('date_create', models.DateTimeField(auto_now_add=True, verbose_name='Time of create')), ('date_create', models.DateTimeField(auto_now_add=True, verbose_name='Time of create')),
('author', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Author')),
('author', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL,
verbose_name='Author')),
], ],
options={ options={
'verbose_name': 'Extra comment', 'verbose_name': 'Extra comment',
@ -46,15 +48,29 @@ class Migration(migrations.Migration):
fields=[ fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('descr', models.CharField(blank=True, max_length=128, null=True, verbose_name='Description')), ('descr', models.CharField(blank=True, max_length=128, null=True, verbose_name='Description')),
('priority', models.CharField(choices=[('A', 'Higher'), ('C', 'Average'), ('E', 'Low')], default='E', max_length=1, verbose_name='A priority')),
('out_date', models.DateField(blank=True, default=taskapp.models._delta_add_days, null=True, verbose_name='Reality')),
('priority',
models.CharField(choices=[('A', 'Higher'), ('C', 'Average'), ('E', 'Low')], default='E', max_length=1,
verbose_name='A priority')),
('out_date', models.DateField(blank=True, default=taskapp.models._delta_add_days, null=True,
verbose_name='Reality')),
('time_of_create', models.DateTimeField(auto_now_add=True, verbose_name='Date of create')), ('time_of_create', models.DateTimeField(auto_now_add=True, verbose_name='Date of create')),
('state', models.CharField(choices=[('S', 'New'), ('C', 'Confused'), ('F', 'Completed')], default='S', max_length=1, verbose_name='Condition')),
('attachment', models.ImageField(blank=True, null=True, upload_to='task_attachments/%Y.%m.%d', verbose_name='Attached image')),
('mode', models.CharField(choices=[('na', 'not chosen'), ('ic', 'ip conflict'), ('yt', 'yellow triangle'), ('rc', 'red cross'), ('ls', 'weak speed'), ('cf', 'cable break'), ('cn', 'connection'), ('pf', 'periodic disappearance'), ('cr', 'router setup'), ('co', 'configure onu'), ('fc', 'crimp cable'), ('ni', 'Internet crash'), ('ot', 'other')], default='na', max_length=2, verbose_name='The nature of the damage')),
('abon', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='abonapp.Abon', verbose_name='Subscriber')),
('author', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL, verbose_name='Task author')),
('recipients', models.ManyToManyField(related_name='them_task', to=settings.AUTH_USER_MODEL, verbose_name='Recipients')),
('state', models.CharField(choices=[('S', 'New'), ('C', 'Confused'), ('F', 'Completed')], default='S',
max_length=1, verbose_name='Condition')),
('attachment', models.ImageField(blank=True, null=True, upload_to='task_attachments/%Y.%m.%d',
verbose_name='Attached image')),
('mode', models.CharField(
choices=[('na', 'not chosen'), ('ic', 'ip conflict'), ('yt', 'yellow triangle'),
('rc', 'red cross'), ('ls', 'weak speed'), ('cf', 'cable break'), ('cn', 'connection'),
('pf', 'periodic disappearance'), ('cr', 'router setup'), ('co', 'configure onu'),
('fc', 'crimp cable'), ('ni', 'Internet crash'), ('ot', 'other')], default='na',
max_length=2, verbose_name='The nature of the damage')),
('abon', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE,
to='abonapp.Abon', verbose_name='Subscriber')),
('author', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL,
related_name='+', to=settings.AUTH_USER_MODEL,
verbose_name='Task author')),
('recipients', models.ManyToManyField(related_name='them_task', to=settings.AUTH_USER_MODEL,
verbose_name='Recipients')),
], ],
options={ options={
'db_table': 'task', 'db_table': 'task',
@ -65,7 +81,8 @@ class Migration(migrations.Migration):
migrations.AddField( migrations.AddField(
model_name='extracomment', model_name='extracomment',
name='task', name='task',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='taskapp.Task', verbose_name='Owner task'),
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='taskapp.Task',
verbose_name='Owner task'),
), ),
migrations.AddField( migrations.AddField(
model_name='changelog', model_name='changelog',
@ -75,6 +92,7 @@ class Migration(migrations.Migration):
migrations.AddField( migrations.AddField(
model_name='changelog', model_name='changelog',
name='who', name='who',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='+', to=settings.AUTH_USER_MODEL),
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='+',
to=settings.AUTH_USER_MODEL),
), ),
] ]

7
taskapp/models.py

@ -8,7 +8,6 @@ from django.utils.translation import ugettext as _
from abonapp.models import Abon from abonapp.models import Abon
from .handle import handle as task_handle from .handle import handle as task_handle
TASK_PRIORITIES = ( TASK_PRIORITIES = (
('A', _('Higher')), ('A', _('Higher')),
('C', _('Average')), ('C', _('Average')),
@ -61,8 +60,10 @@ def _delta_add_days():
class Task(models.Model): class Task(models.Model):
descr = models.CharField(_('Description'), max_length=128, null=True, blank=True) descr = models.CharField(_('Description'), max_length=128, null=True, blank=True)
recipients = models.ManyToManyField(settings.AUTH_USER_MODEL, verbose_name=_('Recipients'), related_name='them_task')
author = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='+', on_delete=models.SET_NULL, null=True, blank=True, verbose_name=_('Task author'))
recipients = models.ManyToManyField(settings.AUTH_USER_MODEL, verbose_name=_('Recipients'),
related_name='them_task')
author = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='+', on_delete=models.SET_NULL, null=True,
blank=True, verbose_name=_('Task author'))
priority = models.CharField(_('A priority'), max_length=1, choices=TASK_PRIORITIES, default=TASK_PRIORITIES[2][0]) priority = models.CharField(_('A priority'), max_length=1, choices=TASK_PRIORITIES, default=TASK_PRIORITIES[2][0])
out_date = models.DateField(_('Reality'), null=True, blank=True, default=_delta_add_days) out_date = models.DateField(_('Reality'), null=True, blank=True, default=_delta_add_days)
time_of_create = models.DateTimeField(_('Date of create'), auto_now_add=True) time_of_create = models.DateTimeField(_('Date of create'), auto_now_add=True)

5
taskapp/urls.py

@ -2,10 +2,8 @@ from django.conf.urls import url
from . import views from . import views
app_name = 'taskapp' app_name = 'taskapp'
urlpatterns = [ urlpatterns = [
url(r'^$', views.NewTasksView.as_view(), name='home'), url(r'^$', views.NewTasksView.as_view(), name='home'),
url(r'^(?P<task_id>\d+)$', views.TaskUpdateView.as_view(), name='edit'), url(r'^(?P<task_id>\d+)$', views.TaskUpdateView.as_view(), name='edit'),
@ -14,7 +12,8 @@ urlpatterns = [
url(r'^(?P<task_id>\d+)/fail$', views.task_failed, name='fail'), url(r'^(?P<task_id>\d+)/fail$', views.task_failed, name='fail'),
url(r'^(?P<task_id>\d+)/remind', views.remind, name='remind'), url(r'^(?P<task_id>\d+)/remind', views.remind, name='remind'),
url(r'^(?P<task_id>\d+)/comment/add$', views.NewCommentView.as_view(), name='comment_add'), url(r'^(?P<task_id>\d+)/comment/add$', views.NewCommentView.as_view(), name='comment_add'),
url(r'^(?P<task_id>\d+)/comment/(?P<comment_id>\d{1,8})/remove$', views.DeleteCommentView.as_view(), name='comment_del'),
url(r'^(?P<task_id>\d+)/comment/(?P<comment_id>\d{1,8})/remove$', views.DeleteCommentView.as_view(),
name='comment_del'),
url(r'^add$', views.TaskUpdateView.as_view(), name='add'), url(r'^add$', views.TaskUpdateView.as_view(), name='add'),
url(r'^failed$', views.FailedTasksView.as_view(), name='failed_tasks'), url(r'^failed$', views.FailedTasksView.as_view(), name='failed_tasks'),
url(r'^finished$', views.FinishedTaskListView.as_view(), name='finished_tasks'), url(r'^finished$', views.FinishedTaskListView.as_view(), name='finished_tasks'),

Loading…
Cancel
Save