Exemple #1
0
class AlertTemp(models.Model):
    host = models.IPAddressField(primary_key=True)
    snmp_status = models.CharField(max_length=20)
    snmp_data  = models.CharField(max_length=200)
Exemple #2
0
class Comment(BaseCommentAbstractModel):
    """
    A user comment about some object.
    """

    # Who posted this comment? If ``user`` is set then it was an authenticated
    # user; otherwise at least user_name should have been set and the comment
    # was posted by a non-authenticated user.
    user        = models.ForeignKey(User, verbose_name=_('user'),
                    blank=True, null=True, related_name="%(class)s_comments")
    user_name   = models.CharField(_("user's name"), max_length=50, blank=True)
    user_email  = models.EmailField(_("user's email address"), blank=True)
    user_url    = models.URLField(_("user's URL"), blank=True)

    comment = models.TextField(_('comment'), max_length=COMMENT_MAX_LENGTH)

    # Metadata about the comment
    submit_date = models.DateTimeField(_('date/time submitted'), default=None)
    ip_address  = models.IPAddressField(_('IP address'), blank=True, null=True)
    is_public   = models.BooleanField(_('is public'), default=True,
                    help_text=_('Uncheck this box to make the comment effectively ' \
                                'disappear from the site.'))
    is_removed  = models.BooleanField(_('is removed'), default=False,
                    help_text=_('Check this box if the comment is inappropriate. ' \
                                'A "This comment has been removed" message will ' \
                                'be displayed instead.'))

    # Manager
    objects = CommentManager()

    class Meta:
        db_table = "django_comments"
        ordering = ('submit_date',)
        permissions = [("can_moderate", "Can moderate comments")]
        verbose_name = _('comment')
        verbose_name_plural = _('comments')

    def __unicode__(self):
        return "%s: %s..." % (self.name, self.comment[:50])

    def save(self, *args, **kwargs):
        if self.submit_date is None:
            self.submit_date = datetime.datetime.now()
        super(Comment, self).save(*args, **kwargs)

    def _get_userinfo(self):
        """
        Get a dictionary that pulls together information about the poster
        safely for both authenticated and non-authenticated comments.

        This dict will have ``name``, ``email``, and ``url`` fields.
        """
        if not hasattr(self, "_userinfo"):
            self._userinfo = {
                "name"  : self.user_name,
                "email" : self.user_email,
                "url"   : self.user_url
            }
            if self.user_id:
                u = self.user
                if u.email:
                    self._userinfo["email"] = u.email

                # If the user has a full name, use that for the user name.
                # However, a given user_name overrides the raw user.username,
                # so only use that if this comment has no associated name.
                if u.get_full_name():
                    self._userinfo["name"] = self.user.get_full_name()
                elif not self.user_name:
                    self._userinfo["name"] = u.username
        return self._userinfo
    userinfo = property(_get_userinfo, doc=_get_userinfo.__doc__)

    def _get_name(self):
        return self.userinfo["name"]
    def _set_name(self, val):
        if self.user_id:
            raise AttributeError(_("This comment was posted by an authenticated "\
                                   "user and thus the name is read-only."))
        self.user_name = val
    name = property(_get_name, _set_name, doc="The name of the user who posted this comment")

    def _get_email(self):
        return self.userinfo["email"]
    def _set_email(self, val):
        if self.user_id:
            raise AttributeError(_("This comment was posted by an authenticated "\
                                   "user and thus the email is read-only."))
        self.user_email = val
    email = property(_get_email, _set_email, doc="The email of the user who posted this comment")

    def _get_url(self):
        return self.userinfo["url"]
    def _set_url(self, val):
        self.user_url = val
    url = property(_get_url, _set_url, doc="The URL given by the user who posted this comment")

    def get_absolute_url(self, anchor_pattern="#c%(id)s"):
        return self.get_content_object_url() + (anchor_pattern % self.__dict__)

    def get_as_text(self):
        """
        Return this comment as plain text.  Useful for emails.
        """
        d = {
            'user': self.user or self.name,
            'date': self.submit_date,
            'comment': self.comment,
            'domain': self.site.domain,
            'url': self.get_absolute_url()
        }
        return _('Posted by %(user)s at %(date)s\n\n%(comment)s\n\nhttp://%(domain)s%(url)s') % d
Exemple #3
0
class PayPalNVP(Model):
    """Record of a NVP interaction with PayPal."""
    TIMESTAMP_FORMAT = "%Y-%m-%dT%H:%M:%SZ"  # 2009-02-03T17:47:41Z
    RESTRICTED_FIELDS = L("expdate cvv2 acct")
    ADMIN_FIELDS = L(
        "id user flag flag_code flag_info query response created_at updated_at "
    )
    ITEM_FIELDS = L("amt custom invnum")
    DIRECT_FIELDS = L("firstname lastname street city state countrycode zip")

    # Response fields
    method = models.CharField(max_length=64, blank=True)
    ack = models.CharField(max_length=32, blank=True)
    profilestatus = models.CharField(max_length=32, blank=True)
    timestamp = models.DateTimeField(blank=True, null=True)
    profileid = models.CharField(max_length=32, blank=True)  # I-E596DFUSD882
    profilereference = models.CharField(max_length=128,
                                        blank=True)  # PROFILEREFERENCE
    correlationid = models.CharField(max_length=32,
                                     blank=True)  # 25b380cda7a21
    token = models.CharField(max_length=64, blank=True)
    payerid = models.CharField(max_length=64, blank=True)

    # Transaction Fields
    firstname = models.CharField("First Name", max_length=255, blank=True)
    lastname = models.CharField("Last Name", max_length=255, blank=True)
    street = models.CharField("Street Address", max_length=255, blank=True)
    city = models.CharField("City", max_length=255, blank=True)
    state = models.CharField("State", max_length=255, blank=True)
    countrycode = models.CharField("Country", max_length=2, blank=True)
    zip = models.CharField("Postal / Zip Code", max_length=32, blank=True)

    # Custom fields
    invnum = models.CharField(max_length=255, blank=True)
    custom = models.CharField(max_length=255, blank=True)

    # Admin fields
    user = models.ForeignKey(getattr(settings, 'AUTH_USER_MODEL', 'auth.User'),
                             blank=True,
                             null=True)
    flag = models.BooleanField(default=False, blank=True)
    flag_code = models.CharField(max_length=32, blank=True)
    flag_info = models.TextField(blank=True)
    ipaddress = models.IPAddressField(blank=True)
    query = models.TextField(blank=True)
    response = models.TextField(blank=True)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    class Meta:
        db_table = "paypal_nvp"
        verbose_name = "PayPal NVP"

    def init(self, request, paypal_request, paypal_response):
        """Initialize a PayPalNVP instance from a HttpRequest."""
        self.ipaddress = request.META.get('REMOTE_ADDR', '').split(':')[0]
        if hasattr(request, "user") and request.user.is_authenticated():
            self.user = request.user

        # No storing credit card info.
        query_data = dict((k, v) for k, v in paypal_request.iteritems()
                          if k not in self.RESTRICTED_FIELDS)
        self.query = urlencode(query_data)
        self.response = urlencode(paypal_response)

        # Was there a flag on the play?
        ack = paypal_response.get('ack', False)
        if ack != "Success":
            if ack == "SuccessWithWarning":
                self.flag_info = paypal_response.get('l_longmessage0', '')
            else:
                self.set_flag(paypal_response.get('l_longmessage0', ''),
                              paypal_response.get('l_errorcode', ''))

    def set_flag(self, info, code=None):
        """Flag this instance for investigation."""
        self.flag = True
        self.flag_info += info
        if code is not None:
            self.flag_code = code

    def process(self, request, item):
        """Do a direct payment."""
        from paypal.pro.helpers import PayPalWPP
        wpp = PayPalWPP(request)

        # Change the model information into a dict that PayPal can understand.
        params = model_to_dict(self, exclude=self.ADMIN_FIELDS)
        params['acct'] = self.acct
        params['creditcardtype'] = self.creditcardtype
        params['expdate'] = self.expdate
        params['cvv2'] = self.cvv2
        params.update(item)

        # Create recurring payment:
        if 'billingperiod' in params:
            return wpp.createRecurringPaymentsProfile(params, direct=True)
        # Create single payment:
        else:
            return wpp.doDirectPayment(params)
Exemple #4
0
class UserProfile(models.Model):  # The corresponding auth user
    """
        The model is a basic model for any user who will come into Fest.
        
        It handles the basic 
    
    """
    is_active = models.BooleanField(default=True)

    user = models.OneToOneField(
        User, related_name='profile'
    )  # uses name and email from here. username = email

    # Basic information
    gender = models.CharField(max_length=1,
                              choices=GENDER_CHOICES,
                              default='F')
    dob = models.DateField(null=True, blank=True)
    mobile_number = models.CharField(
        max_length=15,
        blank=True,
        null=True,
        help_text='Please enter your current mobile number')

    # College info
    branch = models.CharField(max_length=50,
                              choices=BRANCH_CHOICES,
                              help_text='Your branch of study')
    college = models.ForeignKey(College, null=True, blank=True)
    college_roll = models.CharField(max_length=40, null=True)
    school_student = models.BooleanField(default=False)

    # Fest related info
    want_accomodation = models.BooleanField(
        default=False, help_text="Doesn't assure accommodation.")

    # Internal flags and keys
    activation_key = models.CharField(max_length=40, null=True)
    key_expires = models.DateTimeField(default=timezone.now() +
                                       datetime.timedelta(2))

    # Fest organizational info
    # is_core            = models.BooleanField(default=False)
    # is_hospi           = models.BooleanField(default=False)

    # Analytics information
    date_created = models.DateTimeField(auto_now_add=True)
    last_activity_ip = models.IPAddressField(default="0.0.0.0")
    last_activity_date = models.DateTimeField(
        default=datetime.datetime(1950, 1, 1))

    send_mails = models.BooleanField(default=True)

    objects = CheckActiveManager()

    @property
    def fest_id(self):
        return settings.FEST_NAME[:2].upper + str(self.user.id).zfill(6)

    def last_seen(self):
        return cache.get('seen_%s' % self.user.username)

    def online(self):
        if self.last_seen():
            now = datetime.datetime.now()
            if now > self.last_seen() + datetime.timedelta(
                    seconds=settings.USER_ONLINE_TIMEOUT):
                return False
            else:
                return True
        else:
            return False

    def save(self, *args, **kwargs):
        #self.user.save()
        super(UserProfile, self).save(*args, **kwargs)

    def delete(self, *args, **kwargs):
        self.user.delete()
        super(UserProfile, self).delete(*args, **kwargs)

    def set_iitm_user(self, *args, **kwagrs):
        try:
            self.college = College.objects.get(name__iexact="IIT MADRAS",
                                               state__iexact="Tamil Nadu")
            self.save()
        except:
            pass

    def get_absolute_url(self):
        return reverse('apps.users.views.profile', args=(self.user.pk, ))

    def get_pic(self, s=75):
        url = "graph.facebook.com" + self.fbid + "/picture"
        return url

    @property
    def fbid(self):
        fb_accts = UserSocialAuth.objects.filter(provider="facebook",
                                                 user=self.user)
        if len(fb_accts):
            return fb_accts[0].uid
        return ""

    def incomplete(self):
        self_user = self.user
        return self_user.get_full_name() and self.mobile_number and \
            self_user.email

    def create_unsubscribe_link(self):
        username, token = self.make_token().split(":", 1)
        return reverse('apps.users.views.unsubscribe',
                       kwargs={
                           'username': username,
                           'token': token,
                       })

    def make_token(self):
        return TimestampSigner().sign(self.user.username)

    def check_token(self, token):
        try:
            key = '%s:%s' % (self.user.username, token)
            TimestampSigner().unsign(key,
                                     max_age=60 * 60 * 48)  # Valid for 2 days
        except BadSignature, SignatureExpired:
            return False
        return True
Exemple #5
0
class Threadlocals(models.Model):
    threadlocals_id = models.CharField('threadlocals id', max_length=255)
    ip_address = models.IPAddressField('ip address')
    created_at = models.DateTimeField('date created', auto_now_add=True)
Exemple #6
0
class NetworkSetting(models.Model):
    ip = models.IPAddressField()
    mask = SubnetMaskField()
Exemple #7
0
class InboundPingback(models.Model):
    PROCESS_QUEUE = 'humfrey:pingback:inbound:process-queue'
    ACCEPTED_QUEUE = 'humfrey:pingback:inbound:accepted-queue'

    slug = models.CharField(max_length=40, primary_key=True)
    source = models.URLField()
    target = models.URLField()

    store = models.ForeignKey(Store)

    user_agent = models.TextField(blank=True)
    remote_addr = models.IPAddressField()
    user = models.ForeignKey(User, null=True, blank=True)

    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)

    # Serialized as Turtle
    data = models.TextField(blank=True)

    state = models.CharField(max_length=10,
                             choices=STATE_CHOICES,
                             default='new')
    invalid_reason = models.TextField(blank=True,
                                      choices=INVALID_REASON_CHOICES)

    @property
    def graph_name(self):
        return rdflib.URIRef(settings.GRAPH_BASE + 'pingback/' + self.slug)

    @staticmethod
    def get_slug(source, target):
        hash = lambda x: hashlib.sha1(x).hexdigest()
        return hash(hash(source) + hash(target))

    def queue(self):
        self.state, self.invalid_reason = 'queued', ''
        self.save()
        send_task('humfrey.pingback.process_new_pingback',
                  kwargs={'pingback': self})

    def accept(self):
        self.state, self.invalid_reason = 'accepted', ''
        self.save()
        send_task('humfrey.pingback.accept_pingback',
                  kwargs={'pingback': self})

    def reject(self, save=True):
        self.state, self.invalid_reason = 'rejected', ''
        if save:
            self.save()

    def mark_invalid(self, reason, save=True):
        self.state, self.invalid_reason = 'invalid', reason
        self.data = ''
        if save:
            self.save()

    def mark_pending(self, save=True):
        self.state, self.invalid_reason = 'pending', ''
        if save:
            self.save()

    def mark_published(self, save=True):
        self.state, self.invalid_reason = 'published', ''
        if save:
            self.save()

    def save(self, *args, **kwargs):
        self.slug = self.get_slug(self.source, self.target)
        return super(InboundPingback, self).save(*args, **kwargs)
class Post(RenderableItem):
    topic = models.ForeignKey(Topic,
                              related_name='posts',
                              verbose_name=_('Topic'))
    user = models.ForeignKey(User,
                             related_name='posts',
                             verbose_name=_('User'))
    created = models.DateTimeField(_('Created'), blank=True)
    updated = models.DateTimeField(_('Updated'), blank=True, null=True)
    user_ip = models.IPAddressField(_('User IP'),
                                    blank=True,
                                    default='0.0.0.0')
    on_moderation = models.BooleanField(_('On moderation'), default=False)

    class Meta(object):
        ordering = ['created']
        verbose_name = _('Post')
        verbose_name_plural = _('Posts')

    def summary(self):
        LIMIT = 50
        tail = len(self.body) > LIMIT and '...' or ''
        return self.body[:LIMIT] + tail

    __unicode__ = summary

    def save(self, *args, **kwargs):
        now = datetime.now()
        if self.created is None:
            self.created = now
        self.render()

        new = self.pk is None

        super(Post, self).save(*args, **kwargs)

        if new:
            self.topic.updated = now
            self.topic.forum.updated = now
        # If post is topic head and moderated, moderate topic too
        if self.topic.head == self and self.on_moderation == False and self.topic.on_moderation == True:
            self.topic.on_moderation = False
        self.topic.update_counters()
        self.topic.forum.update_counters()

    def get_absolute_url(self):
        return reverse('pybb:post', kwargs={'pk': self.id})

    def delete(self, *args, **kwargs):
        self_id = self.id
        head_post_id = self.topic.posts.order_by('created')[0].id

        if self_id == head_post_id:
            self.topic.delete()
        else:
            super(Post, self).delete(*args, **kwargs)
            self.topic.update_counters()

        self.topic.forum.update_counters()

    def get_parents(self):
        """
        Used in templates for breadcrumb building
        """
        return self.topic.forum.category, self.topic.forum, self.topic,
Exemple #9
0
class UserIP(models.Model):
  user = models.ForeignKey(User, blank=True, null=True)
  ip = models.IPAddressField(unique=True)
  
  def __unicode__(self):
    return "%s [%s]" % (self.user.username, self.ip)
class Migration(migrations.Migration):

    dependencies = [
        ('user_profile', '0001_initial'),
        ('service', '0001_initial'),
        ('organization', '0001_initial'),
        ('device', '0001_initial'),
    ]

    operations = [
        migrations.CreateModel(
            name='Antenna',
            fields=[
                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
                ('name', models.CharField(unique=True, max_length=250, verbose_name=b'Antenna Name')),
                ('alias', models.CharField(max_length=250, verbose_name=b'Antenna Alias')),
                ('antenna_type', models.CharField(max_length=100, null=True, verbose_name=b'Antenna Type', blank=True)),
                ('height', models.FloatField(help_text=b'(mtr) Enter a number.', null=True, verbose_name=b'Antenna Height', blank=True)),
                ('polarization', models.CharField(max_length=50, null=True, verbose_name=b'Polarization', blank=True)),
                ('tilt', models.FloatField(help_text=b'Enter a number.', null=True, verbose_name=b'Tilt', blank=True)),
                ('gain', models.FloatField(help_text=b'(dBi) Enter a number.', null=True, verbose_name=b'Gain', blank=True)),
                ('mount_type', models.CharField(max_length=100, null=True, verbose_name=b'Mount Type', blank=True)),
                ('beam_width', models.FloatField(help_text=b'Enter a number.', null=True, verbose_name=b'Beam Width', blank=True)),
                ('azimuth_angle', models.FloatField(help_text=b'Enter a number.', null=True, verbose_name=b'Azimuth Angle', blank=True)),
                ('reflector', models.CharField(max_length=100, null=True, verbose_name=b'Lens/Reflector', blank=True)),
                ('splitter_installed', models.CharField(max_length=4, null=True, verbose_name=b'Splitter Installed', blank=True)),
                ('sync_splitter_used', models.CharField(max_length=4, null=True, verbose_name=b'Sync Splitter User', blank=True)),
                ('make_of_antenna', models.CharField(max_length=40, null=True, verbose_name=b'Make Of Antenna', blank=True)),
                ('description', models.TextField(null=True, verbose_name=b'Description', blank=True)),
                ('organization', models.ForeignKey(default=inventory.models.get_default_org, to='organization.Organization')),
            ],
        ),
        migrations.CreateModel(
            name='Backhaul',
            fields=[
                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
                ('name', models.CharField(unique=True, max_length=250, verbose_name=b'Backhaul Name')),
                ('alias', models.CharField(max_length=250, verbose_name=b'Backhaul Alias')),
                ('bh_port_name', models.CharField(max_length=40, null=True, verbose_name=b' BH Port Name', blank=True)),
                ('bh_port', models.IntegerField(null=True, verbose_name=b'BH Port', blank=True)),
                ('bh_type', models.CharField(max_length=250, null=True, verbose_name=b'BH Type', blank=True)),
                ('switch_port_name', models.CharField(max_length=40, null=True, verbose_name=b'Switch Port Name', blank=True)),
                ('switch_port', models.IntegerField(null=True, verbose_name=b'Switch Port', blank=True)),
                ('pop_port_name', models.CharField(max_length=40, null=True, verbose_name=b'POP Port Name', blank=True)),
                ('pop_port', models.IntegerField(null=True, verbose_name=b'POP Port', blank=True)),
                ('aggregator_port_name', models.CharField(max_length=40, null=True, verbose_name=b'Aggregator Port Name', blank=True)),
                ('aggregator_port', models.IntegerField(null=True, verbose_name=b'Aggregator Port', blank=True)),
                ('pe_hostname', models.CharField(max_length=250, null=True, verbose_name=b'PE Hostname', blank=True)),
                ('pe_ip', models.IPAddressField(null=True, verbose_name=b'PE IP Address', blank=True)),
                ('bh_connectivity', models.CharField(max_length=40, null=True, verbose_name=b'BH Connectivity', blank=True)),
                ('bh_circuit_id', models.CharField(max_length=250, null=True, verbose_name=b'BH Circuit ID', blank=True)),
                ('bh_capacity', models.IntegerField(help_text=b'Enter a number.', null=True, verbose_name=b'BH Capacity', blank=True)),
                ('ttsl_circuit_id', models.CharField(max_length=250, null=True, verbose_name=b'TTSL Circuit ID', blank=True)),
                ('dr_site', models.CharField(max_length=150, null=True, verbose_name=b'DR Site', blank=True)),
                ('description', models.TextField(null=True, verbose_name=b'Description', blank=True)),
                ('aggregator', models.ForeignKey(related_name='backhaul_aggregator', on_delete=django.db.models.deletion.SET_NULL, blank=True, to='device.Device', null=True)),
                ('bh_configured_on', models.ForeignKey(related_name='backhaul', on_delete=django.db.models.deletion.SET_NULL, blank=True, to='device.Device', null=True)),
                ('bh_switch', models.ForeignKey(related_name='backhaul_switch', on_delete=django.db.models.deletion.SET_NULL, blank=True, to='device.Device', null=True)),
                ('organization', models.ForeignKey(default=inventory.models.get_default_org, to='organization.Organization')),
                ('pop', models.ForeignKey(related_name='backhaul_pop', on_delete=django.db.models.deletion.SET_NULL, blank=True, to='device.Device', null=True)),
            ],
        ),
        migrations.CreateModel(
            name='BaseStation',
            fields=[
                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
                ('name', models.CharField(unique=True, max_length=250, verbose_name=b'Name')),
                ('alias', models.CharField(max_length=250, verbose_name=b'Alias')),
                ('bs_site_id', models.CharField(max_length=250, null=True, verbose_name=b'BS Site ID', blank=True)),
                ('bs_site_type', models.CharField(max_length=100, null=True, verbose_name=b'BS Site Type', blank=True)),
                ('bh_port_name', models.CharField(max_length=40, null=True, verbose_name=b' BH Port Name', blank=True)),
                ('bh_port', models.IntegerField(null=True, verbose_name=b'BH Port', blank=True)),
                ('bh_capacity', models.IntegerField(help_text=b'Enter a number.', null=True, verbose_name=b'BH Capacity', blank=True)),
                ('bs_type', models.CharField(max_length=40, null=True, verbose_name=b'BS Type', blank=True)),
                ('bh_bso', models.CharField(max_length=40, null=True, verbose_name=b'BH BSO', blank=True)),
                ('hssu_used', models.CharField(max_length=40, null=True, verbose_name=b'HSSU Used', blank=True)),
                ('hssu_port', models.CharField(max_length=40, null=True, verbose_name=b'HSSU Port', blank=True)),
                ('latitude', models.FloatField(null=True, verbose_name=b'Latitude', blank=True)),
                ('longitude', models.FloatField(null=True, verbose_name=b'Longitude', blank=True)),
                ('infra_provider', models.CharField(max_length=100, null=True, verbose_name=b'Infra Provider', blank=True)),
                ('gps_type', models.CharField(max_length=100, null=True, verbose_name=b'GPS Type', blank=True)),
                ('building_height', models.FloatField(help_text=b'(mtr) Enter a number.', null=True, verbose_name=b'Building Height', blank=True)),
                ('tower_height', models.FloatField(help_text=b'(mtr) Enter a number.', null=True, verbose_name=b'Tower Height', blank=True)),
                ('address', models.TextField(null=True, verbose_name=b'Address', blank=True)),
                ('maintenance_status', models.CharField(max_length=250, null=True, verbose_name=b'Maintenance Status', blank=True)),
                ('provisioning_status', models.CharField(max_length=250, null=True, verbose_name=b'Provisioning Status', blank=True)),
                ('tag1', models.CharField(max_length=60, null=True, verbose_name=b'Tag 1', blank=True)),
                ('tag2', models.CharField(max_length=60, null=True, verbose_name=b'Tag 2', blank=True)),
                ('description', models.TextField(null=True, verbose_name=b'Description', blank=True)),
                ('backhaul', models.ForeignKey(on_delete=django.db.models.deletion.SET_NULL, default=None, blank=True, to='inventory.Backhaul', null=True)),
                ('bs_switch', models.ForeignKey(related_name='bs_switch', blank=True, to='device.Device', null=True)),
                ('city', models.ForeignKey(blank=True, to='device.City', null=True)),
                ('country', models.ForeignKey(blank=True, to='device.Country', null=True)),
                ('organization', models.ForeignKey(default=inventory.models.get_default_org, to='organization.Organization')),
                ('state', models.ForeignKey(blank=True, to='device.State', null=True)),
            ],
            options={
                'ordering': ['city', 'state'],
            },
        ),
        migrations.CreateModel(
            name='Circuit',
            fields=[
                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
                ('name', models.CharField(unique=True, max_length=250, verbose_name=b'Name')),
                ('alias', models.CharField(max_length=250, verbose_name=b'Alias')),
                ('circuit_type', models.CharField(max_length=250, null=True, verbose_name=b'Type', blank=True)),
                ('circuit_id', models.CharField(max_length=250, null=True, verbose_name=b'Circuit ID', blank=True)),
                ('qos_bandwidth', models.FloatField(help_text=b'(kbps) Enter a number.', null=True, verbose_name=b'QOS(BW)', blank=True)),
                ('dl_rssi_during_acceptance', models.CharField(max_length=100, null=True, verbose_name=b'RSSI During Acceptance', blank=True)),
                ('dl_cinr_during_acceptance', models.CharField(max_length=100, null=True, verbose_name=b'CINR During Acceptance', blank=True)),
                ('jitter_value_during_acceptance', models.CharField(max_length=100, null=True, verbose_name=b'Jitter Value During Acceptance', blank=True)),
                ('throughput_during_acceptance', models.CharField(max_length=100, null=True, verbose_name=b'Throughput During Acceptance', blank=True)),
                ('date_of_acceptance', models.DateField(null=True, verbose_name=b'Date of Acceptance', blank=True)),
                ('description', models.TextField(null=True, verbose_name=b'Description', blank=True)),
            ],
        ),
        migrations.CreateModel(
            name='CircuitL2Report',
            fields=[
                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
                ('name', models.CharField(unique=True, max_length=250, verbose_name=b'Name')),
                ('file_name', models.FileField(max_length=512, upload_to=inventory.models.uploaded_report_name)),
                ('added_on', models.DateTimeField(auto_now_add=True, verbose_name=b'Added On', null=True)),
                ('type_id', models.IntegerField(verbose_name=b'Type ID')),
                ('is_public', models.BooleanField(default=True, verbose_name=b'Is Public')),
                ('report_type', models.CharField(max_length=15, verbose_name=b'Type')),
                ('user_id', models.ForeignKey(to='user_profile.UserProfile')),
            ],
        ),
        migrations.CreateModel(
            name='Customer',
            fields=[
                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
                ('name', models.CharField(unique=True, max_length=250, verbose_name=b'Name')),
                ('alias', models.CharField(max_length=250, verbose_name=b'Alias')),
                ('address', models.TextField(null=True, verbose_name=b'Address', blank=True)),
                ('description', models.TextField(null=True, verbose_name=b'Description', blank=True)),
                ('organization', models.ForeignKey(default=inventory.models.get_default_org, to='organization.Organization')),
            ],
        ),
        migrations.CreateModel(
            name='GISExcelDownload',
            fields=[
                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
                ('file_path', models.CharField(max_length=250, null=True, verbose_name=b'Inventory File', blank=True)),
                ('status', models.IntegerField(null=True, verbose_name=b'Status', blank=True)),
                ('base_stations', models.CharField(max_length=250, null=True, verbose_name=b'Base Stations', blank=True)),
                ('description', models.TextField(null=True, verbose_name=b'Description', blank=True)),
                ('downloaded_by', models.CharField(max_length=100, null=True, verbose_name=b'Downloaded By', blank=True)),
                ('added_on', models.DateTimeField(null=True, verbose_name=b'Added On', blank=True)),
                ('modified_on', models.DateTimeField(null=True, verbose_name=b'Modified On', blank=True)),
            ],
        ),
        migrations.CreateModel(
            name='GISInventoryBulkImport',
            fields=[
                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
                ('original_filename', models.CharField(max_length=250, null=True, verbose_name=b'Inventory', blank=True)),
                ('valid_filename', models.CharField(max_length=250, null=True, verbose_name=b'Valid', blank=True)),
                ('invalid_filename', models.CharField(max_length=250, null=True, verbose_name=b'Invalid', blank=True)),
                ('status', models.IntegerField(null=True, verbose_name=b'Status', blank=True)),
                ('sheet_name', models.CharField(max_length=100, null=True, verbose_name=b'Sheet Name', blank=True)),
                ('technology', models.CharField(max_length=40, null=True, verbose_name=b'Technology', blank=True)),
                ('upload_status', models.IntegerField(null=True, verbose_name=b'Upload Status', blank=True)),
                ('description', models.TextField(null=True, verbose_name=b'Description', blank=True)),
                ('uploaded_by', models.CharField(max_length=100, null=True, verbose_name=b'Uploaded By', blank=True)),
                ('added_on', models.DateTimeField(null=True, verbose_name=b'Added On', blank=True)),
                ('modified_on', models.DateTimeField(null=True, verbose_name=b'Modified On', blank=True)),
            ],
        ),
        migrations.CreateModel(
            name='IconSettings',
            fields=[
                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
                ('name', models.CharField(unique=True, max_length=250, verbose_name=b'Name')),
                ('alias', models.CharField(max_length=250, verbose_name=b'Alias')),
                ('upload_image', models.ImageField(upload_to=inventory.models.uploaded_file_name)),
            ],
        ),
        migrations.CreateModel(
            name='LivePollingSettings',
            fields=[
                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
                ('name', models.CharField(unique=True, max_length=250, verbose_name=b'Name')),
                ('alias', models.CharField(max_length=250, verbose_name=b'Alias')),
                ('data_source', models.ForeignKey(to='service.ServiceDataSource')),
                ('service', models.ForeignKey(to='service.Service')),
                ('technology', models.ForeignKey(to='device.DeviceTechnology')),
            ],
        ),
        migrations.CreateModel(
            name='PingThematicSettings',
            fields=[
                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
                ('name', models.CharField(unique=True, max_length=250, verbose_name=b'Name')),
                ('alias', models.CharField(max_length=250, verbose_name=b'Alias')),
                ('service', models.CharField(max_length=250, verbose_name=b'Service')),
                ('data_source', models.CharField(max_length=250, verbose_name=b'Data Source')),
                ('range1_start', models.CharField(max_length=20, null=True, verbose_name=b'Range1 Start', blank=True)),
                ('range1_end', models.CharField(max_length=20, null=True, verbose_name=b'Range1 End', blank=True)),
                ('range2_start', models.CharField(max_length=20, null=True, verbose_name=b'Range2 Start', blank=True)),
                ('range2_end', models.CharField(max_length=20, null=True, verbose_name=b'Range2 End', blank=True)),
                ('range3_start', models.CharField(max_length=20, null=True, verbose_name=b'Range3 Start', blank=True)),
                ('range3_end', models.CharField(max_length=20, null=True, verbose_name=b'Range3 End', blank=True)),
                ('range4_start', models.CharField(max_length=20, null=True, verbose_name=b'Range4 Start', blank=True)),
                ('range4_end', models.CharField(max_length=20, null=True, verbose_name=b'Range4 End', blank=True)),
                ('range5_start', models.CharField(max_length=20, null=True, verbose_name=b'Range5 Start', blank=True)),
                ('range5_end', models.CharField(max_length=20, null=True, verbose_name=b'Range5 End', blank=True)),
                ('range6_start', models.CharField(max_length=20, null=True, verbose_name=b'Range6 Start', blank=True)),
                ('range6_end', models.CharField(max_length=20, null=True, verbose_name=b'Range6 End', blank=True)),
                ('range7_start', models.CharField(max_length=20, null=True, verbose_name=b'Range7 Start', blank=True)),
                ('range7_end', models.CharField(max_length=20, null=True, verbose_name=b'Range7 End', blank=True)),
                ('range8_start', models.CharField(max_length=20, null=True, verbose_name=b'Range8 Start', blank=True)),
                ('range8_end', models.CharField(max_length=20, null=True, verbose_name=b'Range8 End', blank=True)),
                ('range9_start', models.CharField(max_length=20, null=True, verbose_name=b'Range9 Start', blank=True)),
                ('range9_end', models.CharField(max_length=20, null=True, verbose_name=b'Range9 End', blank=True)),
                ('range10_start', models.CharField(max_length=20, null=True, verbose_name=b'Range10 Start', blank=True)),
                ('range10_end', models.CharField(max_length=20, null=True, verbose_name=b'Range10 End', blank=True)),
                ('icon_settings', models.TextField(default=b'NULL')),
                ('is_global', models.BooleanField(default=False, verbose_name=b'Global Setting')),
                ('technology', models.ForeignKey(to='device.DeviceTechnology')),
            ],
        ),
        migrations.CreateModel(
            name='Sector',
            fields=[
                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
                ('name', models.CharField(unique=True, max_length=250, verbose_name=b'Name')),
                ('alias', models.CharField(max_length=250, verbose_name=b'Alias')),
                ('sector_id', models.CharField(max_length=250, null=True, verbose_name=b'Sector ID', blank=True)),
                ('dr_site', models.CharField(max_length=150, null=True, verbose_name=b'DR Site', blank=True)),
                ('mrc', models.CharField(max_length=4, null=True, verbose_name=b'MRC', blank=True)),
                ('tx_power', models.FloatField(help_text=b'(dB) Enter a number.', null=True, verbose_name=b'TX Power', blank=True)),
                ('rx_power', models.FloatField(help_text=b'(dB) Enter a number.', null=True, verbose_name=b'RX Power', blank=True)),
                ('rf_bandwidth', models.FloatField(help_text=b'(kbps) Enter a number.', max_length=250, null=True, verbose_name=b'RF Bandwidth', blank=True)),
                ('frame_length', models.FloatField(help_text=b'(mtr) Enter a number.', null=True, verbose_name=b'Frame Length', blank=True)),
                ('cell_radius', models.FloatField(help_text=b'(mtr) Enter a number.', null=True, verbose_name=b'Cell Radius', blank=True)),
                ('planned_frequency', models.CharField(max_length=250, null=True, verbose_name=b'Planned Frequency', blank=True)),
                ('modulation', models.CharField(max_length=250, null=True, verbose_name=b'Modulation', blank=True)),
                ('description', models.TextField(null=True, verbose_name=b'Description', blank=True)),
                ('antenna', models.ForeignKey(related_name='antenna', on_delete=django.db.models.deletion.SET_NULL, blank=True, to='inventory.Antenna', null=True)),
                ('base_station', models.ForeignKey(related_name='sector', on_delete=django.db.models.deletion.SET_NULL, blank=True, to='inventory.BaseStation', null=True)),
                ('bs_technology', models.ForeignKey(blank=True, to='device.DeviceTechnology', null=True)),
                ('dr_configured_on', models.ForeignKey(related_name='dr_configured_on', blank=True, to='device.Device', max_length=250, null=True)),
                ('frequency', models.ForeignKey(blank=True, to='device.DeviceFrequency', null=True)),
                ('organization', models.ForeignKey(default=inventory.models.get_default_org, to='organization.Organization')),
                ('sector_configured_on', models.ForeignKey(related_name='sector_configured_on', on_delete=django.db.models.deletion.SET_NULL, to='device.Device', max_length=250, null=True)),
                ('sector_configured_on_port', models.ForeignKey(blank=True, to='device.DevicePort', null=True)),
            ],
        ),
        migrations.CreateModel(
            name='SubStation',
            fields=[
                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
                ('name', models.CharField(unique=True, max_length=250, verbose_name=b'Name')),
                ('alias', models.CharField(max_length=250, verbose_name=b'Alias')),
                ('version', models.CharField(max_length=40, null=True, verbose_name=b'Version', blank=True)),
                ('serial_no', models.CharField(max_length=250, null=True, verbose_name=b'Serial No.', blank=True)),
                ('building_height', models.FloatField(help_text=b'(mtr) Enter a number.', null=True, verbose_name=b'Building Height', blank=True)),
                ('tower_height', models.FloatField(help_text=b'(mtr) Enter a number.', null=True, verbose_name=b'Tower Height', blank=True)),
                ('ethernet_extender', models.CharField(max_length=250, null=True, verbose_name=b'Ethernet Extender', blank=True)),
                ('cable_length', models.FloatField(help_text=b'(mtr) Enter a number.', null=True, verbose_name=b'Cable Length', blank=True)),
                ('latitude', models.FloatField(null=True, verbose_name=b'Latitude', blank=True)),
                ('longitude', models.FloatField(null=True, verbose_name=b'Longitude', blank=True)),
                ('mac_address', models.CharField(max_length=100, null=True, verbose_name=b'MAC Address', blank=True)),
                ('address', models.TextField(null=True, verbose_name=b'Address', blank=True)),
                ('description', models.TextField(null=True, verbose_name=b'Description', blank=True)),
                ('antenna', models.ForeignKey(on_delete=django.db.models.deletion.SET_NULL, blank=True, to='inventory.Antenna', null=True)),
                ('city', models.ForeignKey(blank=True, to='device.City', null=True)),
                ('country', models.ForeignKey(blank=True, to='device.Country', null=True)),
                ('device', models.ForeignKey(on_delete=django.db.models.deletion.SET_NULL, to='device.Device', null=True)),
                ('organization', models.ForeignKey(default=inventory.models.get_default_org, to='organization.Organization')),
                ('state', models.ForeignKey(blank=True, to='device.State', null=True)),
            ],
        ),
        migrations.CreateModel(
            name='ThematicSettings',
            fields=[
                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
                ('name', models.CharField(unique=True, max_length=250, verbose_name=b'Name')),
                ('alias', models.CharField(max_length=250, verbose_name=b'Alias')),
                ('icon_settings', models.TextField(default=b'NULL')),
                ('is_global', models.BooleanField(default=False, verbose_name=b'Global Setting')),
            ],
        ),
        migrations.CreateModel(
            name='ThresholdConfiguration',
            fields=[
                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
                ('name', models.CharField(unique=True, max_length=250, verbose_name=b'Name')),
                ('alias', models.CharField(max_length=250, verbose_name=b'Alias')),
                ('service_type', models.CharField(default=b'INT', max_length=3, verbose_name=b'Service Type', choices=[(b'INT', b'Numeric'), (b'STR', b'String')])),
                ('range1_start', models.CharField(max_length=20, null=True, verbose_name=b'Range1 Start', blank=True)),
                ('range1_end', models.CharField(max_length=20, null=True, verbose_name=b'Range1 End', blank=True)),
                ('range2_start', models.CharField(max_length=20, null=True, verbose_name=b'Range2 Start', blank=True)),
                ('range2_end', models.CharField(max_length=20, null=True, verbose_name=b'Range2 End', blank=True)),
                ('range3_start', models.CharField(max_length=20, null=True, verbose_name=b'Range3 Start', blank=True)),
                ('range3_end', models.CharField(max_length=20, null=True, verbose_name=b'Range3 End', blank=True)),
                ('range4_start', models.CharField(max_length=20, null=True, verbose_name=b'Range4 Start', blank=True)),
                ('range4_end', models.CharField(max_length=20, null=True, verbose_name=b'Range4 End', blank=True)),
                ('range5_start', models.CharField(max_length=20, null=True, verbose_name=b'Range5 Start', blank=True)),
                ('range5_end', models.CharField(max_length=20, null=True, verbose_name=b'Range5 End', blank=True)),
                ('range6_start', models.CharField(max_length=20, null=True, verbose_name=b'Range6 Start', blank=True)),
                ('range6_end', models.CharField(max_length=20, null=True, verbose_name=b'Range6 End', blank=True)),
                ('range7_start', models.CharField(max_length=20, null=True, verbose_name=b'Range7 Start', blank=True)),
                ('range7_end', models.CharField(max_length=20, null=True, verbose_name=b'Range7 End', blank=True)),
                ('range8_start', models.CharField(max_length=20, null=True, verbose_name=b'Range8 Start', blank=True)),
                ('range8_end', models.CharField(max_length=20, null=True, verbose_name=b'Range8 End', blank=True)),
                ('range9_start', models.CharField(max_length=20, null=True, verbose_name=b'Range9 Start', blank=True)),
                ('range9_end', models.CharField(max_length=20, null=True, verbose_name=b'Range9 End', blank=True)),
                ('range10_start', models.CharField(max_length=20, null=True, verbose_name=b'Range10 Start', blank=True)),
                ('range10_end', models.CharField(max_length=20, null=True, verbose_name=b'Range10 End', blank=True)),
                ('live_polling_template', models.ForeignKey(to='inventory.LivePollingSettings')),
            ],
        ),
        migrations.CreateModel(
            name='UserPingThematicSettings',
            fields=[
                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
                ('thematic_technology', models.ForeignKey(to='device.DeviceTechnology', null=True)),
                ('thematic_template', models.ForeignKey(to='inventory.PingThematicSettings')),
                ('user_profile', models.ForeignKey(to='user_profile.UserProfile')),
            ],
        ),
        migrations.CreateModel(
            name='UserThematicSettings',
            fields=[
                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
                ('thematic_technology', models.ForeignKey(to='device.DeviceTechnology', null=True)),
                ('thematic_template', models.ForeignKey(to='inventory.ThematicSettings')),
                ('user_profile', models.ForeignKey(to='user_profile.UserProfile')),
            ],
        ),
        migrations.AddField(
            model_name='thematicsettings',
            name='threshold_template',
            field=models.ForeignKey(to='inventory.ThresholdConfiguration'),
        ),
        migrations.AddField(
            model_name='thematicsettings',
            name='user_profile',
            field=models.ManyToManyField(to='user_profile.UserProfile', through='inventory.UserThematicSettings'),
        ),
        migrations.AddField(
            model_name='pingthematicsettings',
            name='user_profile',
            field=models.ManyToManyField(to='user_profile.UserProfile', through='inventory.UserPingThematicSettings'),
        ),
        migrations.AddField(
            model_name='circuit',
            name='customer',
            field=models.ForeignKey(on_delete=django.db.models.deletion.SET_NULL, blank=True, to='inventory.Customer', null=True),
        ),
        migrations.AddField(
            model_name='circuit',
            name='organization',
            field=models.ForeignKey(default=inventory.models.get_default_org, to='organization.Organization'),
        ),
        migrations.AddField(
            model_name='circuit',
            name='sector',
            field=models.ForeignKey(on_delete=django.db.models.deletion.SET_NULL, blank=True, to='inventory.Sector', null=True),
        ),
        migrations.AddField(
            model_name='circuit',
            name='sub_station',
            field=models.ForeignKey(on_delete=django.db.models.deletion.SET_NULL, blank=True, to='inventory.SubStation', null=True),
        ),
    ]
Exemple #11
0
class Request(models.Model):
    # Response infomation
    response = models.SmallIntegerField(_('response'),
                                        choices=HTTP_STATUS_CODES,
                                        default=200)

    # Request infomation
    method = models.CharField(_('method'), default='GET', max_length=7)
    path = models.CharField(_('path'), max_length=255)
    time = models.DateTimeField(_('time'), auto_now_add=True)

    is_secure = models.BooleanField(_('is secure'), default=False)
    is_ajax = models.BooleanField(
        _('is ajax'),
        default=False,
        help_text=_('Wheather this request was used via javascript.'))

    # User infomation
    ip = models.IPAddressField(_('ip address'))
    user = models.ForeignKey(AUTH_USER_MODEL,
                             blank=True,
                             null=True,
                             verbose_name=_('user'))
    referer = models.URLField(_('referer'),
                              max_length=255,
                              blank=True,
                              null=True)
    user_agent = models.CharField(_('user agent'),
                                  max_length=255,
                                  blank=True,
                                  null=True)
    language = models.CharField(_('language'),
                                max_length=255,
                                blank=True,
                                null=True)

    objects = RequestManager()

    class Meta:
        verbose_name = _('request')
        verbose_name_plural = _('requests')
        ordering = ('-time', )

    def __unicode__(self):
        return u'[%s] %s %s %s' % (self.time, self.method, self.path,
                                   self.response)

    def get_user(self):
        return get_user_model().objects.get(pk=self.user_id)

    def from_http_request(self, request, response=None, commit=True):
        # Request infomation
        self.method = request.method
        self.path = request.path[:255]

        self.is_secure = request.is_secure()
        self.is_ajax = request.is_ajax()

        # User infomation
        self.ip = request.META.get('REMOTE_ADDR', '')
        self.referer = request.META.get('HTTP_REFERER', '')[:255]
        self.user_agent = request.META.get('HTTP_USER_AGENT', '')[:255]
        self.language = request.META.get('HTTP_ACCEPT_LANGUAGE', '')[:255]

        if getattr(request, 'user', False):
            if request.user.is_authenticated():
                self.user = request.user

        if response:
            self.response = response.status_code

            if (response.status_code == 301) or (response.status_code == 302):
                self.redirect = response['Location']

        if commit:
            self.save()

    #@property
    def browser(self):
        if not self.user_agent:
            return

        if not hasattr(self, '_browser'):
            self._browser = browsers.resolve(self.user_agent)
        return self._browser[0]

    browser = property(browser)

    #@property
    def keywords(self):
        if not self.referer:
            return

        if not hasattr(self, '_keywords'):
            self._keywords = engines.resolve(self.referer)
        if self._keywords:
            return ' '.join(self._keywords[1]['keywords'].split('+'))

    keywords = property(keywords)

    #@property
    def hostname(self):
        try:
            return gethostbyaddr(self.ip)[0]
        except Exception:  # socket.gaierror, socket.herror, etc
            return self.ip

    hostname = property(hostname)

    def save(self, *args, **kwargs):
        if not request_settings.REQUEST_LOG_IP:
            self.ip = request_settings.REQUEST_IP_DUMMY
        elif request_settings.REQUEST_ANONYMOUS_IP:
            parts = self.ip.split('.')[0:-1]
            parts.append('1')
            self.ip = '.'.join(parts)
        if not request_settings.REQUEST_LOG_USER:
            self.user = None

        super(Request, self).save(*args, **kwargs)
Exemple #12
0
class Transaction(models.Model):
    ip_address = models.IPAddressField()
    sent_address = models.CharField(max_length=50)
    tx_time = models.DateTimeField()
Exemple #13
0
class Log_Page_Visite(models.Model):
    Ip = models.IPAddressField()
    Page = models.OneToOneField('Engine.Page')
    Date = models.DateField()
Exemple #14
0
class Migration(migrations.Migration):

    dependencies = []

    operations = [
        migrations.CreateModel(
            name='Category',
            fields=[
                ('id',
                 models.AutoField(verbose_name='ID',
                                  serialize=False,
                                  auto_created=True,
                                  primary_key=True)),
                ('catname', models.CharField(unique=True, max_length=128)),
                ('port', models.IntegerField()),
            ],
            options={},
            bases=(models.Model, ),
        ),
        migrations.CreateModel(
            name='Group',
            fields=[
                ('id',
                 models.AutoField(verbose_name='ID',
                                  serialize=False,
                                  auto_created=True,
                                  primary_key=True)),
                ('gname', models.CharField(unique=True, max_length=128)),
                ('description', models.TextField(max_length=1024, blank=True)),
            ],
            options={},
            bases=(models.Model, ),
        ),
        migrations.CreateModel(
            name='Host',
            fields=[
                ('id',
                 models.AutoField(verbose_name='ID',
                                  serialize=False,
                                  auto_created=True,
                                  primary_key=True)),
                ('ipaddr', models.IPAddressField(unique=True)),
                ('hostname',
                 models.CharField(max_length=128, null=True, blank=True)),
                ('user', models.CharField(default=b'root', max_length=128)),
                ('password', models.CharField(max_length=256)),
                ('is_sudo', models.BooleanField(default=False)),
                ('cpuinfo',
                 models.CharField(max_length=256, null=True, blank=True)),
                ('meminfo',
                 models.IntegerField(max_length=32, null=True, blank=True)),
                ('device',
                 models.CharField(max_length=256, null=True, blank=True)),
                ('wip', models.IPAddressField(null=True, blank=True)),
                ('category',
                 models.ManyToManyField(to='Hosts.Category', null=True)),
                ('group', models.ForeignKey(to='Hosts.Group')),
            ],
            options={},
            bases=(models.Model, ),
        ),
    ]
Exemple #15
0
class Migration(migrations.Migration):

    dependencies = [
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
    ]

    operations = [
        migrations.CreateModel(
            name='Attachment',
            fields=[
                ('id',
                 models.AutoField(verbose_name='ID',
                                  serialize=False,
                                  auto_created=True,
                                  primary_key=True)),
                ('size', models.IntegerField(verbose_name='Size')),
                ('file',
                 models.FileField(
                     upload_to=tendenci.apps.forums.util.FilePathGenerator(
                         to='pybb_upload/attachments'),
                     verbose_name='File')),
            ],
            options={
                'verbose_name': 'Attachment',
                'verbose_name_plural': 'Attachments',
            },
            bases=(models.Model, ),
        ),
        migrations.CreateModel(
            name='Category',
            fields=[
                ('id',
                 models.AutoField(verbose_name='ID',
                                  serialize=False,
                                  auto_created=True,
                                  primary_key=True)),
                ('name', models.CharField(max_length=80, verbose_name='Name')),
                ('position',
                 models.IntegerField(default=0,
                                     verbose_name='Position',
                                     blank=True)),
                ('hidden',
                 models.BooleanField(
                     default=False,
                     help_text=
                     'If checked, this category will be visible only for staff',
                     verbose_name='Hidden')),
            ],
            options={
                'ordering': ['position'],
                'verbose_name': 'Category',
                'verbose_name_plural': 'Categories',
            },
            bases=(models.Model, ),
        ),
        migrations.CreateModel(
            name='Forum',
            fields=[
                ('id',
                 models.AutoField(verbose_name='ID',
                                  serialize=False,
                                  auto_created=True,
                                  primary_key=True)),
                ('name', models.CharField(max_length=80, verbose_name='Name')),
                ('position',
                 models.IntegerField(default=0,
                                     verbose_name='Position',
                                     blank=True)),
                ('description',
                 models.TextField(verbose_name='Description', blank=True)),
                ('updated',
                 models.DateTimeField(null=True,
                                      verbose_name='Updated',
                                      blank=True)),
                ('post_count',
                 models.IntegerField(default=0,
                                     verbose_name='Post count',
                                     blank=True)),
                ('topic_count',
                 models.IntegerField(default=0,
                                     verbose_name='Topic count',
                                     blank=True)),
                ('hidden',
                 models.BooleanField(default=False, verbose_name='Hidden')),
                ('headline',
                 models.TextField(null=True,
                                  verbose_name='Headline',
                                  blank=True)),
                ('category',
                 models.ForeignKey(
                     related_name='forums',
                     verbose_name='Category',
                     to='forums.Category',
                     on_delete=django.db.models.deletion.CASCADE)),
                ('moderators',
                 models.ManyToManyField(to=settings.AUTH_USER_MODEL,
                                        null=True,
                                        verbose_name='Moderators',
                                        blank=True)),
                ('parent',
                 models.ForeignKey(
                     related_name='child_forums',
                     verbose_name='Parent forum',
                     blank=True,
                     to='forums.Forum',
                     null=True,
                     on_delete=django.db.models.deletion.CASCADE)),
            ],
            options={
                'ordering': ['position'],
                'verbose_name': 'Forum',
                'verbose_name_plural': 'Forums',
            },
            bases=(models.Model, ),
        ),
        migrations.CreateModel(
            name='ForumReadTracker',
            fields=[
                ('id',
                 models.AutoField(verbose_name='ID',
                                  serialize=False,
                                  auto_created=True,
                                  primary_key=True)),
                ('time_stamp', models.DateTimeField(auto_now=True)),
                ('forum',
                 models.ForeignKey(
                     blank=True,
                     to='forums.Forum',
                     null=True,
                     on_delete=django.db.models.deletion.CASCADE)),
                ('user',
                 models.ForeignKey(
                     to=settings.AUTH_USER_MODEL,
                     on_delete=django.db.models.deletion.CASCADE)),
            ],
            options={
                'verbose_name': 'Forum read tracker',
                'verbose_name_plural': 'Forum read trackers',
            },
            bases=(models.Model, ),
        ),
        migrations.CreateModel(
            name='PollAnswer',
            fields=[
                ('id',
                 models.AutoField(verbose_name='ID',
                                  serialize=False,
                                  auto_created=True,
                                  primary_key=True)),
                ('text', models.CharField(max_length=255,
                                          verbose_name='Text')),
            ],
            options={
                'verbose_name': 'Poll answer',
                'verbose_name_plural': 'Polls answers',
            },
            bases=(models.Model, ),
        ),
        migrations.CreateModel(
            name='PollAnswerUser',
            fields=[
                ('id',
                 models.AutoField(verbose_name='ID',
                                  serialize=False,
                                  auto_created=True,
                                  primary_key=True)),
                ('timestamp', models.DateTimeField(auto_now_add=True)),
                ('poll_answer',
                 models.ForeignKey(
                     related_name='users',
                     verbose_name='Poll answer',
                     to='forums.PollAnswer',
                     on_delete=django.db.models.deletion.CASCADE)),
                ('user',
                 models.ForeignKey(
                     related_name='poll_answers',
                     verbose_name='User',
                     to=settings.AUTH_USER_MODEL,
                     on_delete=django.db.models.deletion.CASCADE)),
            ],
            options={
                'verbose_name': 'Poll answer user',
                'verbose_name_plural': 'Polls answers users',
            },
            bases=(models.Model, ),
        ),
        migrations.CreateModel(
            name='Post',
            fields=[
                ('id',
                 models.AutoField(verbose_name='ID',
                                  serialize=False,
                                  auto_created=True,
                                  primary_key=True)),
                ('body', models.TextField(verbose_name='Message')),
                ('body_html', models.TextField(verbose_name='HTML version')),
                ('body_text', models.TextField(verbose_name='Text version')),
                ('created',
                 models.DateTimeField(db_index=True,
                                      verbose_name='Created',
                                      blank=True)),
                ('updated',
                 models.DateTimeField(null=True,
                                      verbose_name='Updated',
                                      blank=True)),
                ('user_ip',
                 models.IPAddressField(default='0.0.0.0',
                                       verbose_name='User IP',
                                       blank=True)),
                ('on_moderation',
                 models.BooleanField(default=False,
                                     verbose_name='On moderation')),
            ],
            options={
                'ordering': ['created'],
                'verbose_name': 'Post',
                'verbose_name_plural': 'Posts',
            },
            bases=(models.Model, ),
        ),
        migrations.CreateModel(
            name='Profile',
            fields=[
                ('id',
                 models.AutoField(verbose_name='ID',
                                  serialize=False,
                                  auto_created=True,
                                  primary_key=True)),
                ('signature',
                 models.TextField(max_length=1024,
                                  verbose_name='Signature',
                                  blank=True)),
                ('signature_html',
                 models.TextField(max_length=1054,
                                  verbose_name='Signature HTML Version',
                                  blank=True)),
                ('time_zone',
                 models.FloatField(default=3.0,
                                   verbose_name='Time zone',
                                   choices=[
                                       (-12.0, '-12'), (-11.0, '-11'),
                                       (-10.0, '-10'), (-9.5, '-09.5'),
                                       (-9.0, '-09'), (-8.5, '-08.5'),
                                       (-8.0, '-08 PST'), (-7.0, '-07 MST'),
                                       (-6.0, '-06 CST'), (-5.0, '-05 EST'),
                                       (-4.0, '-04 AST'), (-3.5, '-03.5'),
                                       (-3.0, '-03 ADT'), (-2.0, '-02'),
                                       (-1.0, '-01'), (0.0, '00 GMT'),
                                       (1.0, '+01 CET'), (2.0, '+02'),
                                       (3.0, '+03'), (3.5, '+03.5'),
                                       (4.0, '+04'), (4.5, '+04.5'),
                                       (5.0, '+05'), (5.5, '+05.5'),
                                       (6.0, '+06'), (6.5, '+06.5'),
                                       (7.0, '+07'), (8.0, '+08'),
                                       (9.0, '+09'), (9.5, '+09.5'),
                                       (10.0, '+10'), (10.5, '+10.5'),
                                       (11.0, '+11'), (11.5, '+11.5'),
                                       (12.0, '+12'), (13.0, '+13'),
                                       (14.0, '+14')
                                   ])),
                ('language',
                 models.CharField(
                     default='en-us',
                     max_length=10,
                     verbose_name='Language',
                     blank=True,
                     choices=[('af', 'Afrikaans'), ('ar', 'Arabic'),
                              ('ast', 'Asturian'), ('az', 'Azerbaijani'),
                              ('bg', 'Bulgarian'), ('be', 'Belarusian'),
                              ('bn', 'Bengali'), ('br', 'Breton'),
                              ('bs', 'Bosnian'), ('ca', 'Catalan'),
                              ('cs', 'Czech'), ('cy', 'Welsh'),
                              ('da', 'Danish'), ('de', 'German'),
                              ('el', 'Greek'), ('en', 'English'),
                              ('en-au', 'Australian English'),
                              ('en-gb', 'British English'),
                              ('eo', 'Esperanto'), ('es', 'Spanish'),
                              ('es-ar', 'Argentinian Spanish'),
                              ('es-mx', 'Mexican Spanish'),
                              ('es-ni', 'Nicaraguan Spanish'),
                              ('es-ve', 'Venezuelan Spanish'),
                              ('et', 'Estonian'), ('eu', 'Basque'),
                              ('fa', 'Persian'), ('fi', 'Finnish'),
                              ('fr', 'French'), ('fy', 'Frisian'),
                              ('ga', 'Irish'), ('gl', 'Galician'),
                              ('he', 'Hebrew'), ('hi', 'Hindi'),
                              ('hr', 'Croatian'), ('hu', 'Hungarian'),
                              ('ia', 'Interlingua'), ('id', 'Indonesian'),
                              ('io', 'Ido'), ('is', 'Icelandic'),
                              ('it', 'Italian'), ('ja', 'Japanese'),
                              ('ka', 'Georgian'), ('kk', 'Kazakh'),
                              ('km', 'Khmer'), ('kn', 'Kannada'),
                              ('ko', 'Korean'), ('lb', 'Luxembourgish'),
                              ('lt', 'Lithuanian'), ('lv', 'Latvian'),
                              ('mk', 'Macedonian'), ('ml', 'Malayalam'),
                              ('mn', 'Mongolian'), ('mr', 'Marathi'),
                              ('my', 'Burmese'), ('nb', 'Norwegian Bokmal'),
                              ('ne', 'Nepali'), ('nl', 'Dutch'),
                              ('nn', 'Norwegian Nynorsk'), ('os', 'Ossetic'),
                              ('pa', 'Punjabi'), ('pl', 'Polish'),
                              ('pt', 'Portuguese'),
                              ('pt-br', 'Brazilian Portuguese'),
                              ('ro', 'Romanian'), ('ru', 'Russian'),
                              ('sk', 'Slovak'), ('sl', 'Slovenian'),
                              ('sq', 'Albanian'), ('sr', 'Serbian'),
                              ('sr-latn', 'Serbian Latin'), ('sv', 'Swedish'),
                              ('sw', 'Swahili'), ('ta', 'Tamil'),
                              ('te', 'Telugu'), ('th', 'Thai'),
                              ('tr', 'Turkish'), ('tt', 'Tatar'),
                              ('udm', 'Udmurt'), ('uk', 'Ukrainian'),
                              ('ur', 'Urdu'), ('vi', 'Vietnamese'),
                              ('zh-cn', 'Simplified Chinese'),
                              ('zh-hans', 'Simplified Chinese'),
                              ('zh-hant', 'Traditional Chinese'),
                              ('zh-tw', 'Traditional Chinese')])),
                ('show_signatures',
                 models.BooleanField(default=True,
                                     verbose_name='Show signatures')),
                ('post_count',
                 models.IntegerField(default=0,
                                     verbose_name='Post count',
                                     blank=True)),
                ('avatar', get_image_field_class()(
                    upload_to=tendenci.apps.forums.util.FilePathGenerator(
                        to='pybb/avatar'),
                    null=True,
                    verbose_name='Avatar',
                    blank=True)),
                ('autosubscribe',
                 models.BooleanField(
                     default=True,
                     help_text=
                     'Automatically subscribe to topics that you answer',
                     verbose_name='Automatically subscribe')),
                ('user',
                 annoying.fields.AutoOneToOneField(related_name='pybb_profile',
                                                   verbose_name='User',
                                                   to=settings.AUTH_USER_MODEL,
                                                   on_delete=models.CASCADE)),
            ],
            options={
                'verbose_name': 'Profile',
                'verbose_name_plural': 'Profiles',
            },
            bases=(models.Model, ),
        ),
        migrations.CreateModel(
            name='Topic',
            fields=[
                ('id',
                 models.AutoField(verbose_name='ID',
                                  serialize=False,
                                  auto_created=True,
                                  primary_key=True)),
                ('name',
                 models.CharField(max_length=255, verbose_name='Subject')),
                ('created',
                 models.DateTimeField(null=True, verbose_name='Created')),
                ('updated',
                 models.DateTimeField(null=True, verbose_name='Updated')),
                ('views',
                 models.IntegerField(default=0,
                                     verbose_name='Views count',
                                     blank=True)),
                ('sticky',
                 models.BooleanField(default=False, verbose_name='Sticky')),
                ('closed',
                 models.BooleanField(default=False, verbose_name='Closed')),
                ('post_count',
                 models.IntegerField(default=0,
                                     verbose_name='Post count',
                                     blank=True)),
                ('on_moderation',
                 models.BooleanField(default=False,
                                     verbose_name='On moderation')),
                ('poll_type',
                 models.IntegerField(default=0,
                                     verbose_name='Poll type',
                                     choices=[(0, 'None'),
                                              (1, 'Single answer'),
                                              (2, 'Multiple answers')])),
                ('poll_question',
                 models.TextField(null=True,
                                  verbose_name='Poll question',
                                  blank=True)),
                ('forum',
                 models.ForeignKey(
                     related_name='topics',
                     verbose_name='Forum',
                     to='forums.Forum',
                     on_delete=django.db.models.deletion.CASCADE)),
            ],
            options={
                'ordering': ['-created'],
                'verbose_name': 'Topic',
                'verbose_name_plural': 'Topics',
            },
            bases=(models.Model, ),
        ),
        migrations.CreateModel(
            name='TopicReadTracker',
            fields=[
                ('id',
                 models.AutoField(verbose_name='ID',
                                  serialize=False,
                                  auto_created=True,
                                  primary_key=True)),
                ('time_stamp', models.DateTimeField(auto_now=True)),
                ('topic',
                 models.ForeignKey(
                     blank=True,
                     to='forums.Topic',
                     null=True,
                     on_delete=django.db.models.deletion.CASCADE)),
                ('user',
                 models.ForeignKey(
                     to=settings.AUTH_USER_MODEL,
                     on_delete=django.db.models.deletion.CASCADE)),
            ],
            options={
                'verbose_name': 'Topic read tracker',
                'verbose_name_plural': 'Topic read trackers',
            },
            bases=(models.Model, ),
        ),
        migrations.AlterUniqueTogether(
            name='topicreadtracker',
            unique_together=set([('user', 'topic')]),
        ),
        migrations.AddField(
            model_name='topic',
            name='readed_by',
            field=models.ManyToManyField(related_name='readed_topics',
                                         through='forums.TopicReadTracker',
                                         to=settings.AUTH_USER_MODEL),
            preserve_default=True,
        ),
        migrations.AddField(
            model_name='topic',
            name='subscribers',
            field=models.ManyToManyField(related_name='subscriptions',
                                         verbose_name='Subscribers',
                                         to=settings.AUTH_USER_MODEL,
                                         blank=True),
            preserve_default=True,
        ),
        migrations.AddField(
            model_name='topic',
            name='user',
            field=models.ForeignKey(
                verbose_name='User',
                to=settings.AUTH_USER_MODEL,
                on_delete=django.db.models.deletion.CASCADE),
            preserve_default=True,
        ),
        migrations.AddField(
            model_name='post',
            name='topic',
            field=models.ForeignKey(
                related_name='posts',
                verbose_name='Topic',
                to='forums.Topic',
                on_delete=django.db.models.deletion.CASCADE),
            preserve_default=True,
        ),
        migrations.AddField(
            model_name='post',
            name='user',
            field=models.ForeignKey(
                related_name='posts',
                verbose_name='User',
                to=settings.AUTH_USER_MODEL,
                on_delete=django.db.models.deletion.CASCADE),
            preserve_default=True,
        ),
        migrations.AlterUniqueTogether(
            name='pollansweruser',
            unique_together=set([('poll_answer', 'user')]),
        ),
        migrations.AddField(
            model_name='pollanswer',
            name='topic',
            field=models.ForeignKey(
                related_name='poll_answers',
                verbose_name='Topic',
                to='forums.Topic',
                on_delete=django.db.models.deletion.CASCADE),
            preserve_default=True,
        ),
        migrations.AlterUniqueTogether(
            name='forumreadtracker',
            unique_together=set([('user', 'forum')]),
        ),
        migrations.AddField(
            model_name='forum',
            name='readed_by',
            field=models.ManyToManyField(related_name='readed_forums',
                                         through='forums.ForumReadTracker',
                                         to=settings.AUTH_USER_MODEL),
            preserve_default=True,
        ),
        migrations.AddField(
            model_name='attachment',
            name='post',
            field=models.ForeignKey(
                related_name='attachments',
                verbose_name='Post',
                to='forums.Post',
                on_delete=django.db.models.deletion.CASCADE),
            preserve_default=True,
        ),
    ]
Exemple #16
0
 def forwards(self, orm):
     
     # Adding model 'PayPalPDT'
     db.create_table('paypal_pdt', (
         ('id', models.AutoField(primary_key=True)),
         ('business', models.CharField(max_length=127, blank=True)),
         ('charset', models.CharField(max_length=32, blank=True)),
         ('custom', models.CharField(max_length=255, blank=True)),
         ('notify_version', models.DecimalField(default=0, null=True, max_digits=64, decimal_places=2, blank=True)),
         ('parent_txn_id', models.CharField("Parent Transaction ID", max_length=19, blank=True)),
         ('receiver_email', models.EmailField(max_length=127, blank=True)),
         ('receiver_id', models.CharField(max_length=127, blank=True)),
         ('residence_country', models.CharField(max_length=2, blank=True)),
         ('test_ipn', models.BooleanField(default=False, blank=True)),
         ('txn_id', models.CharField("Transaction ID", max_length=19, blank=True)),
         ('txn_type', models.CharField("Transaction Type", max_length=128, blank=True)),
         ('verify_sign', models.CharField(max_length=255, blank=True)),
         ('address_country', models.CharField(max_length=64, blank=True)),
         ('address_city', models.CharField(max_length=40, blank=True)),
         ('address_country_code', models.CharField(max_length=64, blank=True)),
         ('address_name', models.CharField(max_length=128, blank=True)),
         ('address_state', models.CharField(max_length=40, blank=True)),
         ('address_status', models.CharField(max_length=11, blank=True)),
         ('address_street', models.CharField(max_length=200, blank=True)),
         ('address_zip', models.CharField(max_length=20, blank=True)),
         ('contact_phone', models.CharField(max_length=20, blank=True)),
         ('first_name', models.CharField(max_length=64, blank=True)),
         ('last_name', models.CharField(max_length=64, blank=True)),
         ('payer_business_name', models.CharField(max_length=127, blank=True)),
         ('payer_email', models.CharField(max_length=127, blank=True)),
         ('payer_id', models.CharField(max_length=13, blank=True)),
         ('auth_amount', models.DecimalField(default=0, null=True, max_digits=64, decimal_places=2, blank=True)),
         ('auth_exp', models.CharField(max_length=28, blank=True)),
         ('auth_id', models.CharField(max_length=19, blank=True)),
         ('auth_status', models.CharField(max_length=9, blank=True)),
         ('exchange_rate', models.DecimalField(default=0, null=True, max_digits=64, decimal_places=16, blank=True)),
         ('invoice', models.CharField(max_length=127, blank=True)),
         ('item_name', models.CharField(max_length=127, blank=True)),
         ('item_number', models.CharField(max_length=127, blank=True)),
         ('mc_currency', models.CharField(default='USD', max_length=32, blank=True)),
         ('mc_fee', models.DecimalField(default=0, null=True, max_digits=64, decimal_places=2, blank=True)),
         ('mc_gross', models.DecimalField(default=0, null=True, max_digits=64, decimal_places=2, blank=True)),
         ('mc_handling', models.DecimalField(default=0, null=True, max_digits=64, decimal_places=2, blank=True)),
         ('mc_shipping', models.DecimalField(default=0, null=True, max_digits=64, decimal_places=2, blank=True)),
         ('memo', models.CharField(max_length=255, blank=True)),
         ('num_cart_items', models.IntegerField(default=0, null=True, blank=True)),
         ('option_name1', models.CharField(max_length=64, blank=True)),
         ('option_name2', models.CharField(max_length=64, blank=True)),
         ('payer_status', models.CharField(max_length=10, blank=True)),
         ('payment_date', models.DateTimeField(null=True, blank=True)),
         ('payment_gross', models.DecimalField(default=0, null=True, max_digits=64, decimal_places=2, blank=True)),
         ('payment_status', models.CharField(max_length=9, blank=True)),
         ('payment_type', models.CharField(max_length=7, blank=True)),
         ('pending_reason', models.CharField(max_length=14, blank=True)),
         ('protection_eligibility', models.CharField(max_length=32, blank=True)),
         ('quantity', models.IntegerField(default=1, null=True, blank=True)),
         ('reason_code', models.CharField(max_length=15, blank=True)),
         ('remaining_settle', models.DecimalField(default=0, null=True, max_digits=64, decimal_places=2, blank=True)),
         ('settle_amount', models.DecimalField(default=0, null=True, max_digits=64, decimal_places=2, blank=True)),
         ('settle_currency', models.CharField(max_length=32, blank=True)),
         ('shipping', models.DecimalField(default=0, null=True, max_digits=64, decimal_places=2, blank=True)),
         ('shipping_method', models.CharField(max_length=255, blank=True)),
         ('tax', models.DecimalField(default=0, null=True, max_digits=64, decimal_places=2, blank=True)),
         ('transaction_entity', models.CharField(max_length=7, blank=True)),
         ('auction_buyer_id', models.CharField(max_length=64, blank=True)),
         ('auction_closing_date', models.DateTimeField(null=True, blank=True)),
         ('auction_multi_item', models.IntegerField(default=0, null=True, blank=True)),
         ('for_auction', models.DecimalField(default=0, null=True, max_digits=64, decimal_places=2, blank=True)),
         ('amount', models.DecimalField(default=0, null=True, max_digits=64, decimal_places=2, blank=True)),
         ('amount_per_cycle', models.DecimalField(default=0, null=True, max_digits=64, decimal_places=2, blank=True)),
         ('initial_payment_amount', models.DecimalField(default=0, null=True, max_digits=64, decimal_places=2, blank=True)),
         ('next_payment_date', models.DateTimeField(null=True, blank=True)),
         ('outstanding_balance', models.DecimalField(default=0, null=True, max_digits=64, decimal_places=2, blank=True)),
         ('payment_cycle', models.CharField(max_length=32, blank=True)),
         ('period_type', models.CharField(max_length=32, blank=True)),
         ('product_name', models.CharField(max_length=128, blank=True)),
         ('product_type', models.CharField(max_length=128, blank=True)),
         ('profile_status', models.CharField(max_length=32, blank=True)),
         ('recurring_payment_id', models.CharField(max_length=128, blank=True)),
         ('rp_invoice_id', models.CharField(max_length=127, blank=True)),
         ('time_created', models.DateTimeField(null=True, blank=True)),
         ('amount1', models.DecimalField(default=0, null=True, max_digits=64, decimal_places=2, blank=True)),
         ('amount2', models.DecimalField(default=0, null=True, max_digits=64, decimal_places=2, blank=True)),
         ('amount3', models.DecimalField(default=0, null=True, max_digits=64, decimal_places=2, blank=True)),
         ('mc_amount1', models.DecimalField(default=0, null=True, max_digits=64, decimal_places=2, blank=True)),
         ('mc_amount2', models.DecimalField(default=0, null=True, max_digits=64, decimal_places=2, blank=True)),
         ('mc_amount3', models.DecimalField(default=0, null=True, max_digits=64, decimal_places=2, blank=True)),
         ('password', models.CharField(max_length=24, blank=True)),
         ('period1', models.CharField(max_length=32, blank=True)),
         ('period2', models.CharField(max_length=32, blank=True)),
         ('period3', models.CharField(max_length=32, blank=True)),
         ('reattempt', models.CharField(max_length=1, blank=True)),
         ('recur_times', models.IntegerField(default=0, null=True, blank=True)),
         ('recurring', models.CharField(max_length=1, blank=True)),
         ('retry_at', models.DateTimeField(null=True, blank=True)),
         ('subscr_date', models.DateTimeField(null=True, blank=True)),
         ('subscr_effective', models.DateTimeField(null=True, blank=True)),
         ('subscr_id', models.CharField(max_length=19, blank=True)),
         ('username', models.CharField(max_length=64, blank=True)),
         ('case_creation_date', models.DateTimeField(null=True, blank=True)),
         ('case_id', models.CharField(max_length=14, blank=True)),
         ('case_type', models.CharField(max_length=24, blank=True)),
         ('receipt_id', models.CharField(max_length=64, blank=True)),
         ('currency_code', models.CharField(default='USD', max_length=32, blank=True)),
         ('handling_amount', models.DecimalField(default=0, null=True, max_digits=64, decimal_places=2, blank=True)),
         ('transaction_subject', models.CharField(max_length=255, blank=True)),
         ('ipaddress', models.IPAddressField(blank=True)),
         ('flag', models.BooleanField(default=False, blank=True)),
         ('flag_code', models.CharField(max_length=16, blank=True)),
         ('flag_info', models.TextField(blank=True)),
         ('query', models.TextField(blank=True)),
         ('response', models.TextField(blank=True)),
         ('created_at', models.DateTimeField(auto_now_add=True)),
         ('updated_at', models.DateTimeField(auto_now=True)),
         ('from_view', models.CharField(max_length=6, null=True, blank=True)),
         ('amt', models.DecimalField(default=0, null=True, max_digits=64, decimal_places=2, blank=True)),
         ('cm', models.CharField(max_length=255, blank=True)),
         ('sig', models.CharField(max_length=255, blank=True)),
         ('tx', models.CharField(max_length=255, blank=True)),
         ('st', models.CharField(max_length=32, blank=True)),
     ))
     db.send_create_signal('pdt', ['PayPalPDT'])
Exemple #17
0
class CustomUser(BaseUser):
    AUTOPLAY_ON_BROWSER = 1
    AUTOPLAY_ON_LANGUAGES = 2
    DONT_AUTOPLAY = 3
    AUTOPLAY_CHOICES = (
        (AUTOPLAY_ON_BROWSER, 
         'Autoplay subtitles based on browser preferred languages'),
        (AUTOPLAY_ON_LANGUAGES, 'Autoplay subtitles in languages I know'),
        (DONT_AUTOPLAY, 'Don\'t autoplay subtitles')
    )
    homepage = models.URLField(verify_exists=False, blank=True)
    preferred_language = models.CharField(
        max_length=16, choices=ALL_LANGUAGES, blank=True)
    picture = S3EnabledImageField(blank=True, upload_to='pictures/')
    valid_email = models.BooleanField(default=False)
    changes_notification = models.BooleanField(default=True)
    follow_new_video = models.BooleanField(default=True)
    biography = models.TextField('Tell us about yourself', blank=True)
    autoplay_preferences = models.IntegerField(
        choices=AUTOPLAY_CHOICES, default=AUTOPLAY_ON_BROWSER)
    award_points = models.IntegerField(default=0)
    last_ip = models.IPAddressField(blank=True, null=True)
    #videos witch are related to user. this is for quicker queries 
    videos = models.ManyToManyField('videos.Video', blank=True)
    
    objects = UserManager()
    
    class Meta:
        verbose_name = 'User'
        
    def __unicode__(self):
        if not self.is_active:
            return ugettext('Retired user')
            
        if self.first_name:
            if self.last_name:
                return self.get_full_name()
            else:
                return self.first_name
        return self.username
    
    def save(self, *args, **kwargs):
        send_confirmation = False
        
        if not self.email:
            self.valid_email = False
        elif self.pk:
            try:
                before_save = self.__class__._default_manager.get(pk=self.pk)
                send_confirmation = before_save.email != self.email
            except models.ObjectDoesNotExist:
                send_confirmation = True
        elif self.email:
            send_confirmation = True
            
        if send_confirmation:
            self.valid_email = False
                
        super(CustomUser, self).save(*args, **kwargs)
        
        if send_confirmation:
            EmailConfirmation.objects.send_confirmation(self)
    
    def unread_messages(self, hidden_meassage_id=None):
        from messages.models import Message
        
        qs = Message.objects.for_user(self).filter(read=False)
        
        try:
            if hidden_meassage_id:
                qs = qs.filter(pk__gt=hidden_meassage_id)
        except (ValueError, TypeError):
            pass
        
        return qs
    
    @classmethod
    def video_followers_change_handler(cls, sender, instance, action, reverse, model, pk_set, **kwargs):
        from videos.models import SubtitleLanguage
        
        if reverse and action == 'post_add':
            #instance is User
            for video_pk in pk_set:
                cls.videos.through.objects.get_or_create(video__pk=video_pk, customuser=instance, defaults={'video_id': video_pk})
        elif reverse and action == 'post_remove':
            #instance is User
            for video_pk in pk_set:
                if not SubtitleLanguage.objects.filter(followers=instance, video__pk=video_pk).exists():
                    instance.videos.remove(video_pk)
        elif not reverse and action == 'post_add':
            #instance is Video
            for user_pk in pk_set:
                cls.videos.through.objects.get_or_create(video=instance, customuser__pk=user_pk, defaults={'customuser_id': user_pk})
        elif not reverse and action == 'post_remove':
            #instance is Video
            for user_pk in pk_set:
                if not SubtitleLanguage.objects.filter(followers__pk=user_pk, video=instance).exists():
                    instance.customuser_set.remove(user_pk)
        elif reverse and action == 'post_clear':
            #instance is User
            cls.videos.through.objects.filter(customuser=instance) \
                .exclude(video__subtitlelanguage__followers=instance).delete()
        elif not reverse and action == 'post_clear':
            #instance is Video
            cls.videos.through.objects.filter(video=instance) \
                .exclude(customuser__followed_languages__video=instance).delete()
            
    @classmethod
    def sl_followers_change_handler(cls, sender, instance, action, reverse, model, pk_set, **kwargs):
        from videos.models import Video, SubtitleLanguage
        
        if reverse and action == 'post_add':
            #instance is User
            for sl_pk in pk_set:
                sl = SubtitleLanguage.objects.get(pk=sl_pk)
                cls.videos.through.objects.get_or_create(video=sl.video, customuser=instance)
        elif reverse and action == 'post_remove':
            #instance is User
            for sl_pk in pk_set:
                if not Video.objects.filter(followers=instance, subtitlelanguage__pk=sl_pk).exists():
                    sl = SubtitleLanguage.objects.get(pk=sl_pk)
                    instance.videos.remove(sl.video)
        elif not reverse and action == 'post_add':
            #instance is SubtitleLanguage
            for user_pk in pk_set:
                cls.videos.through.objects.get_or_create(video=instance.video, customuser__pk=user_pk, defaults={'customuser_id': user_pk})
        elif not reverse and action == 'post_remove':
            #instance is SubtitleLanguage
            for user_pk in pk_set:
                if not Video.objects.filter(followers__pk=user_pk, subtitlelanguage=instance).exists():
                    instance.video.customuser_set.remove(user_pk)
        elif reverse and action == 'post_clear':
            #instance is User
            cls.videos.through.objects.filter(customuser=instance) \
                .exclude(video__subtitlelanguage__followers=instance).delete()
        elif not reverse and action == 'post_clear':
            #instance is SubtitleLanguage
            cls.videos.through.objects.filter(video=instance) \
                .exclude(customuser__followed_languages__video=instance.video).delete()
    
    def get_languages(self):
        """
        Just to control this query
        """
        languages = cache.get('user_languages_%s' % self.pk)

        if languages is None:
            languages = self.userlanguage_set.all()
            cache.set('user_languages_%s' % self.pk, languages, 60*24*7)

        return languages 

    def speaks_language(self, language_code):
        return language_code in [l.language for l in self.get_languages()]

    def managed_teams(self):
        from apps.teams.models import TeamMember
        return self.teams.filter(members__role=TeamMember.ROLE_MANAGER)

    def _get_gravatar(self, size):
        url = "http://www.gravatar.com/avatar/" + hashlib.md5(self.email.lower()).hexdigest() + "?"
        url += urllib.urlencode({'d': 'mm', 's':str(size)})
        return url

    def _get_avatar_by_size(self, size):
        if self.picture:
            return self.picture.thumb_url(size, size)
        else:
            return self._get_gravatar(size)        
    
    def avatar(self):
        return self._get_avatar_by_size(100)

    def small_avatar(self):
        return self._get_avatar_by_size(50)
    
    @models.permalink
    def get_absolute_url(self):
        return ('profiles:profile', [urlquote_plus(self.username)])
    
    @property
    def language(self):
        return self.get_preferred_language_display()
    
    @models.permalink
    def profile_url(self):
        return ('profiles:profile', [self.pk])
    
    def hash_for_video(self, video_id):
        return hashlib.sha224(settings.SECRET_KEY+str(self.pk)+video_id).hexdigest()
    
    @classmethod
    def get_anonymous(cls):
        return cls.objects.get(pk=settings.ANONYMOUS_USER_ID)
Exemple #18
0
class Article(models.Model):
    topic = models.ForeignKey(Topic)
    text = models.TextField(u'Текст')
    filter = models.CharField(u'Фильтр',
                              max_length=50,
                              choices=[(k, k) for k in filters.keys()])
    created = models.DateTimeField(default=datetime.now, db_index=True)
    updated = models.DateTimeField(auto_now=True, db_index=True)
    author = models.ForeignKey(Profile)
    guest_name = models.CharField(max_length=255, blank=True)
    deleted = models.DateTimeField(null=True, db_index=True, blank=True)
    spawned_to = models.OneToOneField(Topic,
                                      null=True,
                                      blank=True,
                                      related_name='spawned_from_article')
    spam_status = models.CharField(max_length=20, default='clean')
    ip = models.IPAddressField(default='127.0.0.1')
    votes_up = models.PositiveIntegerField(default=0, editable=False)
    votes_down = models.PositiveIntegerField(default=0, editable=False)
    voters = models.ManyToManyField(Profile,
                                    through='Vote',
                                    related_name='voted_articles')

    objects = ArticleManager()
    deleted_objects = DeletedArticleManager()

    class Meta:
        ordering = ['created']

    def __unicode__(self):
        return u'(%s, %s, %s)' % (self.topic, self.author,
                                  self.created.replace(microsecond=0))

    def delete(self):
        topic = self.topic
        super(Article, self).delete()
        if topic.article_set.count() == 0:
            topic.delete()

    def update_vote_counts(self):
        self.votes_up = self.vote_set.filter(value='up').count()
        self.votes_down = self.vote_set.filter(value='down').count()

    def html(self):
        '''
        Возвращает HTML-текст статьи, полученный фильтрацией содержимого
        через указанный фильтр.
        '''
        if self.filter in filters:
            result = filters[self.filter](self.text)
        else:
            result = linebreaks(escape(self.text))
        return mark_safe(usertext.usertext(result))

    def from_guest(self):
        '''
        Была ли написана статья от имени гостя. Используется, в основном,
        в шаблонах.
        '''
        return self.author.user.username == 'cicero_guest'

    def spawned(self):
        '''
        Перенесена ли статья в новый топик.
        '''
        return self.spawned_to_id is not None

    def ping_external_urls(self):
        '''
        Пингование внешних ссылок через Pingback
        (http://www.hixie.ch/specs/pingback/pingback)
        '''
        index_url = utils.absolute_url(reverse('cicero_index'))
        source_url = utils.absolute_url(
            reverse('cicero.views.topic',
                    args=(self.topic.forum.slug, self.topic.id)))
        pingdjack.ping_external_urls(source_url, self.html(), index_url)

    def set_spam_status(self, spam_status):
        '''
        Проставляет статус спамности, поправляя, если надо, аналогичный статус топика.
        Сохраняет результат в базу.
        '''
        if self.spam_status == spam_status:
            return
        self.spam_status = spam_status
        self.save()
        if self.topic.spam_status != spam_status and self.topic.article_set.count(
        ) == 1:
            self.topic.spam_status = spam_status
            self.topic.save()
Exemple #19
0
class Migration(migrations.Migration):

    dependencies = [
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
    ]

    operations = [
        migrations.CreateModel(
            name='Submission',
            fields=[
                ('id', models.AutoField(serialize=False, auto_created=True, verbose_name='ID', primary_key=True)),
                ('submission_id', models.CharField(max_length=64, default=angkot.route.utils.generate_id)),
                ('ip_address', models.IPAddressField(null=True, blank=True, default=None)),
                ('user_agent', models.CharField(null=True, blank=True, max_length=1024, default=None)),
                ('data_version', models.IntegerField(default=1)),
                ('raw_geojson', models.TextField()),
                ('raw_source', models.TextField(null=True, default=None, blank=True)),
                ('province', models.CharField(null=True, blank=True, max_length=5, choices=[('ID-AC', 'Aceh'), ('ID-SU', 'Sumatera Utara'), ('ID-SB', 'Sumatera Barat'), ('ID-RI', 'Riau'), ('ID-JA', 'Jambi'), ('ID-SS', 'Sumatera Selatan'), ('ID-BE', 'Bengkulu'), ('ID-LA', 'Lampung'), ('ID-BB', 'Kepulauan Bangka Belitung'), ('ID-KR', 'Kepulauan Riau'), ('ID-JK', 'Jakarta'), ('ID-JB', 'Jawa Barat'), ('ID-JT', 'Jawa Tengah'), ('ID-YO', 'Yogyakarta'), ('ID-JI', 'Jawa Timur'), ('ID-BT', 'Banten'), ('ID-BA', 'Bali'), ('ID-NB', 'Nusa Tenggara Barat'), ('ID-NT', 'Nusa Tenggara Timur'), ('ID-KB', 'Kalimantan Barat'), ('ID-KT', 'Kalimantan Tengah'), ('ID-KS', 'Kalimantan Selatan'), ('ID-KI', 'Kalimantan Timur'), ('ID-KU', 'Kalimantan Utara'), ('ID-SA', 'Sulawesi Utara'), ('ID-ST', 'Sulawesi Tengah'), ('ID-SN', 'Sulawesi Selatan'), ('ID-SG', 'Sulawesi Tenggara'), ('ID-GO', 'Gorontalo'), ('ID-SR', 'Sulawesi Barat'), ('ID-MA', 'Maluku'), ('ID-MU', 'Maluku Utara'), ('ID-PA', 'Papua'), ('ID-PB', 'Papua Barat')], default=None)),
                ('city', models.CharField(null=True, blank=True, max_length=256, default=None)),
                ('company', models.CharField(null=True, blank=True, max_length=256, default=None)),
                ('number', models.CharField(null=True, blank=True, max_length=64, default=None)),
                ('origin', models.CharField(null=True, blank=True, max_length=256, default=None)),
                ('destination', models.CharField(null=True, blank=True, max_length=256, default=None)),
                ('route', django.contrib.gis.db.models.fields.MultiLineStringField(srid=4326, null=True, default=None, blank=True)),
                ('parsed_ok', models.NullBooleanField(default=None)),
                ('parsed_date', models.DateTimeField(null=True, default=None, blank=True)),
                ('parsed_error', models.CharField(null=True, blank=True, max_length=1024, default=None)),
                ('source', models.CharField(null=True, blank=True, max_length=100, default=None)),
                ('active', models.BooleanField(default=True)),
                ('created', models.DateTimeField(auto_now_add=True)),
                ('updated', models.DateTimeField(auto_now=True)),
                ('parent', models.ForeignKey(blank=True, null=True, to='route.Submission', default=None)),
            ],
            options={
                'ordering': ('-updated',),
            },
            bases=(models.Model,),
        ),
        migrations.CreateModel(
            name='Transportation',
            fields=[
                ('id', models.AutoField(serialize=False, auto_created=True, verbose_name='ID', primary_key=True)),
                ('province', models.CharField(max_length=5, choices=[('ID-AC', 'Aceh'), ('ID-SU', 'Sumatera Utara'), ('ID-SB', 'Sumatera Barat'), ('ID-RI', 'Riau'), ('ID-JA', 'Jambi'), ('ID-SS', 'Sumatera Selatan'), ('ID-BE', 'Bengkulu'), ('ID-LA', 'Lampung'), ('ID-BB', 'Kepulauan Bangka Belitung'), ('ID-KR', 'Kepulauan Riau'), ('ID-JK', 'Jakarta'), ('ID-JB', 'Jawa Barat'), ('ID-JT', 'Jawa Tengah'), ('ID-YO', 'Yogyakarta'), ('ID-JI', 'Jawa Timur'), ('ID-BT', 'Banten'), ('ID-BA', 'Bali'), ('ID-NB', 'Nusa Tenggara Barat'), ('ID-NT', 'Nusa Tenggara Timur'), ('ID-KB', 'Kalimantan Barat'), ('ID-KT', 'Kalimantan Tengah'), ('ID-KS', 'Kalimantan Selatan'), ('ID-KI', 'Kalimantan Timur'), ('ID-KU', 'Kalimantan Utara'), ('ID-SA', 'Sulawesi Utara'), ('ID-ST', 'Sulawesi Tengah'), ('ID-SN', 'Sulawesi Selatan'), ('ID-SG', 'Sulawesi Tenggara'), ('ID-GO', 'Gorontalo'), ('ID-SR', 'Sulawesi Barat'), ('ID-MA', 'Maluku'), ('ID-MU', 'Maluku Utara'), ('ID-PA', 'Papua'), ('ID-PB', 'Papua Barat')])),
                ('city', models.CharField(max_length=256)),
                ('company', models.CharField(null=True, blank=True, max_length=256, default=None)),
                ('number', models.CharField(max_length=64)),
                ('origin', models.CharField(null=True, blank=True, max_length=256, default=None)),
                ('destination', models.CharField(null=True, blank=True, max_length=256, default=None)),
                ('route', django.contrib.gis.db.models.fields.MultiLineStringField(srid=4326, null=True, default=None, blank=True)),
                ('active', models.BooleanField(default=True)),
                ('created', models.DateTimeField(auto_now_add=True)),
                ('updated', models.DateTimeField(auto_now=True)),
                ('submission', models.ForeignKey(blank=True, null=True, related_name='used_submission', to='route.Submission', default=None)),
            ],
            options={
            },
            bases=(models.Model,),
        ),
        migrations.AddField(
            model_name='submission',
            name='transportation',
            field=models.ForeignKey(blank=True, null=True, related_name='history', to='route.Transportation', default=None),
            preserve_default=True,
        ),
        migrations.AddField(
            model_name='submission',
            name='user',
            field=models.ForeignKey(blank=True, null=True, related_name='submitted_route', to=settings.AUTH_USER_MODEL, default=None),
            preserve_default=True,
        ),
    ]
Exemple #20
0
class Migration(migrations.Migration):

    dependencies = [
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
    ]

    operations = [
        migrations.CreateModel(
            name='BannedIP',
            fields=[
                ('id',
                 models.AutoField(verbose_name='ID',
                                  serialize=False,
                                  auto_created=True,
                                  primary_key=True)),
                ('ip_address',
                 models.IPAddressField(
                     help_text='The IP address that should be banned',
                     verbose_name=b'IP Address')),
            ],
            options={
                'ordering': ('ip_address', ),
                'verbose_name': 'Banned IP',
                'verbose_name_plural': 'Banned IPs',
            },
            bases=(models.Model, ),
        ),
        migrations.CreateModel(
            name='UntrackedUserAgent',
            fields=[
                ('id',
                 models.AutoField(verbose_name='ID',
                                  serialize=False,
                                  auto_created=True,
                                  primary_key=True)),
                ('keyword',
                 models.CharField(
                     help_text=
                     'Part or all of a user-agent string.  For example, "Googlebot" here will be found in "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" and that visitor will not be tracked.',
                     max_length=100,
                     verbose_name='keyword')),
            ],
            options={
                'ordering': ('keyword', ),
                'verbose_name': 'Untracked User-Agent',
                'verbose_name_plural': 'Untracked User-Agents',
            },
            bases=(models.Model, ),
        ),
        migrations.CreateModel(
            name='Visitor',
            fields=[
                ('id',
                 models.AutoField(verbose_name='ID',
                                  serialize=False,
                                  auto_created=True,
                                  primary_key=True)),
                ('session_key', models.CharField(max_length=40)),
                ('ip_address', models.CharField(max_length=20)),
                ('user_agent', models.CharField(max_length=255)),
                ('referrer', models.CharField(max_length=255)),
                ('url', models.CharField(max_length=255)),
                ('page_views', models.PositiveIntegerField(default=0)),
                ('session_start', models.DateTimeField()),
                ('last_update', models.DateTimeField()),
                ('user',
                 models.ForeignKey(to=settings.AUTH_USER_MODEL, null=True)),
            ],
            options={
                'ordering': ('-last_update', ),
            },
            bases=(models.Model, ),
        ),
        migrations.AlterUniqueTogether(
            name='visitor',
            unique_together=set([('session_key', 'ip_address')]),
        ),
    ]
Exemple #21
0
 def test_random_ipaddress(self):
     f = models.IPAddressField()
     ip = random_ipaddress_maker(f)().next()
     ip = ip.split('.')
     self.assertEquals(len(ip), 4)
Exemple #22
0
class Jails(Model):
    objects = JailsManager()

    jail_host = models.CharField(
        max_length=120,
        verbose_name=_("Jail Name"),
    )
    jail_type = models.CharField(
        max_length=120,
        verbose_name=_("Type")
    )
    jail_ipv4 = models.CharField(
        max_length=120,
        blank=True,
        null=True,
        verbose_name=_("IPv4 address")
    )
    jail_ipv4_netmask = models.CharField(
        max_length=3,
        choices=choices.v4NetmaskBitList,
        blank=True,
        default='',
        verbose_name=_("IPv4 netmask"),
    )
    jail_alias_ipv4 = models.CharField(
        max_length=120,
        blank=True,
        null=True,
        verbose_name=_("IPv4 aliases")
    )
    jail_bridge_ipv4 = models.CharField(
        max_length=120,
        blank=True,
        null=True,
        verbose_name=_("IPv4 bridge address")
    )
    jail_bridge_ipv4_netmask = models.CharField(
        max_length=3,
        choices=choices.v4NetmaskBitList,
        blank=True,
        default='',
        verbose_name=_("IPv4 bridge netmask"),
    )
    jail_alias_bridge_ipv4 = models.CharField(
        max_length=120,
        blank=True,
        null=True,
        verbose_name=_("IPv4 bridge aliases")
    )
    jail_defaultrouter_ipv4 = models.IPAddressField(
        max_length=120,
        blank=True,
        null=True,
        verbose_name=_("IPv4 default gateway")
    )
    jail_ipv6 = models.CharField(
        max_length=120,
        blank=True,
        null=True,
        verbose_name=_("IPv6 address")
    )
    jail_ipv6_prefix = models.CharField(
        max_length=4,
        choices=choices.v6NetmaskBitList,
        blank=True,
        default='',
        verbose_name=_("IPv6 prefix length")
    )
    jail_alias_ipv6 = models.CharField(
        max_length=120,
        blank=True,
        null=True,
        verbose_name=_("IPv6 aliases")
    )
    jail_bridge_ipv6 = models.CharField(
        max_length=120,
        blank=True,
        null=True,
        verbose_name=_("IPv6 bridge address")
    )
    jail_bridge_ipv6_prefix = models.CharField(
        max_length=4,
        choices=choices.v6NetmaskBitList,
        blank=True,
        default='',
        verbose_name=_("IPv6 bridge prefix length")
    )
    jail_alias_bridge_ipv6 = models.CharField(
        max_length=120,
        blank=True,
        null=True,
        verbose_name=_("IPv6 bridge aliases")
    )
    jail_defaultrouter_ipv6 = models.GenericIPAddressField(
        max_length=120,
        blank=True,
        null=True,
        protocol='IPv6',
        verbose_name=_("IPv6 default gateway")
    )
    jail_mac = models.CharField(
        max_length=120,
        blank=True,
        null=True,
        verbose_name=_("MAC")
    )
    jail_flags = models.TextField(
        verbose_name=_("Sysctls"),
        blank=True,
        help_text=_("Comma delimited list of sysctl's")
    )
    jail_autostart = models.BooleanField(
        max_length=120,
        default=True,
        verbose_name=_("Autostart")
    )
    jail_status = models.CharField(
        max_length=120,
        verbose_name=_("Status")
    )
    jail_vnet = models.BooleanField(
        max_length=120,
        default=True,
        verbose_name=_("VIMAGE")
    )
    jail_nat = models.BooleanField(
        default=False,
        verbose_name=_("NAT")
    )

    @property
    def jail_path(self):
        if self.__jail_path:
            return self.__jail_path
        else:
            try:
                jc = JailsConfiguration.objects.order_by("-id")[0] 
                self.__jail_path = "%s/%s" % (jc.jc_path, self.jail_host)
            except:
                pass

        return self.__jail_path

    @property
    def jail_meta_path(self):
        if self.__jail_meta_path:
            return self.__jail_meta_path
        else:
            try:
                jc = JailsConfiguration.objects.order_by("-id")[0] 
                self.__jail_meta_path = "%s/.%s.meta" % (jc.jc_path, self.jail_host)
            except:
                pass

        return self.__jail_meta_path

    def __str__(self):
        return str(self.jail_host)

    def __unicode__(self):
        return unicode(self.jail_host)

    def __init__(self, *args, **kwargs):
        super(Jails, self).__init__(*args, **kwargs)
        self.__jail_path = None
        self.__jail_meta_path = None

        if self.jail_autostart == WARDEN_AUTOSTART_ENABLED:
            self.jail_autostart = True
        elif self.jail_autostart == WARDEN_AUTOSTART_DISABLED:
            self.jail_autostart = False

        if self.jail_vnet == WARDEN_VNET_ENABLED:
            self.jail_vnet = True
        elif self.jail_vnet == WARDEN_VNET_DISABLED:
            self.jail_vnet = False

        if self.jail_nat == WARDEN_NAT_ENABLED:
            self.jail_nat = True
        elif self.jail_nat == WARDEN_NAT_DISABLED:
            self.jail_nat = False

        #
        # XXX
        #
        # This should probably be done in forms.py.. but for some reason,
        # probably related to how this model fakes out django and doesn't
        # use a database table (just a guess), when changing the form instance
        # variable, it does not reflect in the GUI. Will return to this 
        # particular issue some other time. For now, hacky hack hacks!
        #
        # Also note, the mask/prefix is stripped here for display in the GUI,
        # and appended back on in the form save() method.
        #
        # XXX
        #
        if self.jail_ipv4:
            parts = self.jail_ipv4.split('/')
            self.jail_ipv4 = parts[0]
            if len(parts) > 1:
                self.jail_ipv4_netmask = parts[1]

        if self.jail_bridge_ipv4:
            parts = self.jail_bridge_ipv4.split('/')
            self.jail_bridge_ipv4 = parts[0]
            if len(parts) > 1:
                self.jail_bridge_ipv4_netmask = parts[1]

        if self.jail_ipv6:
            parts = self.jail_ipv6.split('/')
            self.jail_ipv6 = parts[0]
            if len(parts) > 1:
                self.jail_ipv6_prefix = parts[1]

        if self.jail_bridge_ipv6:
            parts = self.jail_bridge_ipv6.split('/')
            self.jail_bridge_ipv6 = parts[0]
            if len(parts) > 1:
                self.jail_bridge_ipv6_prefix = parts[1]

    def delete(self, force=False):
        #FIXME: Cyclic dependency
        from freenasUI.plugins.models import Plugins
        if not force:
            qs = Plugins.objects.filter(plugin_jail=self.jail_host)
            if qs.exists():
                raise MiddlewareError(
                    _("This jail is required by %d plugin(s)") % qs.count()
                )
        Warden().delete(jail=self.jail_host, flags=WARDEN_DELETE_FLAGS_CONFIRM)

    def is_linux_jail(self):
        is_linux = False

        sysctl_path = "%s/sbin/sysctl" % (self.jail_path)
        p = pipeopen("file %s" % sysctl_path, important=False)
        out = p.communicate()
        if p.returncode != 0:
            return is_linux

        try:
            out = out[0]
            parts = out.split(',')
            line = parts[4]
            parts = line.split()
            line = parts[1] 
            if re.match('(.+)?linux(.+)?', line, flags=re.I):
                is_linux = True

        except:
            is_linux = False 

        return is_linux

    class Meta:
        verbose_name = _("Jails")
        verbose_name_plural = _("Jails")
Exemple #23
0
class Migration(migrations.Migration):

    dependencies = [
        ('contenttypes', '0001_initial'),
        ('auth', '0001_initial'),
    ]

    operations = [
        migrations.CreateModel(
            name='User',
            fields=[
                ('id',
                 models.AutoField(serialize=False,
                                  primary_key=True,
                                  auto_created=True,
                                  verbose_name='ID')),
                ('password',
                 models.CharField(max_length=128, verbose_name='password')),
                ('last_login',
                 models.DateTimeField(default=django.utils.timezone.now,
                                      verbose_name='last login')),
                ('is_superuser',
                 models.BooleanField(
                     help_text=
                     'Designates that this user has all permissions without explicitly assigning them.',
                     verbose_name='superuser status',
                     default=False)),
                ('username',
                 models.CharField(
                     help_text=
                     'Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.',
                     max_length=30,
                     validators=[
                         django.core.validators.RegexValidator(
                             '^[\\w.@+-]+$', 'Enter a valid username.',
                             'invalid')
                     ],
                     unique=True,
                     verbose_name='username')),
                ('first_name',
                 models.CharField(blank=True,
                                  max_length=30,
                                  verbose_name='first name')),
                ('last_name',
                 models.CharField(blank=True,
                                  max_length=30,
                                  verbose_name='last name')),
                ('email',
                 models.EmailField(blank=True,
                                   max_length=75,
                                   verbose_name='email address')),
                ('is_staff',
                 models.BooleanField(
                     help_text=
                     'Designates whether the user can log into this admin site.',
                     verbose_name='staff status',
                     default=False)),
                ('is_active',
                 models.BooleanField(
                     help_text=
                     'Designates whether this user should be treated as active. Unselect this instead of deleting accounts.',
                     verbose_name='active',
                     default=True)),
                ('date_joined',
                 models.DateTimeField(default=django.utils.timezone.now,
                                      verbose_name='date joined')),
                ('groups',
                 models.ManyToManyField(
                     blank=True,
                     help_text=
                     'The groups this user belongs to. A user will get all permissions granted to each of his/her group.',
                     related_name='user_set',
                     related_query_name='user',
                     to='auth.Group',
                     verbose_name='groups')),
                ('user_permissions',
                 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')),
            ],
            options={
                'verbose_name': 'user',
                'verbose_name_plural': 'users',
                'abstract': False,
            },
            bases=(models.Model, ),
        ),
        migrations.CreateModel(
            name='Album',
            fields=[
                ('id',
                 models.AutoField(serialize=False,
                                  primary_key=True,
                                  auto_created=True,
                                  verbose_name='ID')),
                ('uuid',
                 models.CharField(blank=True,
                                  default=uuid.uuid4,
                                  max_length=64,
                                  editable=False)),
                ('slug', autoslug.fields.AutoSlugField(editable=False)),
                ('name', models.CharField(blank=True, max_length=80,
                                          null=True)),
                ('fiat_price',
                 models.DecimalField(
                     help_text=
                     'Will be automatically converted to the Bitcoin on the moment of purchase',
                     default=Decimal('0'),
                     decimal_places=2,
                     verbose_name='Price in your local currency',
                     max_digits=16,
                     validators=[
                         django.core.validators.MinValueValidator(
                             Decimal('0.01'))
                     ])),
                ('visible',
                 models.BooleanField(
                     help_text=
                     'Uncheck this to make the item disappear from your store. The site still retains the copy of this item for a while before it is permanently deleted.',
                     verbose_name='Visible / deleted',
                     default=True)),
                ('description', models.TextField(blank=True, null=True)),
                ('cover',
                 easy_thumbnails.fields.ThumbnailerImageField(
                     blank=True,
                     help_text='Cover art as JPEG file',
                     null=True,
                     upload_to=tatianastore.models.filename_gen('covers/'),
                     verbose_name='Cover art')),
                ('download_zip',
                 models.FileField(
                     blank=True,
                     help_text=
                     'A ZIP file which the user can download after he/she has paid for the full album',
                     null=True,
                     upload_to=tatianastore.models.filename_gen('songs/'),
                     verbose_name='Album download ZIP')),
            ],
            options={
                'abstract': False,
            },
            bases=(models.Model, ),
        ),
        migrations.CreateModel(
            name='DownloadTransaction',
            fields=[
                ('id',
                 models.AutoField(serialize=False,
                                  primary_key=True,
                                  auto_created=True,
                                  verbose_name='ID')),
                ('customer_email',
                 models.CharField(blank=True, max_length=64, null=True)),
                ('session_id',
                 models.CharField(blank=True, max_length=64, null=True)),
                ('description',
                 models.CharField(blank=True,
                                  default='',
                                  max_length=256,
                                  editable=False)),
                ('uuid',
                 models.CharField(blank=True,
                                  default=uuid.uuid4,
                                  max_length=64,
                                  editable=False)),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('currency',
                 models.CharField(blank=True, max_length=5, null=True)),
                ('user_currency',
                 models.CharField(blank=True, max_length=5, null=True)),
                ('btc_address',
                 models.CharField(blank=True, max_length=50, null=True)),
                ('btc_amount',
                 models.DecimalField(default=Decimal('0'),
                                     max_digits=16,
                                     decimal_places=8)),
                ('fiat_amount',
                 models.DecimalField(default=Decimal('0'),
                                     max_digits=16,
                                     decimal_places=2)),
                ('payment_source', models.CharField(max_length=32)),
                ('btc_received_at', models.DateTimeField(blank=True,
                                                         null=True)),
                ('manually_confirmed_received_at',
                 models.DateTimeField(blank=True, null=True)),
                ('received_transaction_hash',
                 models.CharField(blank=True, max_length=256, null=True)),
                ('cancelled_at', models.DateTimeField(blank=True, null=True)),
                ('expires_at', models.DateTimeField(blank=True, null=True)),
                ('expired_at', models.DateTimeField(blank=True, null=True)),
                ('ip', models.IPAddressField(blank=True, null=True)),
                ('credited_at', models.DateTimeField(blank=True, null=True)),
                ('credit_transaction_hash',
                 models.CharField(blank=True, max_length=256, null=True)),
            ],
            options={},
            bases=(models.Model, ),
        ),
        migrations.CreateModel(
            name='DownloadTransactionItem',
            fields=[
                ('id',
                 models.AutoField(serialize=False,
                                  primary_key=True,
                                  auto_created=True,
                                  verbose_name='ID')),
                ('object_id', models.PositiveIntegerField()),
                ('content_type',
                 models.ForeignKey(to='contenttypes.ContentType')),
                ('transaction',
                 models.ForeignKey(to='tatianastore.DownloadTransaction')),
            ],
            options={},
            bases=(models.Model, ),
        ),
        migrations.CreateModel(
            name='Song',
            fields=[
                ('id',
                 models.AutoField(serialize=False,
                                  primary_key=True,
                                  auto_created=True,
                                  verbose_name='ID')),
                ('uuid',
                 models.CharField(blank=True,
                                  default=uuid.uuid4,
                                  max_length=64,
                                  editable=False)),
                ('slug', autoslug.fields.AutoSlugField(editable=False)),
                ('name', models.CharField(blank=True, max_length=80,
                                          null=True)),
                ('fiat_price',
                 models.DecimalField(
                     help_text=
                     'Will be automatically converted to the Bitcoin on the moment of purchase',
                     default=Decimal('0'),
                     decimal_places=2,
                     verbose_name='Price in your local currency',
                     max_digits=16,
                     validators=[
                         django.core.validators.MinValueValidator(
                             Decimal('0.01'))
                     ])),
                ('visible',
                 models.BooleanField(
                     help_text=
                     'Uncheck this to make the item disappear from your store. The site still retains the copy of this item for a while before it is permanently deleted.',
                     verbose_name='Visible / deleted',
                     default=True)),
                ('download_mp3',
                 models.FileField(
                     blank=True,
                     help_text=
                     'The downloaded content how the user gets it after paying for it.',
                     null=True,
                     upload_to=tatianastore.models.filename_gen('songs/'),
                     verbose_name='MP3 file')),
                ('prelisten_mp3',
                 models.FileField(
                     blank=True,
                     help_text=
                     'For Safari and IE browsers. Leave empty: This will be automatically generated from uploaded song.',
                     null=True,
                     upload_to=tatianastore.models.filename_gen('prelisten/'),
                     verbose_name='Prelisten clip MP3 file')),
                ('prelisten_vorbis',
                 models.FileField(
                     blank=True,
                     help_text=
                     'For Chrome and Firefox browsers. Leave empty: This will be automatically generated from uploaded song.',
                     null=True,
                     upload_to=tatianastore.models.filename_gen('prelisten/'),
                     verbose_name='Prelisten clip Ogg Vorbis file')),
                ('duration', models.FloatField(blank=True, null=True)),
                ('order', models.IntegerField(blank=True, null=True)),
                ('album',
                 models.ForeignKey(
                     blank=True,
                     help_text=
                     'On which album this song belongs to. Leave empty for an albumless song. (You can reorder the songs when you edit the album after uploading the songs.)',
                     to='tatianastore.Album',
                     null=True,
                     verbose_name='Album')),
            ],
            options={
                'ordering': ('order', '-id'),
            },
            bases=(models.Model, ),
        ),
        migrations.CreateModel(
            name='Store',
            fields=[
                ('id',
                 models.AutoField(serialize=False,
                                  primary_key=True,
                                  auto_created=True,
                                  verbose_name='ID')),
                ('slug', autoslug.fields.AutoSlugField(editable=False)),
                ('name', models.CharField(blank=True, max_length=80,
                                          null=True)),
                ('currency',
                 models.CharField(
                     help_text=
                     'Currency code for your local currency which you user to price your albums and songs',
                     max_length=5,
                     verbose_name='Currency',
                     default='USD')),
                ('store_url',
                 models.URLField(
                     help_text='Link to home page or Facebook page',
                     verbose_name='Homepage')),
                ('btc_address',
                 models.CharField(
                     blank=True,
                     help_text=
                     'Receiving address where the purchases will be credited. If you do not have Bitcoin wallet yet you can leave this empty - the site will keep your coins until you get your own wallet.',
                     max_length=50,
                     default=None,
                     null=True,
                     verbose_name='Bitcoin address')),
                ('extra_html',
                 models.TextField(
                     blank=True,
                     help_text=
                     'Style your shop with extra HTML code placed for the site embed &ltiframe&gt. Please ask your webmaster for the details. This can include CSS <style> tag for the formatting purposes.',
                     null=True,
                     verbose_name='Store styles code',
                     default='')),
                ('extra_facebook_html',
                 models.TextField(
                     blank=True,
                     help_text=
                     'Style your shop with extra HTML code placed on the shop when it is on a Facebook page.',
                     null=True,
                     verbose_name='Facebook styles code',
                     default='')),
                ('facebook_data',
                 jsonfield.fields.JSONField(
                     default={}, verbose_name='Facebook page info')),
                ('operators',
                 models.ManyToManyField(to=settings.AUTH_USER_MODEL,
                                        related_name='operated_stores')),
            ],
            options={},
            bases=(models.Model, ),
        ),
        migrations.AddField(
            model_name='song',
            name='store',
            field=models.ForeignKey(to='tatianastore.Store'),
            preserve_default=True,
        ),
        migrations.AddField(
            model_name='downloadtransaction',
            name='store',
            field=models.ForeignKey(to='tatianastore.Store', null=True),
            preserve_default=True,
        ),
        migrations.AddField(
            model_name='album',
            name='store',
            field=models.ForeignKey(to='tatianastore.Store'),
            preserve_default=True,
        ),
    ]
Exemple #24
0
class DhcpdSettings(models.Model):
    class Meta:
        verbose_name = 'DHCP daemon settings'

    enabled = models.BooleanField(default=False)

    authoritative = models.BooleanField(default=False)

    dns = models.CharField(
        _("Domain name server (domain-name-servers)"),
        max_length=100,
        blank=True,
        null=True,
    )

    domain_name = models.CharField(
        _("Domain name (domain-name)"),
        max_length=100,
        blank=True,
        null=True,
    )

    subnet = models.CharField(
        _("Subnet"),
        max_length=100,
        blank=True,
        null=True,
    )

    netmask = models.CharField(
        _("Netmask"),
        max_length=100,
        blank=True,
        null=True,
    )

    routers = models.CharField(
        _("Routers (routers)"),
        max_length=100,
        blank=True,
        null=True,
    )

    broadcast_address = models.CharField(
        _("Broadcast address (broadcast-address)"),
        max_length=100,
        blank=True,
        null=True,
    )

    broadcast_address = models.CharField(
        _("Broadcast address (broadcast-address)"),
        max_length=100,
        blank=True,
        null=True,
    )

    range_min = models.IPAddressField(blank=True, null=True)

    range_max = models.IPAddressField(blank=True, null=True)

    default_lease_time = models.IntegerField(
        _("Default lease time (default-lease-time)"),
        blank=True,
        null=True,
    )

    max_lease_time = models.IntegerField(
        _("Max lease time (max-lease-time)"),
        blank=True,
        null=True,
    )

    def save(self, *args, **kwargs):
        get_status().mark_as_changed()

        super(DhcpdSettings, self).save(*args, **kwargs)
Exemple #25
0
class Comment(models.Model):
    authenticated = models.BooleanField()
    author = models.ForeignKey(UserProfile, blank=True, null=True)
    text = models.TextField()
    status = models.IntegerField(choices=COMMENT_STATUS, default=4)
    nickname = models.CharField(max_length=128, blank=True, null=True)
    email = models.EmailField(blank=True, null=True)
    ip = models.IPAddressField(default='127.0.1.2')
    url = models.URLField(blank=True, null=True)
    referenced = models.ForeignKey("self",
                                   related_name="referencing",
                                   blank=True,
                                   null=True,
                                   verbose_name="Bezug auf")
    post = models.ForeignKey(Post, related_name='comments')
    date = models.DateTimeField('geschrieben am')
    template = loader.get_template('blog/comment.html')
    # filter what states (__gte) should be displayed public
    display_states_above = 6

    class Meta:
        db_table = 'blog_comment'
        get_latest_by = 'date'
        ordering = ['date']
        verbose_name = 'Kommentar'
        verbose_name_plural = 'Kommentare'

    #some kind of poor-mans spamfilter
    #maybe someday i will be bored enough to compile a list of bad words

    def autodecide_status(self):
        #Filter based on previous comments with same text
        blocked = Comment.objects.filter(text=self.text,
                                         status__in=[1, 0, 2]).count()
        if blocked >= 1:
            self.status = 1
        else:
            #Filter based on previous comments, allready moderated by admin
            blocked = Comment.objects.filter(email=self.email,
                                             status=0).count()
            blocked = blocked + Comment.objects.filter(url=self.url,
                                                       status=0).count()
            allowed = Comment.objects.filter(email=self.email,
                                             status=7).count()
            #pessimistic aproach: noone is allowed to post, except he is NOT categorized as spam
            #yeah.. this was optimistic before.. who might have guessed
            if (blocked >= allowed):
                self.status = 1
            else:
                self.status = 6
                return self.status
        fh = codecs.open(SPAMFILTER_URLS, encoding='utf-8')
        for line in fh.readlines():
            if (line[:-1] in self.url):
                raise PermissionDenied()


#    referer = request.META.get('HTTP_REFERER', '')
#    if (referer == u"-"):
#      raise PermissionDenied()
        fh = codecs.open(SPAMFILTER_WORDS, encoding='utf-8')
        text_count = 0
        name_count = 0
        for line in fh.readlines():
            if (line[:-1] in self.text):
                text_count += 1
            if (line[:-1] in self.nickname):
                name_count += 1
        if (name_count >= SPAMFILTER_WORDS_NAME_MAX
                or text_count >= SPAMFILTER_WORDS_TEXT_MAX):
            raise PermissionDenied()
        c = Counter(re.findall(r"href=", self.text.lower()))
        if c['href='] >= 6:
            raise PermissionDenied()
        if len(re.findall(r"https?://", self.text.lower())) > 10:
            raise PermissionDenied()
        return self.status

    #we need to fill a comment from an user-object... maybe via User->UserProfile

    def fill_from_user(self, user):
        if (user.is_authenticated()):
            self.authenticated = True
            try:
                profile = UserProfile.objects.get(user=user)
                self.author = profile
            except:
                self.nickname = user.username
                self.url = reverse('webchao.blog.views.byAuthor',
                                   args=[user.username])
            self.email = user.email
            self.status = 6
        else:
            self.authenticated = False
            self.autodecide_status()
        self.date = datetime.datetime.now()

    def get_author_nickname(self):
        if (self.authenticated and not self.nickname):
            if (self.author.nickname):
                return self.author.nickname
            else:
                return self.author.user.username
        else:
            return self.nickname

    def __unicode__(self):
        return '#%s von %s' % (self.id, self.get_author_nickname())

    def render(self):
        c = Context({
            'comment':
            self,
            'nickname':
            self.get_author_nickname(),
            'references':
            self.referencing.filter(status__gte=self.display_states_above),
        })
        return self.template.render(c)

    def get_absolute_url(self, byId=True):
        return "%s#comment_%s" % (self.post.get_absolute_url(byId), self.id)
Exemple #26
0
class Migration(migrations.Migration):

    dependencies = []

    operations = [
        migrations.CreateModel(
            name='Group',
            fields=[
                ('id',
                 models.AutoField(verbose_name='ID',
                                  serialize=False,
                                  auto_created=True,
                                  primary_key=True)),
                ('enabled', models.BooleanField(default=True)),
                ('name', models.CharField(max_length=200)),
                ('temp_dir', models.CharField(max_length=200)),
                ('nginx_dir', models.CharField(max_length=200)),
                ('ldirectord_conf', models.CharField(max_length=200)),
                ('graph_dir', models.CharField(max_length=200)),
                ('varnish_dir', models.CharField(max_length=200)),
                ('admin_port',
                 models.IntegerField(default=8000, null=True, blank=True)),
                ('app_path',
                 models.CharField(default=b'/usr/local/src/lbmanager',
                                  max_length=200)),
                ('enable_transfer', models.BooleanField(default=True)),
                ('enable_reload', models.BooleanField(default=True)),
                ('last_update', models.DateTimeField(null=True, blank=True)),
                ('last_apply', models.DateTimeField(null=True, blank=True)),
                ('version', models.IntegerField(default=0)),
            ],
            options={
                'verbose_name': 'Group',
            },
            bases=(models.Model, ),
        ),
        migrations.CreateModel(
            name='Server',
            fields=[
                ('id',
                 models.AutoField(verbose_name='ID',
                                  serialize=False,
                                  auto_created=True,
                                  primary_key=True)),
                ('enabled', models.BooleanField(default=True)),
                ('name', models.CharField(max_length=200)),
                ('address', models.IPAddressField()),
                ('ssh_user',
                 models.CharField(max_length=200, null=True, blank=True)),
                ('ssh_password',
                 models.CharField(max_length=200, null=True, blank=True)),
                ('ssh_port',
                 models.IntegerField(default=22, null=True, blank=True)),
                ('role_cluster', models.BooleanField(default=False)),
                ('role_backend', models.BooleanField(default=False)),
                ('role_frontend', models.BooleanField(default=False)),
            ],
            options={
                'verbose_name': 'Server',
            },
            bases=(models.Model, ),
        ),
        migrations.AddField(
            model_name='group',
            name='cluster_servers',
            field=models.ManyToManyField(to='config.Server',
                                         null=True,
                                         blank=True),
            preserve_default=True,
        ),
        #        migrations.RunPython(loadfixture),
    ]
Exemple #27
0
class PeeringPoint(models.Model):
    class Meta:
        verbose_name = "Peering Point"
        verbose_name_plural = "Peering Points"
        db_table = "peer_peeringpoint"
        app_label = "peer"

    # @todo: Replace with managed object
    hostname = models.CharField("FQDN", max_length=64, unique=True)
    location = models.CharField("Location",
                                max_length=64,
                                blank=True,
                                null=True)
    local_as = models.ForeignKey(AS, verbose_name="Local AS")
    router_id = models.IPAddressField("Router-ID", unique=True)
    # @todo: Replace with managed object
    profile = DocumentReferenceField(Profile, null=False, blank=False)
    communities = models.CharField("Import Communities",
                                   max_length=128,
                                   blank=True,
                                   null=True)
    enable_prefix_list_provisioning = models.BooleanField(
        "Enable Prefix-List Provisioning", default=False)
    prefix_list_notification_group = models.ForeignKey(
        NotificationGroup,
        verbose_name="Prefix List Notification Group",
        null=True,
        blank=True)

    def __unicode__(self):
        if self.location:
            return u" %s (%s)" % (self.hostname, self.location)
        else:
            return self.hostname

    def sync_cm_prefix_list(self):
        from noc.cm.models.prefixlist import PrefixList

        peers_pl = set()
        peers_pl.update([
            p.import_filter_name
            for p in self.peer_set.filter(import_filter_name__isnull=False)
            if p.import_filter_name.strip()
        ])
        peers_pl.update([
            p.export_filter_name
            for p in self.peer_set.filter(export_filter_name__isnull=False)
            if p.export_filter_name.strip()
        ])
        h = self.hostname + "/"
        l_h = len(h)
        for p in PrefixList.objects.filter(repo_path__startswith=h):
            pl = p.path[l_h:]
            if pl not in peers_pl:
                p.delete()
            else:
                del peers_pl[pl]
        for pl in peers_pl:
            PrefixList(repo_path=h + pl).save()

    @property
    def generated_prefix_lists(self):
        """
        Returns a list of (prefix-list-name, rpsl-filter)
        """
        pls = {}
        for pr in self.peer_set.all():
            if pr.import_filter_name:
                pls[pr.import_filter_name] = pr.import_filter
            if pr.export_filter_name:
                pls[pr.export_filter_name] = pr.export_filter
        return pls.items()

    @property
    def rpsl(self):
        ifaddrs = set()
        peers = {}
        for p in self.peer_set.all():
            ifaddrs.add(p.local_ip)
            peers[p.remote_ip, p.remote_asn] = None
            if p.local_backup_ip and p.remote_backup_ip:
                ifaddrs.add(p.local_backup_ip)
                peers[p.remote_backup_ip, p.remote_asn] = None
        s = []
        s += ["inet-rtr: %s" % self.hostname]
        s += ["local-as: AS%d" % self.local_as.asn]
        for ip in sorted(ifaddrs):
            if "/" in ip:
                ip, masklen = ip.split("/")
            else:
                masklen = "30"
            s += ["ifaddr: %s masklen %s" % (ip, masklen)]
        for remote_ip, remote_as in sorted(peers.keys(), key=lambda x: x[0]):
            if "/" in remote_ip:
                remote_ip, masklen = remote_ip.split("/")
            s += ["peer: BGP4 %s asno(%s)" % (remote_ip, remote_as)]
        return rpsl_format("\n".join(s))
Exemple #28
0
class FieldsType(models.Model):

    #一个IntegerField 根据实际ID自动增长
    auto_field = models.AutoField(primary_key=True)

    # unique identifiers.  a good alternative to autoField for primary_key.
    # the database will not generate the uuid for , so it is recommended to use default
    # When used on PostgreSQL, this stores in a uuid datatype, otherwise in a char(32)
    import uuid
    uuid_field = models.UUIDField(default=uuid.uuid4, editable=False)

    # 这是一个用来存储原始二进制码的Field. 只支持bytes 声明
    binarg_field = models.BinaryField()

    # class CharField(max_length=None[, **options])¶
    # 必填参数中max_length.  from widget:TextInput
    char_field = models.CharField(max_length=512)
    # a large text field. form widget:Textarea
    text_field = models.TextField()

    # 一个 true/false 字段。
    # 此字段的默认表单挂件是一个CheckboxInput.
    boolean_field = models.BooleanField()
    # Like a BooleanField, but allows NULL as one of the options.
    # 如果Field.default没有指定的话, BooleanField 的默认值是 None
    # Use this instead of a BooleanField with null=True.
    null_boolean_field = models.NullBooleanField()

    # A floating-point number represented in Python by a float instance.
    float_field = models.FloatField()
    # Values from -32768 to 32767
    small_integer_field = models.SmallIntegerField()
    # values from  -2147483648 to 2147483647 are safe in all databases。
    integer_field = models.IntegerField()
    # 64位整数 values from -9223372036854775808 to 9223372036854775807之间.
    # default form widget:TextInput.
    big_integer_field = models.BigIntegerField()
    # Values from 0 to 2147483647 are safe in all databases supported by Django.
    positive_integer_field = models.PositiveIntegerField()
    # Values from 0 to 32767 are safe in all databases supported by Django.
    positive_small_integer_field = models.PositiveSmallIntegerField()
    # class CommaSeparatedIntegerField(max_length=None[, **options])¶
    # A field of integers separated by commas. 一个逗号分隔的整数字段。像 CharField一样, 需要一个max_length 参数
    comma_separated_integer_field = models.CommaSeparatedIntegerField(
        max_length=512)

    # class DateField([auto_now=False, auto_now_add=False, **options])¶
    # represented in python by a datetime.time instance
    # auto_now. Automatically set the field to now every time the object is saved.
    # auto_now_add. Automatically set the field to now when the object is first created.
    # from widget:TextInput
    # 在目前的实现中,设置auto_now或者auto_now_add为True将为让这个字段同时得到editable=False和blank=True这两个设置.
    import datetime
    date_field = models.DateField(auto_now=datetime.datetime.now)
    #class TimeField([auto_now=False, auto_now_add=False, **options])
    time_field = models.TimeField(auto_now=datetime.datetime.now)
    # class DateTimeField([auto_now=False, auto_now_add=False, **options])¶
    # A date and time, represented in Python by a datetime.datetime instance.
    # form widget:TextInput
    date_time_field = models.DateTimeField(auto_now_add=datetime.datetime.now)
    # A field for storing periods of time - modeled in Python by timedelta.
    # When used on PostgreSQL, the data type used is an interval and
    # on Oracle the data type is INTERVAL DAY(9) TO SECOND(6).
    # Otherwise a bigint of microseconds is used.
    duration_field = models.DurationField()

    # class DecimalField(max_digits=None, decimal_places=None[, **options])¶
    # A fixed-precision decimal number, represented in Python by a Decimal instance.
    # max_digits. The maximum number of digits allowed in the number. this number must be >= decimal_places.
    # decimal_places. The number of decimal places to store with the number.
    decimal_field = models.DecimalField(max_digits=9, decimal_places=2)

    # class EmailField([max_length=254, **options])
    # A CharField that checks that the value is a valid email address.
    # It uses EmailValidator to validate the input.
    # The default max_length was increased from 75 to 254 in order to be compliant with RFC3696/5321.
    email_field = models.EmailField()

    # if you don't specify max_length , a default of 200 is used
    # the default form widget for this field is a TextInput
    url_field = models.URLField(
    )  # class URLField([max_length=200, **options])¶

    # class FileField([upload_to=None, max_length=100, **options])¶.
    # upload_to may contain strftime() formatting, which will be replaced by the date/time of the file upload.
    # When you access a FileField on a model,
    # you are given an instance of FieldFile as a proxy for accessing the underlying file.
    # In addition to the functionality inherited from django.core.files.File,
    # this class has several attributes and methods that can be used to interact with file data:
    # FieldFile.url, FieldFile.open(mode='rb'), FieldFile.close(),
    # FieldFile.save(name, content, save=True), FieldFile.delete(save=True)
    # default form wedget:ClearableFileInput.
    file_field = models.FileField(upload_to='files/%Y/%m/%d')
    # class ImageField([upload_to=None, height_field=None, width_field=None, max_length=100, **options])¶
    # In addition to the special attributes that are available for FileField,
    # an ImageField also has height and width attributes.
    image_field = models.ImageField(upload_to='/upload_to/images',
                                    height_field=100,
                                    width_field=100)
    # class FilePathField(path=None[, match=None, recursive=False, max_length=100, **options])¶
    # FilePathField instances are created in database as varchar columns
    # recursive. specifies whether all subdirectories of path should be included
    # allow_files. specifies whether files in the specified location should be included. default True
    # allow_folders. specifies whether folders in the specified location should be included. default False
    # Either this or allow_folders must be True.
    file_path_field = models.FilePathField(path='/upload_to/images',
                                           match='.*.jpg',
                                           recursive=True)

    # Deprecated since version 1.7. so use GenericIPAddressField instead of it.
    # form widget:TextInput.
    ip_address_field = models.IPAddressField()
    # class GenericIPAddressField([protocol=both, unpack_ipv4=False, **options])¶
    # An IPv4 or IPv6 address, in string format (e.g. 192.0.2.30 or 2a02:42fe::4).
    # form widget:TextInput.
    genericl_ip_address_field = models.GenericIPAddressField()

    slug_field = models.SlugField(
    )  # class SlugField([max_length=50, **options])¶

    class Meta:
        db_table = 'fields_learning'
Exemple #29
0
class Tracker(models.Model):
    user = models.ForeignKey(User)
    submitted_date = models.DateTimeField('date submitted',
                                          default=timezone.now)
    tracker_date = models.DateTimeField('date tracked', default=timezone.now)
    ip = models.IPAddressField()
    agent = models.TextField(blank=True)
    digest = models.CharField(max_length=100)
    data = models.TextField(blank=True)
    course = models.ForeignKey(Course, null=True, blank=True, default=None)
    type = models.CharField(max_length=10, null=True, blank=True, default=None)
    completed = models.BooleanField(default=False)
    time_taken = models.IntegerField(default=0)
    activity_title = models.TextField(blank=True, null=True, default=None)
    section_title = models.TextField(blank=True, null=True, default=None)
    uuid = models.TextField(blank=True, null=True, default=None)
    lang = models.CharField(max_length=10, null=True, blank=True, default=None)

    class Meta:
        verbose_name = _('Tracker')
        verbose_name_plural = _('Trackers')

    def __unicode__(self):
        return self.agent

    def is_first_tracker_today(self):
        olddate = timezone.now() + datetime.timedelta(hours=-24)
        no_attempts_today = Tracker.objects.filter(
            user=self.user,
            digest=self.digest,
            completed=True,
            submitted_date__gte=olddate).count()
        if no_attempts_today == 1:
            return True
        else:
            return False

    def get_activity_type(self):
        activities = Activity.objects.filter(digest=self.digest)
        for a in activities:
            return a.type
        media = Media.objects.filter(digest=self.digest)
        for m in media:
            return "media"
        return None

    def get_media_title(self):
        media = Media.objects.filter(digest=self.digest)
        for m in media:
            return m.filename
        return None

    def get_activity_title(self, lang='en'):
        media = Media.objects.filter(digest=self.digest)
        for m in media:
            return m.filename
        try:
            titles = json.loads(self.activity_title)
            if lang in titles:
                return titles[lang]
            else:
                for l in titles:
                    return titles[l]
        except:
            pass
        return self.activity_title

    def get_section_title(self, lang='en'):
        try:
            titles = json.loads(self.section_title)
            if lang in titles:
                return titles[lang]
            else:
                for l in titles:
                    return titles[l]
        except:
            pass
        return self.section_title

    def activity_exists(self):
        activities = Activity.objects.filter(digest=self.digest).count()
        if activities >= 1:
            return True
        media = Media.objects.filter(digest=self.digest).count()
        if media >= 1:
            return True
        return False

    @staticmethod
    def has_completed_trackers(course, user):
        count = Tracker.objects.filter(user=user,
                                       course=course,
                                       completed=True).count()
        if count > 0:
            return True
        return False

    @staticmethod
    def to_xml_string(course, user):
        doc = Document()
        trackerXML = doc.createElement('trackers')
        doc.appendChild(trackerXML)
        trackers = Tracker.objects.filter(
            user=user, course=course,
            completed=True).values('digest').annotate(
                max_tracker=Max('submitted_date'))
        for t in trackers:
            track = doc.createElement('tracker')
            track.setAttribute('digest', t['digest'])
            track.setAttribute('submitteddate',
                               t['max_tracker'].strftime('%Y-%m-%d %H:%M:%S'))
            trackerXML.appendChild(track)
        return doc.toxml()

    @staticmethod
    def activity_views(user,
                       type,
                       start_date=None,
                       end_date=None,
                       course=None):
        results = Tracker.objects.filter(user=user, type=type)
        if start_date:
            results = results.filter(submitted_date__gte=start_date)
        if end_date:
            results = results.filter(submitted_date__lte=end_date)
        if course:
            results = results.filter(course=course)
        return results.count()

    @staticmethod
    def activity_secs(user, type, start_date=None, end_date=None, course=None):
        results = Tracker.objects.filter(user=user, type=type)
        if start_date:
            results = results.filter(submitted_date__gte=start_date)
        if end_date:
            results = results.filter(submitted_date__lte=end_date)
        if course:
            results = results.filter(course=course)
        time = results.aggregate(total=Sum('time_taken'))
        if time['total'] is None:
            return 0
        return time['total']

    def get_lang(self):
        try:
            json_data = json.loads(self.data)
        except ValueError:
            return None

        if 'lang' in json_data:
            return json_data['lang']
Exemple #30
0
class Host(models.Model):
    hostname = models.CharField(max_length=50)
    ip = models.IPAddressField()