Exemplo n.º 1
0
class Sesh_Site(models.Model):
    """
    Model for each PV SESH installed site
    """
    site_name = models.CharField(max_length=100, unique = True)
    organisation = models.ForeignKey(Sesh_Organisation, null=True, blank=True)
    comission_date = models.DateTimeField('date comissioned')
    location_city = models.CharField(max_length = 100)
    location_country = models.CharField(max_length = 100)
    time_zone = models.CharField(max_length = 100, default='Africa/Kigali')
    position = GeopositionField()
    installed_kw = models.FloatField(default=None, blank=True)
    system_voltage = models.IntegerField(default=None, blank=True)
    number_of_panels = models.IntegerField(default=None, blank=True)
    #enphase_ID = models.CharField( max_length = 100)
    #TODO need to figure a way to show this in admin to automatically populate
    #enphase_site_id = models.IntegerField()
    import_data = models.BooleanField(default=False)
    battery_bank_capacity = models.IntegerField()
    has_genset = models.BooleanField(default=False)
    has_grid = models.BooleanField(default=False)
    has_pv = models.BooleanField(default=False)
    has_batteries =models.BooleanField(default=False)
    vrm_account = models.ForeignKey(VRM_Account,default=None,blank=True,null=True)
    vrm_site_id = models.CharField(max_length=20,default="",blank=True, null=True)
    status_card = models.OneToOneField(Status_Card,default=None,blank=True,null=True, on_delete=models.SET_NULL)
    site_measurements = models.OneToOneField(Site_Measurements, default=None,blank=True,null=True, on_delete=models.SET_NULL)

    def __str__(self):
        return self.site_name


    def save(self, *args, **kwargs):
        # If site is being created
        if self.pk is None:
            self.status_card = Status_Card.objects.create()
            self.site_measurements = Site_Measurements.objects.create()
            super(Sesh_Site, self).save(*args, **kwargs)
            Sensor_Node.objects.create(site=self)
        else:
            super(Sesh_Site, self).save(*args, **kwargs)

    def delete(self, *args, **kwargs):
        # Delete the site and its associated status card
        status_card = self.status_card
        site_measurements = self.site_measurements
        site_measurements.delete()
        status_card.delete()
        super(Sesh_Site, self).delete(*args, **kwargs)

    #Row based permissioning using django guardian not every user should be able to see all sites

    class Meta:
        verbose_name = 'Sesh Site'
        verbose_name_plural = 'Sesh Sites'
        permissions = (
            ('view_Sesh_Site', 'View Sesh Site'),
        )
Exemplo n.º 2
0
class Workday(models.Model):
    """
    A workday represents a succesful session of work, delimited by 'start' and 'finish' timestamps.
    """
    user = models.ForeignKey(auth.models.User)
    user_agent = models.CharField(max_length=512, null=True, blank=True)
    start = models.DateTimeField()
    finish = models.DateTimeField(blank=True, null=True)

    user_notes = models.CharField(null=True, blank=True, max_length=256)
    staff_notes = models.CharField(null=True, blank=True, max_length=256)
    edited = models.BooleanField(default=False)

    location = GeopositionField(blank=True, null=True)

    # model manager
    objects = WorkdayManager()

    class Meta:
        ordering = ['-start']

    @property
    def hours_worked(self):
        if self.finish:
            diff = self.finish - self.start
            return diff.total_seconds() / 60 / 60
        else:
            return None

    def clean(self):
        """
        Self validation method
        """
        if self.finish is not None and self.start > self.finish:
            raise ValidationError(
                "Workday start time can't be greater than finish time")

        try:
            latest = Workday.objects.user(
                self.user.username).exclude(id=self.id).latest('start')
            if latest.start < self.start and not latest.finish:
                raise ValidationError(
                    "Latest workday hasn't finished yet for given user")
        except Workday.DoesNotExist:
            pass

        overlapping = Workday.objects.user(self.user.username).exclude(
            id=self.id).filter(start__range=(self.start, self.finish))
        overlapping2 = Workday.objects.user(self.user.username).exclude(
            id=self.id).filter(finish__range=(self.start, self.finish))

        if overlapping.exists() or overlapping2.exists():
            raise ValidationError(
                "Specified user has already worked in the given datetime range"
            )

    def __unicode__(self):
        return "%s: %s - %s" % (self.user.username, self.start, self.finish)
Exemplo n.º 3
0
class UserProfile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    title = models.CharField(max_length=100)
    des = models.TextField(max_length=200)
    phone = PhoneNumberField()
    position = GeopositionField(null=True)

    def __str__(self):
        return self.title
Exemplo n.º 4
0
class Checkpoint(models.Model):
    name = models.CharField(max_length=500)
    location = GeopositionField()
    photograph = models.ImageField()
    information = models.TextField()
    isValid = models.BooleanField()

    def __str__(self):
        return self.name
Exemplo n.º 5
0
class Travel(models.Model):

    user = models.OneToOneField(User, on_delete=models.CASCADE)

    location = models.CharField(max_length=100)

    destination = models.CharField(max_length=100)

    position = GeopositionField()
Exemplo n.º 6
0
class Zone(models.Model):
    name = models.CharField(max_length = 50 )
    position = GeopositionField()

    def __str__(self):
        return self.name

    def __unicode__(self):
        return str(self.name)
Exemplo n.º 7
0
class Location(models.Model):
    location = GeopositionField()
    zip_code = models.CharField(max_length=5)

    def longitude(self):
        return self.location.longitude

    def latitude(self):
        return self.location.latitude
Exemplo n.º 8
0
class PointOfInterest(models.Model):
    name = models.CharField(max_length=100)
    # address = models.CharField(max_length=255)
    # city = models.CharField(max_length=50)
    # zipcode = models.CharField(max_length=10)
    position = GeopositionField(blank=True)

    class Meta:
        verbose_name_plural = 'points of interest'
Exemplo n.º 9
0
class Reply(models.Model):
    description = models.CharField(max_length=30)
    inquiry = models.OneToOneField(Inquiry, primary_key=True)
    #code = models.ForeignKey(Child, related_name='pin')
    position = GeopositionField(blank=True)
    time = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.inquiry.child.name
Exemplo n.º 10
0
class MedicalPractice(models.Model):
    name = models.CharField(max_length=254, default='')
    description = models.TextField()
    address = models.TextField(max_length=254, default='')
    location = models.CharField(max_length=100)
    position = GeopositionField(blank=True)

    def __str__(self):
        return self.name
Exemplo n.º 11
0
class Spot(models.Model):

    name = models.CharField(max_length=32)
    position = GeopositionField()

    objects = models.GeoManager()

    def __unicode__(self):
        return '%s' % (self.name)
Exemplo n.º 12
0
class Customer(models.Model):
    name = models.CharField(max_length=100)
    position = GeopositionField()

    class Meta:
        verbose_name_plural = 'Customer'

    def __str__(self):
        return self.name
Exemplo n.º 13
0
class gps(models.Model):
    position = GeopositionField()
    frameStamp = models.DateTimeField(default=now)
    address = models.CharField(max_length=1500)
    video = models.ForeignKey(Video, on_delete=models.CASCADE)

    def __str__(self):
        return str(self.position) + " : " + str(self.frameStamp) + " : " + str(
            self.address)
Exemplo n.º 14
0
class Poi(models.Model):
    name = models.CharField(max_length=100)
    position = GeopositionField()

    def __str__(self):
        return self.name

    class Meta:
        verbose_name_plural = "Points of interest"
Exemplo n.º 15
0
class InfoSite(AuditableModel):
    direccion = models.CharField(
        'Dirección',
        max_length=120,
        help_text='Agregar // para generar el salto de línea')
    email = models.EmailField('Email')
    telefono = models.CharField('Teléfono', max_length=60)
    email_form = models.EmailField('Formulario de Contacto', blank=True)
    site = models.CharField(
        "URL del sitio",
        max_length=60,
        blank=True,
        help_text='Ingrese la url actual del sitio sin el slash final')

    facebook = models.URLField('Facebook', blank=True)
    twitter = models.URLField('Twitter', blank=True)
    linkedin = models.URLField('Linkedin', blank=True)
    skype = models.CharField('Skype', blank=True, max_length=160)
    intranet = models.URLField('Intranet', blank=True)

    ga = models.CharField(
        'Google Analytics',
        max_length=24,
        blank=True,
        help_text='''Opcional: Inserte el código que google analitycs le
       proporciona con el formato: UA-XXXXX-X''')
    coordenadas = GeopositionField()
    paquetes = FileBrowseField("PDF de paquetes",
                               max_length=200,
                               directory='paquetes/',
                               extensions=['.doc', '.pdf'],
                               blank=True)
    foto_contactanos = FileBrowseField('Foto de contáctanos',
                                       max_length=200,
                                       directory='contactanos/',
                                       extensions=['.jpg', '.png', '.gif'],
                                       help_text=u'Tamaño recomendado:366x210',
                                       blank=True)

    def __unicode__(self):
        return u'Información del Sitio'

    def direccion_local(self):
        texto = self.direccion.replace('//', '')
        return texto

    class Meta:
        verbose_name_plural = u'Información del Sitio'

    def save(self, *args, **kwargs):
        site = Site.objects.get(id=settings.SITE_ID)
        site.domain = urlparse(self.site).netloc
        site.name = settings.PROJECT_NAME
        site.save()

        super(InfoSite, self).save(*args, **kwargs)
Exemplo n.º 16
0
class Coordinate(models.Model):
    address = models.CharField(_('Адрес'), max_length=255)
    position = GeopositionField(_('Координаты'))

    def __str__(self):
        return self.address

    class Meta:
        verbose_name = _("Координат")
        verbose_name_plural = _("Координаты")
Exemplo n.º 17
0
class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    name = models.CharField(max_length=50, blank=True)
    location = GeopositionField(blank=True)

    class Meta:
        db_table = 'user_profile'

    def __str__(self):
        return self.name if self.name else self.user.username
Exemplo n.º 18
0
class PointOfInterest(models.Model):
    name = models.CharField(max_length=100)
    address = models.CharField(max_length=255,blank=True,null=True)
    city = models.CharField(max_length=50,blank=True,null=True)
    zipcode = models.CharField(max_length=10,blank=True,null=True)
    position = GeopositionField(blank=True)

    class Meta:
        verbose_name_plural = '兴趣点'
        app_label = string_with_title('blog', u"兴趣点坐标")
Exemplo n.º 19
0
class Pound(models.Model):
    title = models.CharField(max_length=50)
    fishes = models.ManyToManyField(Fish)
    position = GeopositionField()

    def __str__(self):
        return self.title

    class Meta:
        ordering = ('title', )
Exemplo n.º 20
0
class Inquiry(models.Model):
    parent = models.ForeignKey(Parent)
    child = models.ForeignKey(Child)
    description = models.CharField(max_length=50)
    time = models.DateTimeField(auto_now_add=True)
    replystamp = models.DurationField(blank=True, null=True)
    relative_location = GeopositionField()

    def __str__(self):
        return self.child.name
Exemplo n.º 21
0
class Bazar(TitleSlugDescriptionModel, TimeStampedModel):
    location = GeopositionField(blank=True)

    def __str__(self):
        return "%s" % (self.title)

    @staticmethod
    def getBazarListByProduct(product_id, date_from, date_to):
        sql = "SELECT max(p.id) id,p.category_id,b.title,MIN(p.unit_price) price FROM `bazar_product` p join bazar_entry e on (e.id=p.entry_id) join bazar_bazar b on(p.bazar_id=b.id) where p.category_id=%s and e.added_at between %s and %s group by p.bazar_id order by price limit 10"
        return Bazar.objects.raw(sql, [product_id, date_from, date_to])
Exemplo n.º 22
0
class Domicilio(models.Model):
    codigo = models.AutoField(primary_key=True)
    comercio = models.ForeignKey(Comercio, null=True)
    calle = models.CharField(max_length=50)
    numero = models.IntegerField()
    localidad = models.ForeignKey(Localidad)
    position = GeopositionField()

    def __str__(self):
        return 'calle {} nro {}'.format(self.calle, self.numero)
Exemplo n.º 23
0
class Centre(models.Model):
    name = models.CharField(max_length=30, unique=True)
    description = models.TextField(max_length=500, null=True, blank=True)
    location = GeopositionField()

    def __str__(self):
        return self.name

    def get_absolute_url(self):
        return reverse('centre:centre-detail', kwargs={'pk': self.pk})
Exemplo n.º 24
0
class Article(models.Model):
    title = models.CharField(max_length=100)
    pickup = GeopositionField()
    dropat = GeopositionField()
    description = models.TextField('Description')
    date = models.DateTimeField(auto_now_add=True)
    worth = models.IntegerField('worth($)', default=0)
    image = models.ImageField(default='default.png', blank=True)
    author = models.ForeignKey(User, default=None, null=True)
    phone = models.IntegerField(default=0)

    def __str__(self):
        return self.title

    def snippet(self):
        return self.description[:70] + '...'

    def get_absolute_url(self):
        return reverse("articles:detail", kwargs={"id": self.id})
Exemplo n.º 25
0
class Post(models.Model):
    image_url = models.CharField(max_length=400)
    thumbnail_url = models.CharField(max_length=400)
    position = GeopositionField()
    user = models.ForeignKey(User, related_name='posts')
    timestamp = models.DateTimeField(auto_now_add=True)
    venue = models.ForeignKey(Venue)

    def __unicode__(self):
        return str(self.user) + "'s post at " + str(self.venue)
Exemplo n.º 26
0
class Location(models.Model):
    name = models.CharField(max_length=50, unique=True)
    position = GeopositionField()
    description = models.TextField(null=True, blank=True)

    def __str__(self):
        return self.name

    def get_absolute_url(self):
        return reverse("academics:timetable-item", kwargs={"slug": self.slug})
Exemplo n.º 27
0
class Coordenadas_corridas(models.Model):
    class Meta:
        verbose_name_plural = 'Coordenadas de Corridas'

    id = models.AutoField(primary_key=True)
    corrida = models.ForeignKey(Corridas, on_delete=models.CASCADE)
    coordenadas = GeopositionField()

    def __str__(self):
        return str(self.coordenadas)
Exemplo n.º 28
0
class Activity(DateModel):
    user = models.ForeignKey(verbose_name=_('User'), to=User)

    # Base
    city = models.ForeignKey(verbose_name=_('City'),
                             to=City,
                             related_name="activity_city")
    kind = models.ForeignKey(verbose_name=_('Kind'), to=Kind)
    address = models.TextField(verbose_name=_('Address'),
                               null=True,
                               blank=True)
    coordinate = GeopositionField(verbose_name=_('Coordinate'),
                                  null=True,
                                  blank=True)
    name = models.CharField(verbose_name=_('Name'), max_length=50)

    # Time
    starting_date = models.DateField(verbose_name=_('Starting Date'))
    end_date = models.DateField(verbose_name=_('End Date'),
                                null=True,
                                blank=True)
    starting_time = models.TimeField(verbose_name=_('Starting Time'))
    end_time = models.TimeField(verbose_name=_('End Time'),
                                null=True,
                                blank=True)

    # Wage Status
    wage_status = models.CharField(max_length=10,
                                   verbose_name=_('Wage Status'),
                                   choices=BOOL_CHOICES)

    # Image
    image = models.ImageField(verbose_name=_('Image'),
                              null=True,
                              blank=True,
                              upload_to=set_activity_image_upload_path)

    # Statement
    statement = models.TextField(verbose_name=_('Statement'), max_length=1000)

    class Meta:
        verbose_name = _(u'Activity')
        verbose_name_plural = _(u'Activitys')

    def __str__(self):
        return self.name

    def save(self, *args, **kwargs):
        if self.pk is None:
            saved_image = self.image
            self.image = None
            super(Activity, self).save(*args, **kwargs)
            self.image = saved_image

        return super(Activity, self).save(*args, **kwargs)
Exemplo n.º 29
0
class InitiativePlace(models.Model):
    street_number = models.CharField(_('Street Number'), max_length=255, blank=True, null=True)
    street = models.CharField(_('Street'), max_length=255, blank=True, null=True)
    postal_code = models.CharField(_('Postal Code'), max_length=255, blank=True, null=True)
    locality = models.CharField(_('Locality'), max_length=255, blank=True, null=True)
    province = models.CharField(_('Province'), max_length=255, blank=True, null=True)
    country = models.ForeignKey('geo.Country')

    formatted_address = models.CharField(_('Address'), max_length=255, blank=True, null=True)

    position = GeopositionField()
Exemplo n.º 30
0
class Messages(models.Model):
    msgid = models.IntegerField(primary_key=True)
    textbody = models.TextField(blank=True)
    posted_by = models.IntegerField(blank=True)
    loccord = GeopositionField(blank=True)
    threadid = models.IntegerField(blank=True)
    title = models.TextField(blank=True)

    class Meta:
        managed = False
        db_table = 'messages'